Exemple #1
0
    def testSkipStatsOnMissingLastSample(self):
        cpu_sample = {'user': 1.0, 'sys': 2.0}

        first_sample = fake.HostSample(1.0, {0: cpu_sample, 1: cpu_sample})
        # CPU one suddenly came online and the second sample is still missing
        last_sample = fake.HostSample(2.0, {0: cpu_sample})

        with MonkeyPatchScope([(numa, 'topology', self._fakeNumaTopology)]):
            result = hoststats._get_cpu_core_stats(first_sample, last_sample)
            self.assertEqual(len(result), 1)
            self.assertEqual(result['0'], self._core_zero_stats)
Exemple #2
0
    def testSkipStatsOnMissingFirstSample(self):
        cpu_sample = {'user': 1.0, 'sys': 2.0}

        # CPU one suddenly went offline and no new sample from it is available
        first_sample = fake.HostSample(1.0, {0: cpu_sample})
        last_sample = fake.HostSample(2.0, {0: cpu_sample, 1: cpu_sample})

        with MonkeyPatchScope([(numa, 'topology', self._fakeNumaTopology)]):
            result = hoststats._get_cpu_core_stats(first_sample, last_sample)
            self.assertEqual(len(result), 1)
            self.assertEqual(result['0'], self._core_zero_stats)
Exemple #3
0
    def testCpuCoreStats(self):
        cpu_sample = {'user': 1.0, 'sys': 2.0}

        # Both CPUs are online and first and last samples are present
        first_sample = fake.HostSample(1.0, {0: cpu_sample, 1: cpu_sample})
        last_sample = fake.HostSample(2.0, {0: cpu_sample, 1: cpu_sample})

        with MonkeyPatchScope([(numa, 'topology', self._fakeNumaTopology)]):
            result = hoststats._get_cpu_core_stats(first_sample, last_sample)
            self.assertEqual(len(result), 2)
            self.assertEqual(result['0'], self._core_zero_stats)
            self.assertEqual(result['1'], self._core_one_stats)
Exemple #4
0
    def testCpuCoreStats(self):
        node_id, cpu_id = 0, 0
        self._hs = sampling.HostStatsThread(self.log)
        cpu_sample = {'user': 1.0, 'sys': 2.0}

        # "5" is the size of the SampleWindow.
        # there is no easy way to get SampleWindow, so
        # we hardcode a magic number here.
        for fake_ts in six.moves.xrange(5):
            self._hs._samples.append(
                fake.HostSample(fake_ts, {cpu_id: cpu_sample}))

        def fakeNumaTopology():
            return {node_id: {'cpus': [cpu_id]}}

        expected = {
            '0': {
                'cpuIdle': '100.00',
                'cpuSys': '0.00',
                'cpuUser': '******',
                'nodeIndex': 0
            }
        }

        with MonkeyPatchScope([(caps, 'getNumaTopology', fakeNumaTopology)]):
            self.assertEqual(self._hs._getCpuCoresStats(), expected)
Exemple #5
0
    def testSampleIntervalTooSmall(self):
        expected = {
            'cpuIdle': 100.0,
            'cpuSys': 0.0,
            'cpuSysVdsmd': 0.0,
            'cpuUser': 0.0,
            'cpuUserVdsmd': 0.0,
            'memUsed': 0.0,
            'elapsedTime': 0,
            'anonHugePages': 0.0,
            'cpuLoad': 0.0,
        }

        first_sample = fake.HostSample(1.0, {})
        last_sample = fake.HostSample(1.0, {})

        hoststats.start(lambda: 0)
        self.assertEqual(hoststats.produce(first_sample, last_sample),
                         expected)
Exemple #6
0
    def testCpuCoreStats(self):
        node_id, cpu_id = 0, 0
        cpu_sample = {'user': 1.0, 'sys': 2.0}

        first_sample = fake.HostSample(1.0, {cpu_id: cpu_sample})
        last_sample = fake.HostSample(2.0, {cpu_id: cpu_sample})

        def fakeNumaTopology():
            return {node_id: {'cpus': [cpu_id]}}

        expected = {
            '0': {
                'cpuIdle': '100.00',
                'cpuSys': '0.00',
                'cpuUser': '******',
                'nodeIndex': 0
            }
        }

        with MonkeyPatchScope([(caps, 'getNumaTopology', fakeNumaTopology)]):
            self.assertEqual(
                hoststats._get_cpu_core_stats(first_sample, last_sample),
                expected)