1# Copyright 2019 The Chromium OS Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5"""Power utils for server tests.""" 6 7from autotest_lib.server import autotest 8from autotest_lib.server.cros.power import servo_charger 9 10def put_host_battery_in_range(host, min_level, max_level, timeout): 11 """ 12 Charges or drains the host's battery to the specified range within the 13 timeout. This uses a servo v4 and either the power_BatteryCharge or the 14 power_BatteryDrain client test. 15 16 @param host: DUT to use 17 @param min_level: battery percentage 18 @param max_level: battery percentage 19 @param timeout: in seconds 20 21 @throws: A TestFail error if getting the current battery level, setting the 22 servo's charge state, or running either of the client tests fails. 23 """ 24 current_level = host.get_battery_display_percentage() 25 if current_level >= min_level and current_level <= max_level: 26 return 27 28 autotest_client = autotest.Autotest(host) 29 charge_manager = servo_charger.ServoV4ChargeManager(host, host.servo) 30 if current_level < min_level: 31 charge_manager.start_charging() 32 autotest_client.run_test('power_BatteryCharge', 33 max_run_time=timeout, 34 percent_target_charge=min_level, 35 use_design_charge_capacity=False) 36 if current_level > max_level: 37 charge_manager.stop_charging() 38 autotest_client.run_test('power_BatteryDrain', 39 drain_to_percent=max_level, 40 drain_timeout=timeout) 41