1 # Copyright (c) 2012 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 AUTHOR = "Chrome OS Team" 6 NAME = "Power Requirements tests" 7 ATTRIBUTES = "suite:power_requirements" 8 TIME = "LONG" 9 TEST_CATEGORY = "Functional" 10 TEST_CLASS = "suite" 11 TEST_TYPE = "server" 12 DEPENDENCIES = "rpm" 13 14 DOC = """ 15 This test suite runs automated power tests that should all pass. These tests 16 take a long time (several hours) to run and are intended to ensure that the DUT 17 complies with the power subsection of our CrOS Requirements doc. 18 19 Current tests with runtimes are: 20 power_BatteryCharge : <= 3 hours 21 power_Standby : 12 hours 22 23 """ 24 # TODO(tbroch) Deprecate this control file when SUITES= mechanism detailed @ 25 # https://sites.google.com/a/chromium.org/dev/chromium-os/testing/test-suites 26 # has ability to assure power states pre/post conditions. 27 from autotest_lib.server import site_host_attributes 28 from autotest_lib.client.common_lib import error 29 30 def _run_client_test(machine): 31 client = hosts.create_host(machine) 32 client_attributes = site_host_attributes.HostAttributes(client.hostname) 33 client_at = autotest.Autotest(client) 34 if client.has_power(): 35 client.power_on() 36 else: 37 raise error.TestNAError("No power switch configured") 38 39 # TODO(tbroch): Add power_Standby here once there's a mechanism to postpone 40 # autotest server from checking that DUT is still alive via network 41 42 # Run the full 60/20/10/10 load test, draining a full battery 43 client_at.run_test('power_BatteryCharge', percent_target_charge=100, 44 max_run_time=60*60*6, tag='CHARGE_100') 45 try: 46 client.power_off() 47 if hasattr(client_attributes, 'wifi'): 48 ap, sec, pw = client_attributes.wifi.split(',') 49 client_at.run_test('power_LoadTest', loop_count=12, loop_time=3600, 50 force_wifi=True, wifi_ap=ap, wifi_sec=sec, 51 wifi_pw=pw, tag='WIFI_full') 52 else: 53 client_at.run_test('power_LoadTest', loop_count=12, loop_time=3600, 54 check_network=False, tag='WIRED_full') 55 finally: 56 client.power_on() 57 58 # From client/site_tests/suite_HWQual/control.battery_charge_time 59 max_hours = 3 60 percent_charge_delta = 94.0 61 time_limit = max_hours * 60 * 60 * percent_charge_delta / 100.0 62 # battery must be at least 80% of design capacity 63 percent_battery_wear_allowed = .20 64 65 client_at.run_test('power_BatteryCharge', tag='full', 66 max_run_time=time_limit, 67 percent_charge_to_add=100, 68 percent_initial_charge_max=5, 69 use_design_charge_capacity=False, 70 constraints=[ 71 '1.0 - ah_charge_full / ah_charge_full_design <= %f' % 72 percent_battery_wear_allowed, 73 'percent_final_charge - percent_initial_charge >= %f' % 74 percent_charge_delta, 75 ]) 76 77 job.parallel_on_machines(_run_client_test, machines) 78