11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci# found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport logging
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport time
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport unittest
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifrom telemetry import decorators
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifrom telemetry.core.platform import win_platform_backend
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifrom telemetry.core.platform.power_monitor import msr_power_monitor
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass MsrPowerMonitorTest(unittest.TestCase):
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  @decorators.Enabled('win')
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  def testMsrRuns(self):
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    platform_backend = win_platform_backend.WinPlatformBackend()
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    power_monitor = msr_power_monitor.MsrPowerMonitor(platform_backend)
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    if not power_monitor.CanMonitorPower():
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      logging.warning('Test not supported on this platform.')
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      return
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    power_monitor.StartMonitoringPower(None)
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    time.sleep(0.01)
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    statistics = power_monitor.StopMonitoringPower()
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.assertEqual(statistics['identifier'], 'msr')
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.assertIn('energy_consumption_mwh', statistics)
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    self.assertGreater(statistics['energy_consumption_mwh'], 0)
30