1 from autotest_lib.client.common_lib.cros import system_metrics_collector 2 3 import unittest 4 5 # pylint: disable=missing-docstring 6 class TestSystemMetricsCollector(unittest.TestCase): 7 """ 8 Tests for the system_metrics_collector module. 9 """ 10 def test_mem_usage_metric(self): 11 metric = system_metrics_collector.MemUsageMetric(FakeSystemFacade()) 12 metric.collect_metric() 13 self.assertAlmostEqual(60, metric.values[0]) 14 15 def test_file_handles_metric(self): 16 metric = system_metrics_collector.AllocatedFileHandlesMetric( 17 FakeSystemFacade()) 18 metric.collect_metric() 19 self.assertEqual(11, metric.values[0]) 20 21 def test_cpu_usage_metric(self): 22 metric = system_metrics_collector.CpuUsageMetric(FakeSystemFacade()) 23 # Collect twice since the first collection only sets the baseline for 24 # the following diff calculations. 25 metric.collect_metric() 26 metric.collect_metric() 27 self.assertAlmostEqual(40, metric.values[0]) 28 29 def test_tempature_metric(self): 30 metric = system_metrics_collector.TemperatureMetric(FakeSystemFacade()) 31 metric.collect_metric() 32 self.assertAlmostEqual(43, metric.values[0]) 33 34 def test_collector(self): 35 collector = system_metrics_collector.SystemMetricsCollector( 36 FakeSystemFacade(), [TestMetric()]) 37 collector.collect_snapshot() 38 d = {} 39 def _write_func(**kwargs): 40 d.update(kwargs) 41 collector.write_metrics(_write_func) 42 self.assertEquals('test_description', d['description']) 43 self.assertEquals([1], d['value']) 44 self.assertEquals(False, d['higher_is_better']) 45 self.assertEquals('test_unit', d['units']) 46 47 def test_collector_default_set_of_metrics_no_error(self): 48 # Only verify no errors are thrown when collecting using 49 # the default metric set. 50 collector = system_metrics_collector.SystemMetricsCollector( 51 FakeSystemFacade()) 52 collector.collect_snapshot() 53 collector.collect_snapshot() 54 collector.write_metrics(lambda **kwargs: None) 55 56 def test_peak_metric_description(self): 57 test_metric = TestMetric() 58 peak_metric = system_metrics_collector.PeakMetric(test_metric) 59 self.assertEqual(peak_metric.description, 'peak_test_description') 60 61 def test_peak_metric_one_element(self): 62 test_metric = TestMetric() 63 peak_metric = system_metrics_collector.PeakMetric(test_metric) 64 test_metric.collect_metric() 65 peak_metric.collect_metric() 66 self.assertEqual(peak_metric.values, [1]) 67 68 def test_peak_metric_many_elements(self): 69 test_metric = TestMetric() 70 peak_metric = system_metrics_collector.PeakMetric(test_metric) 71 test_metric.collect_metric() 72 test_metric.value = 2 73 test_metric.collect_metric() 74 test_metric.value = 0 75 test_metric.collect_metric() 76 peak_metric.collect_metric() 77 self.assertEqual(peak_metric.values, [2]) 78 79 class FakeSystemFacade(object): 80 def __init__(self): 81 self.mem_total_mb = 1000.0 82 self.mem_free_mb = 400.0 83 self.file_handles = 11 84 self.active_cpu_time = 0.4 85 self.current_temperature_max = 43 86 87 def get_mem_total(self): 88 return self.mem_total_mb 89 90 def get_mem_free_plus_buffers_and_cached(self): 91 return self.mem_free_mb 92 93 def get_num_allocated_file_handles(self): 94 return self.file_handles 95 96 def get_cpu_usage(self): 97 return {} 98 99 def compute_active_cpu_time(self, last_usage, current_usage): 100 return self.active_cpu_time 101 102 def get_current_temperature_max(self): 103 return self.current_temperature_max 104 105 class TestMetric(system_metrics_collector.Metric): 106 def __init__(self): 107 super(TestMetric, self).__init__( 108 'test_description', units='test_unit') 109 self.value = 1 110 111 def collect_metric(self): 112 self.values.append(self.value) 113 114 115