# Copyright 2024 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from autotest_lib.client.common_lib import utils
from autotest_lib.server.site_tests.tast import tast

# TODO: will remove this control file after b/323418491 fixed.
AUTHOR = 'The ChromiumOS Authors'
NAME = 'tast.typec_mcci'
METADATA = {
    'contacts': ['chromeos-usb@google.com'],
    'bug_component': 'b:958036', # ChromeOS > Platform > Connectivity > USB
    'criteria': 'Tauto wrapper for specified tast tests',
}
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:typec_mcci'
MAX_RESULT_SIZE_KB = 1024 * 1024

# tast.py uses binaries installed from autotest_server_package.tar.bz2.
REQUIRE_SSP = True

DOC = '''
Run Tast tests for basic typec/TBT functionality.

The tests are part of 'group:typec'. The 'group:typec' sub-attribute
limits it to typec tests.

Tast is an integration-testing framework analagous to the test-running portion
of Autotest. See https://chromium.googlesource.com/chromiumos/platform/tast/
for more information.

See http://go/tast-failures for information about investigating failures.
'''

# TODO: b/323418491 Create Swarming Labels in UFS for peripherals Tests.
command_args, varslist = tast.split_arguments(args)
varslist += ['typec.McciSerial=0002CC00049F']

def run(machine):
    args_dict = utils.args_to_dict(command_args)
    servo_args = hosts.CrosHost.get_servo_arguments(args_dict)
    job.run_test('tast',
                 host=hosts.create_host(machine, servo_args=servo_args),
                 test_exprs=['("group:typec" && typec_mcci)'],
                 ignore_test_failures=False, max_run_sec=10800,
                 command_args=command_args,
                 varslist=varslist,
                 is_cft=is_cft)

parallel_simple(run, machines)
