# 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__:DEV

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

AUTHOR = 'n/a'
NAME = 'cheets_CTS_R.internal.x86.vm-tests-tf'
METADATA = {
    "contacts": ["arc-cts-eng@google.com"],
    "bug_component": "b:183644",
    "criteria": "A part of Android CTS",
}
ATTRIBUTES = 'suite:arc-cts, suite:arc-cts-x86-17'
DEPENDENCIES = 'arc, cts_abi_x86'
HW_DEPS = ['android-container-rvc','android-vm-rvc']
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
DOC = 'n/a'

def run_TS(machine):
    host_list = [hosts.create_host(machine)]
    job.run_test(
        'cheets_CTS_R',
        hosts=host_list,
        iterations=1,
        tag='internal.x86.vm-tests-tf',
        test_name='cheets_CTS_R.internal.x86.vm-tests-tf',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'vm-tests-tf', '--include-filter', 'vm-tests-tf[secondary_user]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='vm-tests-tf',
        target_plan=None,
        bundle='x86',
        uri='DEV',
        timeout=5400)

parallel_simple(run_TS, machines)
