# 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.CtsSystem'
METADATA = {
    "contacts": ["arc-cts-eng@google.com"],
    "bug_component": "b:183644",
    "criteria": "A part of Android CTS",
}
ATTRIBUTES = 'suite:arc-cts-vm-stable, suite:arc-cts-vm-stable-x86-18'
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.CtsSystem',
        test_name='cheets_CTS_R.internal.x86.CtsSystem',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsSystemApiAnnotationTestCases', '--include-filter', 'CtsSystemApiAnnotationTestCases[secondary_user]', '--include-filter', 'CtsSystemApiSignatureTestCases', '--include-filter', 'CtsSystemApiSignatureTestCases[secondary_user]', '--include-filter', 'CtsSystemIntentTestCases', '--include-filter', 'CtsSystemIntentTestCases[secondary_user]', '--include-filter', 'CtsSystemUiHostTestCases', '--include-filter', 'CtsSystemUiHostTestCases[instant]', '--include-filter', 'CtsSystemUiHostTestCases[secondary_user]', '--include-filter', 'CtsSystemUiTestCases', '--include-filter', 'CtsSystemUiTestCases[instant]', '--include-filter', 'CtsSystemUiTestCases[secondary_user]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='CtsSystem',
        target_plan=None,
        bundle='x86',
        uri='DEV',
        timeout=23400)

parallel_simple(run_TS, machines)
