# 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.arm.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'
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.arm.tradefed-run-collect-tests-only-internal',
        test_name='cheets_CTS_R.11_r16.arm.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='arm',
        uri='LATEST',
        timeout=9000)

parallel_simple(run_TS, machines)
