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)
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)
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)
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)
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)
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)