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
5import logging
6import time
7import unittest
8
9from telemetry.core import platform as platform_module
10
11
12class PlatformBackendTest(unittest.TestCase):
13  def testPowerMonitoringSync(self):
14    # Tests that the act of monitoring power doesn't blow up.
15    platform = platform_module.GetHostPlatform()
16    can_monitor_power = platform.CanMonitorPower()
17    self.assertIsInstance(can_monitor_power, bool)
18    if not can_monitor_power:
19      logging.warning('Test not supported on this platform.')
20      return
21
22    browser_mock = lambda: None
23    # Android needs to access the package of the monitored app.
24    if platform.GetOSName() == 'android':
25      # pylint: disable=W0212
26      browser_mock._browser_backend = lambda: None
27      # Monitor the launcher, which is always present.
28      browser_mock._browser_backend.package = 'com.android.launcher'
29
30    platform.StartMonitoringPower(browser_mock)
31    time.sleep(0.001)
32    output = platform.StopMonitoringPower()
33    self.assertTrue(output.has_key('energy_consumption_mwh'))
34    self.assertTrue(output.has_key('identifier'))
35