diff options
Diffstat (limited to 'catapult/telemetry/telemetry/internal/platform/power_monitor/android_dumpsys_power_monitor_unittest.py')
-rw-r--r-- | catapult/telemetry/telemetry/internal/platform/power_monitor/android_dumpsys_power_monitor_unittest.py | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/catapult/telemetry/telemetry/internal/platform/power_monitor/android_dumpsys_power_monitor_unittest.py b/catapult/telemetry/telemetry/internal/platform/power_monitor/android_dumpsys_power_monitor_unittest.py new file mode 100644 index 00000000..e38ebc5b --- /dev/null +++ b/catapult/telemetry/telemetry/internal/platform/power_monitor/android_dumpsys_power_monitor_unittest.py @@ -0,0 +1,92 @@ +# 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 android_dumpsys_power_monitor +from telemetry.internal.platform.power_monitor import pm_mock + + +_PACKAGE = 'com.google.android.apps.chrome' + +_TYPICAL_POWER_DATA = { + 'system_total': 2000.0, + 'per_package': { + _PACKAGE: {'data': [23.9], 'uid': '12345'} + } + } + +_TYPICAL_POWER_DATA_MULTISAMPLE = { + 'system_total': 2000.0, + 'per_package': { + _PACKAGE: {'data': [23.9, 26.1], 'uid': '12345'} + } + } + + +class DumpsysPowerMonitorMonitorTest(unittest.TestCase): + + def testApplicationEnergyConsumption(self): + results = ( + android_dumpsys_power_monitor.DumpsysPowerMonitor.ProcessPowerData( + _TYPICAL_POWER_DATA, 4.0, _PACKAGE)) + self.assertEqual(results['identifier'], 'dumpsys') + self.assertAlmostEqual(results['application_energy_consumption_mwh'], 95.6) + + def testSystemEnergyConsumption(self): + power_data = { + 'system_total': 2000.0, + 'per_package': {} + } + results = ( + android_dumpsys_power_monitor.DumpsysPowerMonitor.ProcessPowerData( + power_data, 4.0, 'some.package')) + self.assertEqual(results['identifier'], 'dumpsys') + self.assertEqual(results['application_energy_consumption_mwh'], 0) + self.assertEqual(results['energy_consumption_mwh'], 8000.0) + + def testMonitorCycle(self): + browser = pm_mock.MockBrowser(_PACKAGE) + battery = pm_mock.MockBattery(_TYPICAL_POWER_DATA_MULTISAMPLE, voltage=5.0) + backend = pm_mock.MockPlatformBackend() + pm = android_dumpsys_power_monitor.DumpsysPowerMonitor(battery, backend) + pm.StartMonitoringPower(browser) + result = pm.StopMonitoringPower() + self.assertEqual(result['identifier'], 'dumpsys') + self.assertEqual(result['power_samples_mw'], []) + self.assertAlmostEqual(result['application_energy_consumption_mwh'], 250.0) + self.assertAlmostEqual(result['energy_consumption_mwh'], 10000.0) + + def testDoubleStop(self): + browser = pm_mock.MockBrowser(_PACKAGE) + battery = pm_mock.MockBattery(_TYPICAL_POWER_DATA_MULTISAMPLE, voltage=5.0) + backend = pm_mock.MockPlatformBackend() + pm = android_dumpsys_power_monitor.DumpsysPowerMonitor(battery, backend) + pm.StartMonitoringPower(browser) + pm.StopMonitoringPower() + with self.assertRaises(AssertionError): + pm.StopMonitoringPower() + + def testDoubleStart(self): + browser = pm_mock.MockBrowser(_PACKAGE) + battery = pm_mock.MockBattery(_TYPICAL_POWER_DATA_MULTISAMPLE, voltage=5.0) + backend = pm_mock.MockPlatformBackend() + pm = android_dumpsys_power_monitor.DumpsysPowerMonitor(battery, backend) + pm.StartMonitoringPower(browser) + with self.assertRaises(AssertionError): + pm.StartMonitoringPower(browser) + + def testBatteryChargingState(self): + browser = pm_mock.MockBrowser(_PACKAGE) + battery = pm_mock.MockBattery(_TYPICAL_POWER_DATA_MULTISAMPLE, voltage=5.0) + backend = pm_mock.MockPlatformBackend() + pm = android_dumpsys_power_monitor.DumpsysPowerMonitor(battery, backend) + self.assertEqual(battery.GetCharging(), True) + pm.StartMonitoringPower(browser) + self.assertEqual(battery.GetCharging(), True) + pm.StopMonitoringPower() + self.assertEqual(battery.GetCharging(), True) + +if __name__ == '__main__': + unittest.main() |