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

# __GENERATED_BY_GENERATE_CONTROLFILES_PY__:LATEST

# This file has been automatically generated. Do not edit!

AUTHOR = 'n/a'
NAME = 'cheets_CTS_T.13_r8.x86.tradefed-run-collect-tests-only-internal'
METADATA = {
    "contacts": ["arc-cts-eng@google.com"],
    "bug_component": "b:183644",
    "criteria": "A part of Android CTS",
}
ATTRIBUTES = 'suite:arc-cts, suite:arc-cts-qual, suite:arc-cts-qual-long'
DEPENDENCIES = 'arc, cts_abi_x86'
HW_DEPS = ['android-vm-tm']
JOB_RETRIES = 0
TEST_TYPE = 'server'
TIME = 'LENGTHY'
MAX_RESULT_SIZE_KB = 1024000
DOC = 'n/a'

def run_TS(machine):
    host_list = [hosts.create_host(machine)]
    job.run_test(
        'cheets_CTS_T',
        hosts=host_list,
        iterations=1,
        max_retry=0,
        tag='13_r8.x86.tradefed-run-collect-tests-only-internal',
        test_name='cheets_CTS_T.13_r8.x86.tradefed-run-collect-tests-only-internal',
        run_template=['run', 'commandAndExit', 'collect-tests-only', '--disable-reboot', '--exclude-filter', 'CtsIcu4cTestCases', '--exclude-filter', 'CtsMediaDecoderTestCases', '--exclude-filter', 'CtsSkQPTestCases', '--exclude-filter', 'CtsVideoTestCases', '--module-arg', 'CtsMediaStressTestCases:skip-media-download:true', '--module-arg', 'CtsMediaBitstreamsTestCases:skip-media-download:true'],
        retry_template=None,
        target_module=None,
        target_plan=None,
        bundle='x86',
        uri='LATEST',
        timeout=9000)

parallel_simple(run_TS, machines)
