Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / core / platform / power_monitor / android_temperature_monitor_unittest.py
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import unittest
6
7 from telemetry.core.platform.power_monitor import android_temperature_monitor
8 from telemetry.unittest import simple_mock
9
10
11 _ = simple_mock.DONT_CARE
12
13
14 class TemperatureMonitorForTesting(
15     android_temperature_monitor.AndroidTemperatureMonitor):
16   """Overrides interaction with ADB to test the rest."""
17
18   def __init__(self, power_monitor, expected_temperature):
19     super(TemperatureMonitorForTesting, self).__init__(power_monitor, None)
20     self._expected_temperature = expected_temperature
21
22   def _GetBoardTemperatureCelsius(self):
23     return self._expected_temperature
24
25   def PowerMeasurementsConsistent(self, power_measurements):
26     component_utilization = power_measurements.get('component_utilization', {})
27     whole_package = component_utilization.get('whole_package', {})
28     expected_temperature = whole_package.get('average_temperature_c')
29     return expected_temperature == self._expected_temperature
30
31
32 class AndroidTemperatureMonitorTest(unittest.TestCase):
33   def testNoAttmptToMonitorIfIncapable(self):
34     mock_power_monitor = simple_mock.MockObject()
35     mock_power_monitor.ExpectCall('CanMonitorPower').WillReturn(False)
36
37     temperature_monitor = TemperatureMonitorForTesting(mock_power_monitor, 42.0)
38     self.assertTrue(temperature_monitor.CanMonitorPower())
39     temperature_monitor.StartMonitoringPower(None)
40     power_results = temperature_monitor.StopMonitoringPower()
41     self.assertTrue(
42         temperature_monitor.PowerMeasurementsConsistent(power_results))
43
44   def testPowerMonitoringResultsWereUpdated(self):
45     mock_power_monitor = simple_mock.MockObject()
46     mock_power_monitor.ExpectCall('CanMonitorPower').WillReturn(True)
47     fake_measurement = {'identifier' : '123'}
48     mock_power_monitor.ExpectCall('StartMonitoringPower', _)
49     mock_power_monitor.ExpectCall('StopMonitoringPower').WillReturn(
50         fake_measurement)
51
52     temperature_monitor = TemperatureMonitorForTesting(mock_power_monitor, 24.0)
53     self.assertTrue(temperature_monitor.CanMonitorPower())
54     temperature_monitor.StartMonitoringPower(None)
55     measurements = temperature_monitor.StopMonitoringPower()
56     self.assertTrue(
57         temperature_monitor.PowerMeasurementsConsistent(measurements))
58     self.assertEqual('123', measurements['identifier'])
59
60   def testSysfsReadFailed(self):
61     mock_power_monitor = simple_mock.MockObject()
62     mock_power_monitor.ExpectCall('CanMonitorPower').WillReturn(False)
63     mock_adb = simple_mock.MockObject()
64     mock_adb.ExpectCall('GetFileContents', _).WillReturn([])
65     mock_device_utils = simple_mock.MockObject()
66     setattr(mock_device_utils, 'old_interface', mock_adb)
67
68     monitor = android_temperature_monitor.AndroidTemperatureMonitor(
69         mock_power_monitor, mock_device_utils)
70     self.assertTrue(monitor.CanMonitorPower())
71     monitor.StartMonitoringPower(None)
72     measurements = monitor.StopMonitoringPower()
73     self.assertTrue('identifier' in measurements)
74     self.assertTrue('component_utilization' not in measurements)