| # Lint as: python2, python3 |
| # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import logging, time |
| from autotest_lib.client.bin import test |
| from autotest_lib.client.bin import utils |
| from autotest_lib.client.cros.power import power_status |
| |
| |
| class power_Draw(test.test): |
| version = 1 |
| |
| |
| def run_once(self, seconds=200, sleep=10): |
| status = power_status.get_status() |
| if status.on_ac(): |
| logging.warning('AC power is online -- ' |
| 'unable to monitor energy consumption') |
| return |
| |
| # If powerd is running, stop it, so that it cannot interfere with the |
| # backlight adjustments in this test. |
| if utils.system_output('status powerd').find('start/running') != -1: |
| powerd_running = True |
| utils.system_output('stop powerd') |
| else: |
| powerd_running = False |
| |
| start_energy = status.battery.energy |
| self._tlog = power_status.TempLogger([], seconds_period=sleep) |
| self._tlog.start() |
| |
| # Let the test run |
| for i in range(0, seconds, sleep): |
| time.sleep(sleep) |
| status.refresh() |
| |
| status.refresh() |
| end_energy = status.battery.energy |
| |
| consumed_energy = start_energy - end_energy |
| energy_rate = consumed_energy * 60 * 60 / seconds |
| |
| keyvals = self._tlog.calc() |
| keyvals['wh_energy_full'] = status.battery.energy_full |
| keyvals['wh_start_energy'] = start_energy |
| keyvals['wh_end_energy'] = end_energy |
| keyvals['wh_consumed_energy'] = consumed_energy |
| keyvals['w_average_energy_rate'] = energy_rate |
| keyvals['w_end_energy_rate'] = status.battery.energy_rate |
| |
| self.write_perf_keyval(keyvals) |
| |
| # Restore powerd if it was originally running. |
| if powerd_running: |
| utils.system_output('start powerd'); |