xref: /aosp_15_r20/external/autotest/client/site_tests/power_Draw/power_Draw.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
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