Index: tools/telemetry/telemetry/internal/platform/power_monitor/cros_power_monitor_unittest.py |
diff --git a/tools/telemetry/telemetry/internal/platform/power_monitor/cros_power_monitor_unittest.py b/tools/telemetry/telemetry/internal/platform/power_monitor/cros_power_monitor_unittest.py |
deleted file mode 100644 |
index 2d4945eecd111e8844609c45dff9269a595246d3..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/telemetry/internal/platform/power_monitor/cros_power_monitor_unittest.py |
+++ /dev/null |
@@ -1,227 +0,0 @@ |
-# Copyright 2014 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-import unittest |
- |
-from telemetry.internal.platform.power_monitor import cros_power_monitor |
- |
- |
-class CrosPowerMonitorMonitorTest(unittest.TestCase): |
- initial_power = ('''line_power_connected 0 |
-battery_present 1 |
-battery_percent 70.20 |
-battery_charge 2.83 |
-battery_charge_full 4.03 |
-battery_charge_full_design 4.03 |
-battery_current 1.08 |
-battery_energy 31.83 |
-battery_energy_rate 12.78 |
-battery_voltage 11.82 |
-battery_discharging 1''') |
- final_power = ('''line_power_connected 0 |
-battery_present 1 |
-battery_percent 70.20 |
-battery_charge 2.83 |
-battery_charge_full 4.03 |
-battery_charge_full_design 4.03 |
-battery_current 1.08 |
-battery_energy 31.83 |
-battery_energy_rate 12.80 |
-battery_voltage 12.24 |
-battery_discharging 1''') |
- incomplete_final_power = ('''line_power_connected 0 |
-battery_present 1 |
-battery_percent 70.20 |
-battery_charge 2.83 |
-battery_charge_full 4.03 |
-battery_charge_full_design 4.03 |
-battery_energy_rate 12.80 |
-battery_discharging 1''') |
- expected_power = { |
- 'energy_consumption_mwh': 2558.0, |
- 'power_samples_mw': [12780.0, 12800.0], |
- 'component_utilization': { |
- 'battery': { |
- 'charge_full': 4.03, |
- 'charge_full_design': 4.03, |
- 'charge_now': 2.83, |
- 'current_now': 1.08, |
- 'energy': 31.83, |
- 'energy_rate': 12.80, |
- 'voltage_now': 12.24 |
- } |
- } |
- } |
- expected_incomplete_power = { |
- 'energy_consumption_mwh': 2558.0, |
- 'power_samples_mw': [12780.0, 12800.0], |
- 'component_utilization': { |
- 'battery': { |
- 'charge_full': 4.03, |
- 'charge_full_design': 4.03, |
- 'charge_now': 2.83, |
- 'energy_rate': 12.80, |
- } |
- } |
- } |
- expected_cpu = { |
- 'whole_package': { |
- 'frequency_percent': { |
- 1700000000: 3.29254111574526, |
- 1600000000: 0.0, |
- 1500000000: 0.0, |
- 1400000000: 0.15926805099535601, |
- 1300000000: 0.47124116307273645, |
- 1200000000: 0.818756100807525, |
- 1100000000: 1.099381692400982, |
- 1000000000: 2.5942528544384302, |
- 900000000: 5.68661122326737, |
- 800000000: 3.850545467654628, |
- 700000000: 2.409691872245393, |
- 600000000: 1.4693702487650486, |
- 500000000: 2.4623575553879373, |
- 400000000: 2.672038150383057, |
- 300000000: 3.415770495015825, |
- 200000000: 69.59817400982045 |
- }, |
- 'cstate_residency_percent': { |
- 'C0': 83.67623835616438535, |
- 'C1': 0.2698609589041096, |
- 'C2': 0.2780191780821918, |
- 'C3': 15.77588150684931505 |
- } |
- }, |
- 'cpu0': { |
- 'frequency_percent': { |
- 1700000000: 4.113700564971752, |
- 1600000000: 0.0, |
- 1500000000: 0.0, |
- 1400000000: 0.1765536723163842, |
- 1300000000: 0.4943502824858757, |
- 1200000000: 0.7944915254237288, |
- 1100000000: 1.2226341807909604, |
- 1000000000: 3.0632062146892656, |
- 900000000: 5.680614406779661, |
- 800000000: 3.6679025423728815, |
- 700000000: 2.379060734463277, |
- 600000000: 1.4124293785310735, |
- 500000000: 2.599752824858757, |
- 400000000: 3.0102401129943503, |
- 300000000: 3.650247175141243, |
- 200000000: 67.73481638418079 |
- }, |
- 'cstate_residency_percent': { |
- 'C0': 76.76226164383562, |
- 'C1': 0.3189164383561644, |
- 'C2': 0.4544301369863014, |
- 'C3': 22.4643917808219178 |
- } |
- }, |
- 'cpu1': { |
- 'frequency_percent': { |
- 1700000000: 2.4713816665187682, |
- 1600000000: 0.0, |
- 1500000000: 0.0, |
- 1400000000: 0.1419824296743278, |
- 1300000000: 0.44813204365959713, |
- 1200000000: 0.8430206761913214, |
- 1100000000: 0.9761292040110037, |
- 1000000000: 2.1252994941875945, |
- 900000000: 5.69260803975508, |
- 800000000: 4.033188392936374, |
- 700000000: 2.4403230100275093, |
- 600000000: 1.526311118999024, |
- 500000000: 2.3249622859171177, |
- 400000000: 2.3338361877717633, |
- 300000000: 3.1812938148904073, |
- 200000000: 71.46153163546012 |
- }, |
- 'cstate_residency_percent': { |
- 'C0': 90.5902150684931507, |
- 'C1': 0.2208054794520548, |
- 'C2': 0.1016082191780822, |
- 'C3': 9.0873712328767123 |
- } |
- } |
- } |
- |
- def _assertPowerEqual(self, results, expected): |
- battery = results['component_utilization']['battery'] |
- expected_battery = expected['component_utilization']['battery'] |
- self.assertItemsEqual(battery.keys(), expected_battery.keys()) |
- for value in battery: |
- self.assertAlmostEqual(battery[value], expected_battery[value]) |
- |
- self.assertAlmostEqual(results['energy_consumption_mwh'], |
- expected['energy_consumption_mwh']) |
- self.assertAlmostEqual(results['power_samples_mw'][0], |
- expected['power_samples_mw'][0]) |
- self.assertAlmostEqual(results['power_samples_mw'][1], |
- expected['power_samples_mw'][1]) |
- |
- def testParsePower(self): |
- results = cros_power_monitor.CrosPowerMonitor.ParsePower( |
- self.initial_power, self.final_power, 0.2) |
- self._assertPowerEqual(results, self.expected_power) |
- |
- def testParseIncompletePowerState(self): |
- """Test the case where dump_power_status only outputs partial fields. |
- |
- CrosPowerMonitor hard-coded expected fields from dump_power_status, |
- this test ensures it parses successfully when expected fields does not |
- exist. It's mainly for backward compatibility. |
- """ |
- results = cros_power_monitor.CrosPowerMonitor.ParsePower( |
- self.initial_power, self.incomplete_final_power, 0.2) |
- self._assertPowerEqual(results, self.expected_incomplete_power) |
- |
- |
- def testSplitSample(self): |
- sample = self.initial_power + '\n1408739546\n' |
- power, time = cros_power_monitor.CrosPowerMonitor.SplitSample(sample) |
- self.assertEqual(power, self.initial_power) |
- self.assertEqual(time, 1408739546) |
- |
- def testCombineResults(self): |
- result = cros_power_monitor.CrosPowerMonitor.CombineResults( |
- self.expected_cpu, self.expected_power) |
- comp_util = result['component_utilization'] |
- # Test power values. |
- self.assertEqual(result['energy_consumption_mwh'], |
- self.expected_power['energy_consumption_mwh']) |
- self.assertEqual(result['power_samples_mw'], |
- self.expected_power['power_samples_mw']) |
- self.assertEqual(comp_util['battery'], |
- self.expected_power['component_utilization']['battery']) |
- # Test frequency values. |
- self.assertDictEqual( |
- comp_util['whole_package']['frequency_percent'], |
- self.expected_cpu['whole_package']['frequency_percent']) |
- self.assertDictEqual( |
- comp_util['cpu0']['frequency_percent'], |
- self.expected_cpu['cpu0']['frequency_percent']) |
- self.assertDictEqual( |
- comp_util['cpu1']['frequency_percent'], |
- self.expected_cpu['cpu1']['frequency_percent']) |
- # Test c-state residency values. |
- self.assertDictEqual( |
- comp_util['whole_package']['cstate_residency_percent'], |
- self.expected_cpu['whole_package']['cstate_residency_percent']) |
- self.assertDictEqual( |
- comp_util['cpu0']['cstate_residency_percent'], |
- self.expected_cpu['cpu0']['cstate_residency_percent']) |
- self.assertDictEqual( |
- comp_util['cpu1']['cstate_residency_percent'], |
- self.expected_cpu['cpu1']['cstate_residency_percent']) |
- |
- def testCanMonitorPower(self): |
- # TODO(tmandel): Add a test here where the device cannot monitor power. |
- initial_status = cros_power_monitor.CrosPowerMonitor.ParsePowerStatus( |
- self.initial_power) |
- final_status = cros_power_monitor.CrosPowerMonitor.ParsePowerStatus( |
- self.final_power) |
- self.assertTrue(cros_power_monitor.CrosPowerMonitor.IsOnBatteryPower( |
- initial_status, 'peppy')) |
- self.assertTrue(cros_power_monitor.CrosPowerMonitor.IsOnBatteryPower( |
- final_status, 'butterfly')) |