| # 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. |
| |
| from autotest_lib.client.common_lib import utils |
| from autotest_lib.server.hosts import cros_host |
| |
| AUTHOR = 'ncrews' |
| DEPENDENCIES = "servo_state:WORKING" |
| NAME = 'policy_DeviceChargingServer.BatteryChargeMode' |
| TIME = 'LONG' |
| TEST_CATEGORY = 'General' |
| TEST_CLASS = 'enterprise' |
| TEST_TYPE = 'server' |
| ATTRIBUTES = "suite:wilco_bve" |
| |
| DOC = """ |
| Ensures the DUT's battery level is in a testable range, clears the TPM if |
| needed, and then runs the specified client test to verify charging behavior |
| is consistent with policies. |
| """ |
| |
| args_dict = utils.args_to_dict(args) |
| servo_args = cros_host.CrosHost.get_servo_arguments(args_dict) |
| |
| client_test = 'policy_DeviceCharging' |
| |
| # When DeviceBatteryChargeMode is set to BATTERY_CHARGE_PRIMARILY_AC_USE, then |
| # the DUT will not charge when above 86%. In order to test this, we need to be |
| # above this threshold. |
| MIN_BATTERY_LEVEL = 87 |
| |
| # A test case consists of the policies, plus the expected power behavior. |
| TEST_CASES = [ |
| ({'DeviceBatteryChargeMode': 1}, # BATTERY_CHARGE_STANDARD |
| 'ON_AC_AND_CHARGING'), |
| ({'DeviceBatteryChargeMode': 2}, # BATTERY_CHARGE_EXPRESS_CHARGE |
| 'ON_AC_AND_CHARGING'), |
| ({'DeviceBatteryChargeMode': 3}, # BATTERY_CHARGE_PRIMARILY_AC_USE |
| 'ON_AC_AND_CHARGING'), |
| ({'DeviceBatteryChargeMode': 4}, # `BATTERY_CHARGE_ADAPTIVE |
| 'ON_AC_AND_CHARGING'), |
| ({'DeviceBatteryChargeMode': 5, # BATTERY_CHARGE_CUSTOM |
| 'DeviceBatteryChargeCustomStartCharging': 50, |
| 'DeviceBatteryChargeCustomStopCharging': 60}, |
| 'ON_AC_AND_NOT_CHARGING'), |
| ({'DeviceBatteryChargeMode': 5, # BATTERY_CHARGE_CUSTOM |
| 'DeviceBatteryChargeCustomStartCharging': 50, |
| 'DeviceBatteryChargeCustomStopCharging': 100}, |
| 'ON_AC_AND_CHARGING'), |
| ] |
| |
| # These are used to cleanup the DUT and to prep the DUT before each test case. |
| # See the test for more info. |
| ON_AC_AND_CHARGING_POLICIES = { |
| 'DeviceBatteryChargeMode': 1, # BATTERY_CHARGE_STANDARD |
| } |
| ON_AC_AND_NOT_CHARGING_POLICIES = { |
| 'DeviceBatteryChargeMode': 5, # BATTERY_CHARGE_CUSTOM |
| 'DeviceBatteryChargeCustomStartCharging': 50, |
| 'DeviceBatteryChargeCustomStopCharging': 60, |
| } |
| PREP_POLICIES = { |
| 'ON_AC_AND_CHARGING' : (ON_AC_AND_NOT_CHARGING_POLICIES, |
| 'ON_AC_AND_NOT_CHARGING'), |
| 'ON_AC_AND_NOT_CHARGING' : (ON_AC_AND_CHARGING_POLICIES, |
| 'ON_AC_AND_CHARGING'), |
| } |
| |
| def run(machine): |
| host = hosts.create_host(machine, servo_args=servo_args) |
| job.run_test('policy_DeviceChargingServer', |
| host=host, |
| client_test=client_test, |
| test_cases=TEST_CASES, |
| min_battery_level=MIN_BATTERY_LEVEL, |
| prep_policies=PREP_POLICIES) |
| |
| parallel_simple(run, machines) |