# Copyright 2019 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. """Power utils for server tests.""" from autotest_lib.server import autotest from autotest_lib.server.cros.power import servo_charger def put_host_battery_in_range(host, min_level, max_level, timeout): """ Charges or drains the host's battery to the specified range within the timeout. This uses a servo v4 and either the power_BatteryCharge or the power_BatteryDrain client test. @param host: DUT to use @param min_level: battery percentage @param max_level: battery percentage @param timeout: in seconds @throws: A TestFail error if getting the current battery level, setting the servo's charge state, or running either of the client tests fails. """ current_level = host.get_battery_display_percentage() if current_level >= min_level and current_level <= max_level: return autotest_client = autotest.Autotest(host) charge_manager = servo_charger.ServoV4ChargeManager(host, host.servo) if current_level < min_level: charge_manager.start_charging() autotest_client.run_test('power_BatteryCharge', max_run_time=timeout, percent_target_charge=min_level, use_design_charge_capacity=False) if current_level > max_level: charge_manager.stop_charging() autotest_client.run_test('power_BatteryDrain', drain_to_percent=max_level, drain_timeout=timeout)