15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)# found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)import logging 6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochimport time 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)import unittest 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from telemetry.core import platform as platform_module 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class PlatformBackendTest(unittest.TestCase): 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) def testPowerMonitoringSync(self): 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) # Tests that the act of monitoring power doesn't blow up. 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) platform = platform_module.GetHostPlatform() 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci can_monitor_power = platform.CanMonitorPower() 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci self.assertIsInstance(can_monitor_power, bool) 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if not can_monitor_power: 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) logging.warning('Test not supported on this platform.') 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch browser_mock = lambda: None 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Android needs to access the package of the monitored app. 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if platform.GetOSName() == 'android': 25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # pylint: disable=W0212 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch browser_mock._browser_backend = lambda: None 27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch # Monitor the launcher, which is always present. 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch browser_mock._browser_backend.package = 'com.android.launcher' 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) platform.StartMonitoringPower(browser_mock) 31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch time.sleep(0.001) 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) output = platform.StopMonitoringPower() 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self.assertTrue(output.has_key('energy_consumption_mwh')) 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) self.assertTrue(output.has_key('identifier')) 35