Index: tools/telemetry/telemetry/internal/platform/power_monitor/android_power_monitor_controller.py |
diff --git a/tools/telemetry/telemetry/internal/platform/power_monitor/android_power_monitor_controller.py b/tools/telemetry/telemetry/internal/platform/power_monitor/android_power_monitor_controller.py |
deleted file mode 100644 |
index dcd2d299a415275ec52023344d95b160abc7aa1e..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/telemetry/internal/platform/power_monitor/android_power_monitor_controller.py |
+++ /dev/null |
@@ -1,90 +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 atexit |
-import logging |
- |
-from telemetry.internal.platform.power_monitor import android_power_monitor_base |
- |
-def _ReenableChargingIfNeeded(battery): |
- if not battery.GetCharging(): |
- battery.SetCharging(True) |
- |
-class AndroidPowerMonitorController( |
- android_power_monitor_base.AndroidPowerMonitorBase): |
- """ |
- PowerMonitor that acts as facade for a list of PowerMonitor objects and uses |
- the first available one. |
- """ |
- def __init__(self, power_monitors, battery): |
- super(AndroidPowerMonitorController, self).__init__() |
- self._candidate_power_monitors = power_monitors |
- self._active_monitors = [] |
- self._battery = battery |
- atexit.register(_ReenableChargingIfNeeded, self._battery) |
- |
- def CanMonitorPower(self): |
- return any(m.CanMonitorPower() for m in self._candidate_power_monitors) |
- |
- def StartMonitoringPower(self, browser): |
- # TODO(rnephew): re-add assert when crbug.com/553601 is solved and |
- # StopMonitoringPower is called in the correct place. |
- if self._active_monitors: |
- logging.warning('StopMonitoringPower() not called when expected. Last ' |
- 'results are likely not reported.') |
- self.StopMonitoringPower() |
- self._CheckStart() |
- self._ChargingOff(self._battery) |
- self._active_monitors = ( |
- [m for m in self._candidate_power_monitors if m.CanMonitorPower()]) |
- assert self._active_monitors, 'No available monitor.' |
- for monitor in self._active_monitors: |
- monitor.StartMonitoringPower(browser) |
- |
- @staticmethod |
- def _MergePowerResults(combined_results, monitor_results): |
- """ |
- Merges monitor_results into combined_results and leaves monitor_results |
- values if there are merge conflicts. |
- """ |
- def _CheckDuplicateKeys(dict_one, dict_two, ignore_list=None): |
- for key in dict_one: |
- if key in dict_two and key not in ignore_list: |
- logging.warning('Found multiple instances of %s in power monitor ' |
- 'entries. Using newest one.', key) |
- # Sub level power entries. |
- for part in ['platform_info', 'component_utilization']: |
- if part in monitor_results: |
- _CheckDuplicateKeys(combined_results[part], monitor_results[part]) |
- combined_results[part].update(monitor_results[part]) |
- |
- # Top level power entries. |
- platform_info = combined_results['platform_info'].copy() |
- comp_utilization = combined_results['component_utilization'].copy() |
- _CheckDuplicateKeys( |
- combined_results, monitor_results, |
- ['identifier', 'platform_info', 'component_utilization']) |
- combined_results.update(monitor_results) |
- combined_results['platform_info'] = platform_info |
- combined_results['component_utilization'] = comp_utilization |
- |
- def StopMonitoringPower(self): |
- self._CheckStop() |
- self._ChargingOn(self._battery) |
- try: |
- results = {'platform_info': {}, 'component_utilization': {}} |
- for monitor in self._active_monitors: |
- self._MergePowerResults(results, monitor.StopMonitoringPower()) |
- return results |
- finally: |
- self._active_monitors = [] |
- |
- def _ChargingOff(self, battery): |
- battery.SetCharging(False) |
- |
- def _ChargingOn(self, battery): |
- if battery.GetCharging(): |
- logging.warning('Charging re-enabled during test.' |
- 'Results may be inaccurate.') |
- battery.SetCharging(True) |