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