Home | History | Annotate | Download | only in cros
      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