| Index: tools/telemetry/telemetry/core/platform/power_monitor/android_dumpsys_power_monitor.py
|
| diff --git a/tools/telemetry/telemetry/core/platform/power_monitor/android_dumpsys_power_monitor.py b/tools/telemetry/telemetry/core/platform/power_monitor/android_dumpsys_power_monitor.py
|
| index c659ee43a99614561665a479a2e382f1a4abd516..16717ce4b762a3fc34c6a464ae693b993f11e962 100644
|
| --- a/tools/telemetry/telemetry/core/platform/power_monitor/android_dumpsys_power_monitor.py
|
| +++ b/tools/telemetry/telemetry/core/platform/power_monitor/android_dumpsys_power_monitor.py
|
| @@ -6,10 +6,11 @@ import csv
|
| import logging
|
| from collections import defaultdict
|
|
|
| -from telemetry.core.platform import power_monitor
|
| +from telemetry.core.platform import android_sysfs_platform
|
| +from telemetry.core.platform.power_monitor import sysfs_power_monitor
|
|
|
|
|
| -class DumpsysPowerMonitor(power_monitor.PowerMonitor):
|
| +class DumpsysPowerMonitor(sysfs_power_monitor.SysfsPowerMonitor):
|
| """PowerMonitor that relies on the dumpsys batterystats to monitor the power
|
| consumption of a single android application. This measure uses a heuristic
|
| and is the same information end-users see with the battery application.
|
| @@ -20,37 +21,33 @@ class DumpsysPowerMonitor(power_monitor.PowerMonitor):
|
| Args:
|
| device: DeviceUtils instance.
|
| """
|
| - super(DumpsysPowerMonitor, self).__init__()
|
| + super(DumpsysPowerMonitor, self).__init__(
|
| + android_sysfs_platform.AndroidSysfsPlatform(device))
|
| self._device = device
|
| - self._browser = None
|
|
|
| def CanMonitorPower(self):
|
| return self._device.old_interface.CanControlUsbCharging()
|
|
|
| def StartMonitoringPower(self, browser):
|
| - assert not self._browser, (
|
| - 'Must call StopMonitoringPower().')
|
| - self._browser = browser
|
| + super(DumpsysPowerMonitor, self).StartMonitoringPower(browser)
|
| # Disable the charging of the device over USB. This is necessary because the
|
| # device only collects information about power usage when the device is not
|
| # charging.
|
| self._device.old_interface.DisableUsbCharging()
|
|
|
| def StopMonitoringPower(self):
|
| - assert self._browser, (
|
| - 'StartMonitoringPower() not called.')
|
| - try:
|
| - self._device.old_interface.EnableUsbCharging()
|
| + if self._browser:
|
| # pylint: disable=W0212
|
| package = self._browser._browser_backend.package
|
| - # By default, 'dumpsys batterystats' measures power consumption during the
|
| - # last unplugged period.
|
| - result = self._device.RunShellCommand(
|
| - 'dumpsys batterystats -c %s' % package)
|
| - assert result, 'Dumpsys produced no output'
|
| - return DumpsysPowerMonitor.ParseSamplingOutput(package, result)
|
| - finally:
|
| - self._browser = None
|
| + cpu_stats = super(DumpsysPowerMonitor, self).StopMonitoringPower()
|
| + self._device.old_interface.EnableUsbCharging()
|
| + # By default, 'dumpsys batterystats' measures power consumption during the
|
| + # last unplugged period.
|
| + result = self._device.RunShellCommand(
|
| + 'dumpsys batterystats -c %s' % package)
|
| + assert result, 'Dumpsys produced no output'
|
| + return super(DumpsysPowerMonitor, self).CombineResults(
|
| + cpu_stats, DumpsysPowerMonitor.ParseSamplingOutput(package, result))
|
|
|
| @staticmethod
|
| def ParseSamplingOutput(package, dumpsys_output):
|
|
|