1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport unittest 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdochfrom telemetry.core.platform.power_monitor import cros_power_monitor 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass CrosPowerMonitorMonitorTest(unittest.TestCase): 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) initial_power = ('''Device: Line Power 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch path: /sys/class/power_supply/AC 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch online: no 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch type: Mains 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch enum type: Disconnected 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch model name: 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch voltage (V): 0 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch current (A): 0 19116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDevice: Battery 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch path: /sys/class/power_supply/BAT0 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch vendor: SANYO 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch model name: AP13J3K 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch serial number: 0061 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch state: Discharging 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch voltage (V): 11.816 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch energy (Wh): 31.8262 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch energy rate (W): 12.7849 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch current (A): 1.082 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch charge (Ah): 2.829 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch full charge (Ah): 4.03 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch full charge design (Ah): 4.03 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch percentage: 70.1985 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch display percentage: 73.9874 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch technology: Li-ion''') 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) final_power = ('''Device: Line Power 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch path: /sys/class/power_supply/AC 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch online: yes 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch type: Mains 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch enum type: Disconnected 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch model name: 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch voltage (V): 0 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch current (A): 0 43116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDevice: Battery 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch path: /sys/class/power_supply/BAT0 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch vendor: SANYO 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch model name: AP13J3K 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch serial number: 0061 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch state: Discharging 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch voltage (V): 12.238 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch energy (Wh): 31.8262 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch energy rate (W): 12.7993 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch current (A): 1.082 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch charge (Ah): 2.827 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch full charge (Ah): 4.03 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch full charge design (Ah): 4.03 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch percentage: 70.1985 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch display percentage: 73.9874 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch technology: Li-ion''') 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) expected_parsing_power = { 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'Line Power': { 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'path': '/sys/class/power_supply/AC', 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'online': 'no', 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'type': 'Mains', 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'enum type': 'Disconnected', 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'voltage': '0', 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'current': '0' 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'Battery': { 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'path': '/sys/class/power_supply/BAT0', 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'vendor': 'SANYO', 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'model name': 'AP13J3K', 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'serial number': '0061', 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'state': 'Discharging', 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'voltage': '11.816', 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'energy': '31.8262', 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'energy rate': '12.7849', 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'current': '1.082', 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'charge': '2.829', 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'full charge': '4.03', 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'full charge design': '4.03', 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'percentage': '70.1985', 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'display percentage': '73.9874', 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'technology': 'Li-ion' 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) expected_power = { 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'energy_consumption_mwh': 2558.42, 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'power_samples_mw': [12784.9, 12799.3], 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'component_utilization': { 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'battery': { 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'charge_full': 4.03, 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'charge_full_design': 4.03, 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'charge_now': 2.827, 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'current_now': 1.082, 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'energy': 31.8262, 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'energy_rate': 12.7993, 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'voltage_now': 12.238 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) expected_cpu = { 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'whole_package': { 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'frequency_percent': { 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1700000000: 3.29254111574526, 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1600000000: 0.0, 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1500000000: 0.0, 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1400000000: 0.15926805099535601, 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1300000000: 0.47124116307273645, 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1200000000: 0.818756100807525, 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1100000000: 1.099381692400982, 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1000000000: 2.5942528544384302, 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 900000000: 5.68661122326737, 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 800000000: 3.850545467654628, 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 700000000: 2.409691872245393, 1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 600000000: 1.4693702487650486, 1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 500000000: 2.4623575553879373, 1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 400000000: 2.672038150383057, 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 300000000: 3.415770495015825, 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 200000000: 69.59817400982045 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'cstate_residency_percent': { 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'C0': 83.67623835616438535, 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'C1': 0.2698609589041096, 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'C2': 0.2780191780821918, 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'C3': 15.77588150684931505 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'cpu0': { 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'frequency_percent': { 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1700000000: 4.113700564971752, 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1600000000: 0.0, 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1500000000: 0.0, 1335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1400000000: 0.1765536723163842, 1345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1300000000: 0.4943502824858757, 1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1200000000: 0.7944915254237288, 1365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1100000000: 1.2226341807909604, 1375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1000000000: 3.0632062146892656, 1385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 900000000: 5.680614406779661, 1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 800000000: 3.6679025423728815, 1405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 700000000: 2.379060734463277, 1415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 600000000: 1.4124293785310735, 1425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 500000000: 2.599752824858757, 1435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 400000000: 3.0102401129943503, 1445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 300000000: 3.650247175141243, 1455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 200000000: 67.73481638418079 1465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'cstate_residency_percent': { 1485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'C0': 76.76226164383562, 1495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'C1': 0.3189164383561644, 1505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'C2': 0.4544301369863014, 1515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'C3': 22.4643917808219178 1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 1545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'cpu1': { 1555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'frequency_percent': { 1565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1700000000: 2.4713816665187682, 1575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1600000000: 0.0, 1585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1500000000: 0.0, 1595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1400000000: 0.1419824296743278, 1605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1300000000: 0.44813204365959713, 1615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1200000000: 0.8430206761913214, 1625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1100000000: 0.9761292040110037, 1635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1000000000: 2.1252994941875945, 1645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 900000000: 5.69260803975508, 1655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 800000000: 4.033188392936374, 1665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 700000000: 2.4403230100275093, 1675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 600000000: 1.526311118999024, 1685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 500000000: 2.3249622859171177, 1695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 400000000: 2.3338361877717633, 1705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 300000000: 3.1812938148904073, 1715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 200000000: 71.46153163546012 1725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }, 1735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'cstate_residency_percent': { 1745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'C0': 90.5902150684931507, 1755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'C1': 0.2208054794520548, 1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'C2': 0.1016082191780822, 1775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'C3': 9.0873712328767123 1785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) def testParsePowerSupplyInfo(self): 1825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result = cros_power_monitor.CrosPowerMonitor.ParsePowerSupplyInfo( 1835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.initial_power) 1845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertDictEqual(result, self.expected_parsing_power) 1855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) def testParsePower(self): 1875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results = cros_power_monitor.CrosPowerMonitor.ParsePower( 1885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.initial_power, self.final_power, 0.2) 1895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) for value in results['component_utilization']['battery']: 1905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertAlmostEqual( 1915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results['component_utilization']['battery'][value], 1925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_power['component_utilization']['battery'][value]) 1935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertAlmostEqual(results['energy_consumption_mwh'], 1945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_power['energy_consumption_mwh']) 1955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertAlmostEqual(results['power_samples_mw'][0], 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_power['power_samples_mw'][0]) 1975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertAlmostEqual(results['power_samples_mw'][1], 1985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_power['power_samples_mw'][1]) 1995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 20003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) def testSplitSample(self): 20103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) sample = self.initial_power + '\n1408739546\n' 20203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) power, time = cros_power_monitor.CrosPowerMonitor.SplitSample(sample) 20303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.assertEqual(power, self.initial_power) 20403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.assertEqual(time, 1408739546) 20503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 2065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) def testCombineResults(self): 2075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result = cros_power_monitor.CrosPowerMonitor.CombineResults( 2085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_cpu, self.expected_power) 2095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) comp_util = result['component_utilization'] 2105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) # Test power values. 2115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertEqual(result['energy_consumption_mwh'], 2125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_power['energy_consumption_mwh']) 2135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertEqual(result['power_samples_mw'], 2145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_power['power_samples_mw']) 2155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertEqual(comp_util['battery'], 2165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_power['component_utilization']['battery']) 2175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) # Test frequency values. 2185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertDictEqual( 2195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) comp_util['whole_package']['frequency_percent'], 2205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_cpu['whole_package']['frequency_percent']) 2215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertDictEqual( 2225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) comp_util['cpu0']['frequency_percent'], 2235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_cpu['cpu0']['frequency_percent']) 2245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertDictEqual( 2255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) comp_util['cpu1']['frequency_percent'], 2265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_cpu['cpu1']['frequency_percent']) 2275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) # Test c-state residency values. 2285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertDictEqual( 2295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) comp_util['whole_package']['cstate_residency_percent'], 2305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_cpu['whole_package']['cstate_residency_percent']) 2315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertDictEqual( 2325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) comp_util['cpu0']['cstate_residency_percent'], 2335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_cpu['cpu0']['cstate_residency_percent']) 2345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertDictEqual( 2355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) comp_util['cpu1']['cstate_residency_percent'], 2365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.expected_cpu['cpu1']['cstate_residency_percent']) 237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch def testCanMonitorPower(self): 2395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) # TODO(tmandel): Add a test here where the device cannot monitor power. 2405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) initial_status = cros_power_monitor.CrosPowerMonitor.ParsePowerSupplyInfo( 2415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.initial_power) 2425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) final_status = cros_power_monitor.CrosPowerMonitor.ParsePowerSupplyInfo( 2435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.final_power) 2445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertTrue(cros_power_monitor.CrosPowerMonitor.IsOnBatteryPower( 2455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) initial_status, 'peppy')) 246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch self.assertTrue(cros_power_monitor.CrosPowerMonitor.IsOnBatteryPower( 2475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) final_status, 'butterfly')) 248