blob: a77c3ccb1d50b939b0a0fa722f95303ed02eb230 [file] [log] [blame]
# 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 import power_monitor as power_monitor
from telemetry.internal.platform.power_monitor import (
android_power_monitor_controller)
import mock
from devil.android import battery_utils
# pylint: disable=import-error, unused-argument
class AndroidPowerMonitorControllerTest(unittest.TestCase):
@mock.patch.object(battery_utils, 'BatteryUtils')
def testComposition(self, _):
class P1(power_monitor.PowerMonitor):
def StartMonitoringPower(self, browser):
raise NotImplementedError()
def StopMonitoringPower(self):
raise NotImplementedError()
class P2(power_monitor.PowerMonitor):
def __init__(self, value):
super(P2, self).__init__()
self._value = {'P2': value}
def CanMonitorPower(self):
return True
def StartMonitoringPower(self, browser):
pass
def StopMonitoringPower(self):
return self._value
class P3(power_monitor.PowerMonitor):
def __init__(self, value):
super(P3, self).__init__()
self._value = {'P3': value}
def CanMonitorPower(self):
return True
def StartMonitoringPower(self, browser):
pass
def StopMonitoringPower(self):
return self._value
battery = battery_utils.BatteryUtils(None)
controller = android_power_monitor_controller.AndroidPowerMonitorController(
[P1(), P2(1), P3(2)], battery)
self.assertEqual(controller.CanMonitorPower(), True)
controller.StartMonitoringPower(None)
controller_returns = controller.StopMonitoringPower()
self.assertEqual(controller_returns['P2'], 1)
self.assertEqual(controller_returns['P3'], 2)
@mock.patch.object(battery_utils, 'BatteryUtils')
def testReenableChargingIfNeeded(self, mock_battery):
battery = battery_utils.BatteryUtils(None)
battery.GetCharging.return_value = False
android_power_monitor_controller._ReenableChargingIfNeeded(battery)
def testMergePowerResultsOneEmpty(self):
dict_one = {'platform_info': {}, 'component_utilization': {}}
dict_two = {'test': 1, 'component_utilization': {'test': 2}}
results = {
'platform_info': {},
'component_utilization': {'test': 2},
'test': 1
}
(android_power_monitor_controller.AndroidPowerMonitorController.
_MergePowerResults(dict_one, dict_two))
self.assertDictEqual(dict_one, results)
def testMergePowerResultsSameEntry(self):
dict_one = {
'test': 1,
'component_utilization': {'test': 2},
'platform_info': {'test2': 'a'}
}
dict_two = {'test': 3, 'platform_info': {'test': 4}}
results = {
'test' : 3,
'component_utilization': {'test': 2},
'platform_info': {'test': 4, 'test2': 'a'}
}
(android_power_monitor_controller.AndroidPowerMonitorController.
_MergePowerResults(dict_one, dict_two))
self.assertDictEqual(dict_one, results)