blob: 6b0dcd1f9eb43f51bc9374f10be930b5090d7f30 [file] [log] [blame]
# Copyright 2020 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
NAME = "ThermalQual.full"
METADATA = {
"contacts": ["chromeos-platform-power@google.com"],
"author": "puthik",
"bug_component": "b:1361410",
"criteria": "This test is a benchmark test",
"hw_agnostic": False,
}
ATTRIBUTES = "suite:thermal_qual_full"
TIME = "LENGTHY"
TEST_CATEGORY = "Stress"
TEST_CLASS = "suite"
TEST_TYPE = "server"
EXTENDED_TIMEOUT = 18900 # 5 Hours + 900 second guard.
PY_VERSION = 3
DOC = """
Sequence for qualification for thermal.
"""
import datetime
import os
from autotest_lib.client.common_lib import utils
from autotest_lib.client.cros.power import power_dashboard
HOURS=60*60
# Need separate list for client and server test due to how these test work.
CLIENT_TESTS = [
('power_BatteryDrain', {
'force_discharge' : True, 'drain_to_percent' : 70,
'drain_timeout': 3 * HOURS}),
('power_BatteryCharge', {
'percent_target_charge' : 70, 'max_run_time': 5 * HOURS}),
('power_WaitForCoolDown', {}),
('power_Speedometer2', {'tag' : 'thermal_qual_full_before'}),
('power_ThermalLoad', {
'tag' : 'thermal_qual_full_discharge', 'force_discharge' : True}),
('power_Speedometer2', {'tag' : 'thermal_qual_full_ThermalLoad_discharge'}),
('power_BatteryCharge', {
'percent_target_charge' : 70, 'max_run_time': 5 * HOURS}),
('power_WaitForCoolDown', {}),
('power_VideoCall', {
'tag' : 'thermal_qual_full_discharge', 'force_discharge' : True}),
('power_Speedometer2', {'tag' : 'thermal_qual_full_VideoCall_discharge'}),
('power_BatteryDrain', {
'force_discharge' : True, 'drain_to_percent' : 30,
'drain_timeout': 7 * HOURS}),
('power_WaitForCoolDown', {}),
('power_ThermalLoad', {'tag' : 'thermal_qual_full_charge'}),
('power_Speedometer2', {'tag' : 'thermal_qual_full_ThermalLoad_charge'}),
('power_BatteryDrain', {
'force_discharge' : True, 'drain_to_percent' : 30,
'drain_timeout': 7 * HOURS}),
('power_WaitForCoolDown', {}),
('power_VideoCall', {'tag' : 'thermal_qual_full_charge'}),
('power_Speedometer2', {'tag' : 'thermal_qual_full_VideoCall_charge'})
]
# Workaround to make it compatible with moblab autotest UI.
global args_dict
try:
args_dict
except NameError:
args_dict = utils.args_to_dict(args)
# Use time as pdash_note if not supplied to track all tests in same suite.
pdash_note = args_dict.get('pdash_note',
NAME + '_' + datetime.datetime.utcnow().isoformat())
def run_client_test(machine):
client = hosts.create_host(machine)
client_at = autotest.Autotest(client)
for test, argv in CLIENT_TESTS:
argv['pdash_note'] = pdash_note
client_at.run_test(test, timeout=EXTENDED_TIMEOUT, **argv)
power_dashboard.generate_parallax_report(output_dir=os.getcwd(),
local_dir=os.getcwd(), testname='ThermalQual')
job.parallel_on_machines(run_client_test, machines)