# 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.internal.x86.all.CtsDeviceConfigTestCases_-_CtsDumpsysHostTestCases'
METADATA = {
    "contacts": ["arc-cts-eng@google.com"],
    "bug_component": "b:183644",
    "criteria": "A part of Android CTS",
}
ATTRIBUTES = 'suite:arc-cts-qual, suite:arc-cts-qual-x86-5'
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,
        max_retry=9,
        tag='internal.x86.all.CtsDeviceConfigTestCases_-_CtsDumpsysHostTestCases',
        test_name='cheets_CTS_R.internal.x86.all.CtsDeviceConfigTestCases_-_CtsDumpsysHostTestCases',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsDeviceConfigTestCases', '--include-filter', 'CtsDeviceConfigTestCases[instant]', '--include-filter', 'CtsDeviceConfigTestCases[secondary_user]', '--include-filter', 'CtsDeviceIdleHostTestCases', '--include-filter', 'CtsDeviceIdleHostTestCases[secondary_user]', '--include-filter', 'CtsDevicePolicyManagerTestCases', '--include-filter', 'CtsDexMetadataHostTestCases', '--include-filter', 'CtsDexMetadataHostTestCases[secondary_user]', '--include-filter', 'CtsDisplayTestCases', '--include-filter', 'CtsDisplayTestCases[instant]', '--include-filter', 'CtsDisplayTestCases[secondary_user]', '--include-filter', 'CtsDownloadManagerApi28', '--include-filter', 'CtsDownloadManagerApi28[secondary_user]', '--include-filter', 'CtsDownloadManagerInstaller', '--include-filter', 'CtsDownloadManagerInstaller[secondary_user]', '--include-filter', 'CtsDpiTestCases', '--include-filter', 'CtsDpiTestCases2', '--include-filter', 'CtsDpiTestCases2[secondary_user]', '--include-filter', 'CtsDpiTestCases[instant]', '--include-filter', 'CtsDpiTestCases[secondary_user]', '--include-filter', 'CtsDreamsTestCases', '--include-filter', 'CtsDreamsTestCases[instant]', '--include-filter', 'CtsDreamsTestCases[secondary_user]', '--include-filter', 'CtsDrmTestCases', '--include-filter', 'CtsDrmTestCases[instant]', '--include-filter', 'CtsDrmTestCases[secondary_user]', '--include-filter', 'CtsDropBoxManagerTestCases', '--include-filter', 'CtsDumpsysHostTestCases', '--include-filter', 'CtsDumpsysHostTestCases[secondary_user]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.CtsDeviceConfigTestCases_-_CtsDumpsysHostTestCases',
        target_plan=None,
        bundle='x86',
        uri='LATEST',
        timeout=172800)

parallel_simple(run_TS, machines)
