# 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.

# __GENERATED_BY_GENERATE_CONTROLFILES_PY__:LATEST

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

AUTHOR = 'n/a'
NAME = 'cheets_CTS_R.11_r16.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-container-rvc','android-vm-rvc']
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_R',
        hosts=host_list,
        iterations=1,
        max_retry=0,
        tag='11_r16.x86.tradefed-run-collect-tests-only-internal',
        test_name='cheets_CTS_R.11_r16.x86.tradefed-run-collect-tests-only-internal',
        run_template=['run', 'commandAndExit', 'collect-tests-only', '--disable-reboot', '--module-arg', 'CtsMediaTestCases:skip-media-download:true', '--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)
