blob: f40a0718730e02161ce4f7733114e7e96d7e279a [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.core.platform.power_monitor import android_temperature_monitor
from telemetry.unittest import simple_mock
_ = simple_mock.DONT_CARE
class TemperatureMonitorForTesting(
android_temperature_monitor.AndroidTemperatureMonitor):
"""Overrides interaction with ADB to test the rest."""
def __init__(self, power_monitor, expected_temperature):
super(TemperatureMonitorForTesting, self).__init__(power_monitor, None)
self._expected_temperature = expected_temperature
def _GetBoardTemperatureCelsius(self):
return self._expected_temperature
def PowerMeasurementsConsistent(self, power_measurements):
component_utilization = power_measurements.get('component_utilization', {})
whole_package = component_utilization.get('whole_package', {})
expected_temperature = whole_package.get('average_temperature_c')
return expected_temperature == self._expected_temperature
class AndroidTemperatureMonitorTest(unittest.TestCase):
def testNoAttmptToMonitorIfIncapable(self):
mock_power_monitor = simple_mock.MockObject()
mock_power_monitor.ExpectCall('CanMonitorPower').WillReturn(False)
temperature_monitor = TemperatureMonitorForTesting(mock_power_monitor, 42.0)
self.assertTrue(temperature_monitor.CanMonitorPower())
temperature_monitor.StartMonitoringPower(None)
power_results = temperature_monitor.StopMonitoringPower()
self.assertTrue(
temperature_monitor.PowerMeasurementsConsistent(power_results))
def testPowerMonitoringResultsWereUpdated(self):
mock_power_monitor = simple_mock.MockObject()
mock_power_monitor.ExpectCall('CanMonitorPower').WillReturn(True)
fake_measurement = {'identifier' : '123'}
mock_power_monitor.ExpectCall('StartMonitoringPower', _)
mock_power_monitor.ExpectCall('StopMonitoringPower').WillReturn(
fake_measurement)
temperature_monitor = TemperatureMonitorForTesting(mock_power_monitor, 24.0)
self.assertTrue(temperature_monitor.CanMonitorPower())
temperature_monitor.StartMonitoringPower(None)
measurements = temperature_monitor.StopMonitoringPower()
self.assertTrue(
temperature_monitor.PowerMeasurementsConsistent(measurements))
self.assertEqual('123', measurements['identifier'])
def testSysfsReadFailed(self):
mock_power_monitor = simple_mock.MockObject()
mock_power_monitor.ExpectCall('CanMonitorPower').WillReturn(False)
mock_adb = simple_mock.MockObject()
mock_device_utils = simple_mock.MockObject()
mock_device_utils.ExpectCall('ReadFile', _).WillReturn([])
setattr(mock_device_utils, 'old_interface', mock_adb)
monitor = android_temperature_monitor.AndroidTemperatureMonitor(
mock_power_monitor, mock_device_utils)
self.assertTrue(monitor.CanMonitorPower())
monitor.StartMonitoringPower(None)
measurements = monitor.StopMonitoringPower()
self.assertTrue('identifier' in measurements)
self.assertTrue('component_utilization' not in measurements)