blob: 7bb817b388bb732fbf9e9f179a15b6639c22b120 [file] [log] [blame] [edit]
# 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)