61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
# Copyright (c) 2020 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.
|
|
|
|
import json
|
|
import logging
|
|
import os
|
|
|
|
from autotest_lib.client.common_lib import error
|
|
from autotest_lib.server import autotest
|
|
from autotest_lib.server import test
|
|
from autotest_lib.server.cros.crosperf import device_setup_utils
|
|
|
|
WAIT_TIME_LOG = 'wait_time.log'
|
|
|
|
class crosperf_Wrapper(test.test):
|
|
"""
|
|
Client test wrapper for crosperf.
|
|
|
|
This is a class to run client tests under the crosperf script.
|
|
|
|
"""
|
|
version = 1
|
|
|
|
def run_once(self, test_name, test_args, dut_config_str, dut=None):
|
|
"""
|
|
Run a single telemetry test.
|
|
|
|
@param test_name: Name of the client test.
|
|
@param test_args: Arguments need to be passed to test.
|
|
@param dut_config_str: A string dumped from json representing DUT
|
|
configurations.
|
|
@param dut: The autotest host object representing DUT.
|
|
|
|
@returns A result of this execution.
|
|
|
|
"""
|
|
if not test_name:
|
|
raise RuntimeError('Missing client test name to run.')
|
|
|
|
if dut_config_str:
|
|
dut_config = json.loads(dut_config_str)
|
|
# Setup device with dut_config arguments before running test.
|
|
wait_time = device_setup_utils.setup_device(dut, dut_config)
|
|
# Wait time can be used to accumulate cooldown time in Crosperf.
|
|
with open(os.path.join(self.resultsdir, WAIT_TIME_LOG), 'w') as f:
|
|
f.write(str(wait_time))
|
|
|
|
try:
|
|
# Execute the client side test.
|
|
client_at = autotest.Autotest(dut)
|
|
result = client_at.run_test(test_name, args=test_args)
|
|
except (error.TestFail, error.TestWarn):
|
|
logging.debug('Test did not succeed while executing client test.')
|
|
raise
|
|
except:
|
|
logging.debug('Unexpected failure on client test %s.', test_name)
|
|
raise
|
|
|
|
return result
|