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)from telemetry.core import exceptions
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class PowerMonitor(object):
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  """A power profiler.
105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  Provides an interface to register power consumption during a test.
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  """
13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  def CanMonitorPower(self):
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    """Returns True iff power can be monitored asynchronously via
15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    StartMonitoringPower() and StopMonitoringPower().
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    """
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    return False
185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  def CanMeasurePerApplicationPower(self):
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    """Returns True if the power monitor can measure power for the target
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    application in isolation. False if power measurement is for full system
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    energy consumption."""
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return False
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  def StartMonitoringPower(self, browser):
26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    """Starts monitoring power utilization statistics.
27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    See Platform#StartMonitoringPower for the arguments format.
29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    """
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    raise NotImplementedError()
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  def StopMonitoringPower(self):
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    """Stops monitoring power utilization and returns collects stats
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    See Platform#StopMonitoringPower for the return format.
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    """
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    raise NotImplementedError()
38