1# Lint as: python2, python3 2# Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6import logging, time 7from autotest_lib.client.bin import test 8from autotest_lib.client.bin import utils 9from autotest_lib.client.cros.power import power_status 10 11 12class power_Draw(test.test): 13 version = 1 14 15 16 def run_once(self, seconds=200, sleep=10): 17 status = power_status.get_status() 18 if status.on_ac(): 19 logging.warning('AC power is online -- ' 20 'unable to monitor energy consumption') 21 return 22 23 # If powerd is running, stop it, so that it cannot interfere with the 24 # backlight adjustments in this test. 25 if utils.system_output('status powerd').find('start/running') != -1: 26 powerd_running = True 27 utils.system_output('stop powerd') 28 else: 29 powerd_running = False 30 31 start_energy = status.battery.energy 32 self._tlog = power_status.TempLogger([], seconds_period=sleep) 33 self._tlog.start() 34 35 # Let the test run 36 for i in range(0, seconds, sleep): 37 time.sleep(sleep) 38 status.refresh() 39 40 status.refresh() 41 end_energy = status.battery.energy 42 43 consumed_energy = start_energy - end_energy 44 energy_rate = consumed_energy * 60 * 60 / seconds 45 46 keyvals = self._tlog.calc() 47 keyvals['wh_energy_full'] = status.battery.energy_full 48 keyvals['wh_start_energy'] = start_energy 49 keyvals['wh_end_energy'] = end_energy 50 keyvals['wh_consumed_energy'] = consumed_energy 51 keyvals['w_average_energy_rate'] = energy_rate 52 keyvals['w_end_energy_rate'] = status.battery.energy_rate 53 54 self.write_perf_keyval(keyvals) 55 56 # Restore powerd if it was originally running. 57 if powerd_running: 58 utils.system_output('start powerd'); 59