78 lines
3.1 KiB
Plaintext
78 lines
3.1 KiB
Plaintext
# Copyright (c) 2012 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.
|
|
|
|
AUTHOR = "Chrome OS Team"
|
|
NAME = "Power Requirements tests"
|
|
ATTRIBUTES = "suite:power_requirements"
|
|
TIME = "LONG"
|
|
TEST_CATEGORY = "Functional"
|
|
TEST_CLASS = "suite"
|
|
TEST_TYPE = "server"
|
|
DEPENDENCIES = "rpm"
|
|
|
|
DOC = """
|
|
This test suite runs automated power tests that should all pass. These tests
|
|
take a long time (several hours) to run and are intended to ensure that the DUT
|
|
complies with the power subsection of our CrOS Requirements doc.
|
|
|
|
Current tests with runtimes are:
|
|
power_BatteryCharge : <= 3 hours
|
|
power_Standby : 12 hours
|
|
|
|
"""
|
|
# TODO(tbroch) Deprecate this control file when SUITES= mechanism detailed @
|
|
# https://sites.google.com/a/chromium.org/dev/chromium-os/testing/test-suites
|
|
# has ability to assure power states pre/post conditions.
|
|
from autotest_lib.server import site_host_attributes
|
|
from autotest_lib.client.common_lib import error
|
|
|
|
def _run_client_test(machine):
|
|
client = hosts.create_host(machine)
|
|
client_attributes = site_host_attributes.HostAttributes(client.hostname)
|
|
client_at = autotest.Autotest(client)
|
|
if client.has_power():
|
|
client.power_on()
|
|
else:
|
|
raise error.TestNAError("No power switch configured")
|
|
|
|
# TODO(tbroch): Add power_Standby here once there's a mechanism to postpone
|
|
# autotest server from checking that DUT is still alive via network
|
|
|
|
# Run the full 60/20/10/10 load test, draining a full battery
|
|
client_at.run_test('power_BatteryCharge', percent_target_charge=100,
|
|
max_run_time=60*60*6, tag='CHARGE_100')
|
|
try:
|
|
client.power_off()
|
|
if hasattr(client_attributes, 'wifi'):
|
|
ap, sec, pw = client_attributes.wifi.split(',')
|
|
client_at.run_test('power_LoadTest', loop_count=12, loop_time=3600,
|
|
force_wifi=True, wifi_ap=ap, wifi_sec=sec,
|
|
wifi_pw=pw, tag='WIFI_full')
|
|
else:
|
|
client_at.run_test('power_LoadTest', loop_count=12, loop_time=3600,
|
|
check_network=False, tag='WIRED_full')
|
|
finally:
|
|
client.power_on()
|
|
|
|
# From client/site_tests/suite_HWQual/control.battery_charge_time
|
|
max_hours = 3
|
|
percent_charge_delta = 94.0
|
|
time_limit = max_hours * 60 * 60 * percent_charge_delta / 100.0
|
|
# battery must be at least 80% of design capacity
|
|
percent_battery_wear_allowed = .20
|
|
|
|
client_at.run_test('power_BatteryCharge', tag='full',
|
|
max_run_time=time_limit,
|
|
percent_charge_to_add=100,
|
|
percent_initial_charge_max=5,
|
|
use_design_charge_capacity=False,
|
|
constraints=[
|
|
'1.0 - ah_charge_full / ah_charge_full_design <= %f' %
|
|
percent_battery_wear_allowed,
|
|
'percent_final_charge - percent_initial_charge >= %f' %
|
|
percent_charge_delta,
|
|
])
|
|
|
|
job.parallel_on_machines(_run_client_test, machines)
|