# Copyright (c) 2011 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 per-build tests" TIME = "MEDIUM" TEST_CATEGORY = "Functional" TEST_CLASS = "suite" ATTRIBUTES = "suite:power_build" TEST_TYPE = "server" DEPENDENCIES = "rpm" DOC = """ This test suite runs automated power tests that should all pass. These tests are run on every build and thefore each test should be short and not take more than 5 minutes to run. This suite runs the test list on systems with AC off (on battery) since they require use of the rpm. The tests that run with AC on are run through their normal control files since they do not need to interact with the RPM. """ import logging from autotest_lib.client.common_lib import error from autotest_lib.server import site_host_attributes def _iterate_tests(client, machine): client_at = autotest.Autotest(client) tag = 'AC_OFFLINE' # Tests that are also run on AC from their control file. client_at.run_test('power_CPUFreq', tag=tag) client_at.run_test('power_CPUIdle', tag=tag) client_at.run_test('power_ProbeDriver', tag=tag, test_which='Battery') client_at.run_test('power_StatsCPUFreq', tag=tag) client_at.run_test('power_StatsCPUIdle', tag=tag) client_at.run_test('power_StatsUSB', tag=tag) client_at.run_test('power_Resume', tag=tag) client_at.run_test('power_UiResume', tag=tag) # Tests that are only run on battery power here. client_at.run_test('power_Backlight', tag=tag) client_at.run_test('power_Draw', tag=tag) client_at.run_test('power_Idle',tag=tag) # Run the short version of power_Consumption client_at.run_test('power_Consumption', short=True) client_attributes = site_host_attributes.HostAttributes(client.hostname) if not client_attributes.has_resume_bug: client_at.run_test('power_Resume', tag=tag) client_at.run_test('power_UiResume', tag=tag) def _run_client_test(machine): """Runs client tests - all with battery actively discharging.""" client = hosts.create_host(machine) if not client.has_power(): # Because this is a control file these test errors do not # get printed...logging ensures test_that users can see it. msg = 'This test requires RPM support.' logging.info('********************%s', msg) raise error.TestError(msg) try: client.power_off() _iterate_tests(client, machine) finally: client.power_on() job.parallel_on_machines(_run_client_test, machines)