普通文本  |  46行  |  1.83 KB

# 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.

"""Server side test that controls charging the DUT with Servo v4."""

from autotest_lib.server import autotest
from autotest_lib.server import test
from autotest_lib.server.cros.power import servo_v4_charge_utils

# Max number of hours the DUT can charge for.
_MAX_HOURS = 3


class power_BatteryChargeControl(test.test):
    """Server side test that controls charging the DUT.

    This server side test first makes sure that the attached Servo v4 can
    control charging the DUT, then puts the DUT on AC to charge, and finally
    disconnect DUT from AC.
    """
    version = 1

    def run_once(self, host, percent_charge_to_add, percent_target_charge):
        """Running the test.

        @param host: CrosHost object representing the DUT.
        @param percent_charge_to_add: percentage of the charge capacity charge
                to add. The target charge will be capped at the charge capacity.
        @param percent_target_charge: percentage of the charge capacity target
                charge. The target charge will be capped at the charge capacity.
        """
        servo = host.servo
        charge_manager = servo_v4_charge_utils.ServoV4ChargeManager(host, servo)
        charge_manager.start_charging()

        time_limit = _MAX_HOURS * 60 * 60
        autotest_client = autotest.Autotest(host)
        autotest_client.run_test('power_BatteryCharge',
                                 max_run_time=time_limit,
                                 percent_charge_to_add=percent_charge_to_add,
                                 percent_target_charge=percent_target_charge,
                                 use_design_charge_capacity=False)

        charge_manager.restore_original_setting()