41 lines
1.7 KiB
Python
41 lines
1.7 KiB
Python
|
# 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)
|