| # Copyright 2018 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. |
| |
| """Wrapper test that controls charging / discharging DUT with Servo v4.""" |
| |
| from autotest_lib.server import test |
| from autotest_lib.server.cros.power import servo_v4_charge_utils |
| from autotest_lib.server.cros.power import wrapper_test_runner |
| |
| |
| class power_ChargeControlWrapper(test.test): |
| """Base class for a wrapper test around a client test. |
| |
| This wrapper test runs 1 client test given by user, and controls charging / |
| discharging the DUT with Servo v4. |
| """ |
| version = 1 |
| |
| def run_once(self, host, config): |
| """Measure power while running the client side test. |
| |
| @param host: CrosHost object representing the DUT. |
| @param config: the args argument from test_that in a dict. |
| required data: {'test': 'test_TestName.tag'} |
| """ |
| test_runner = wrapper_test_runner.WrapperTestRunner( |
| config, self.autodir) |
| test_runner.run_test(host) |
| |
| def warmup(self, host): |
| """Disconnect DUT from AC power. |
| |
| Many power autotests require that DUT is on battery, thus disconnect DUT |
| from AC power as preparation. |
| """ |
| super(power_ChargeControlWrapper, self).warmup(host) |
| self._charge_manager = servo_v4_charge_utils.ServoV4ChargeManager( |
| host, host.servo) |
| self._charge_manager.stop_charging() |
| |
| def cleanup(self): |
| """Connect DUT to AC power. |
| |
| This allows DUT to charge between tests, and complies with moblab |
| requirement. |
| """ |
| self._charge_manager.start_charging() |
| super(power_ChargeControlWrapper, self).cleanup() |