# 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.arm.all.CtsSoundTriggerTestCases_-_CtsTextTestCases'
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-arm-20'
DEPENDENCIES = 'arc'
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.arm.all.CtsSoundTriggerTestCases_-_CtsTextTestCases',
        test_name='cheets_CTS_R.internal.arm.all.CtsSoundTriggerTestCases_-_CtsTextTestCases',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsSoundTriggerTestCases', '--include-filter', 'CtsSoundTriggerTestCases[instant]', '--include-filter', 'CtsSoundTriggerTestCases[secondary_user]', '--include-filter', 'CtsSpeechTestCases', '--include-filter', 'CtsSpeechTestCases[secondary_user]', '--include-filter', 'CtsStagedInstallHostTestCases', '--include-filter', 'CtsStrictJavaPackagesTestCases', '--include-filter', 'CtsStrictJavaPackagesTestCases[secondary_user]', '--include-filter', 'CtsSuspendAppsPermissionTestCases', '--include-filter', 'CtsSuspendAppsPermissionTestCases[secondary_user]', '--include-filter', 'CtsSuspendAppsTestCases', '--include-filter', 'CtsSuspendAppsTestCases[secondary_user]', '--include-filter', 'CtsSustainedPerformanceHostTestCases', '--include-filter', 'CtsSustainedPerformanceHostTestCases[secondary_user]', '--include-filter', 'CtsSyncAccountAccessOtherCertTestCases', '--include-filter', 'CtsSyncAccountAccessOtherCertTestCases[secondary_user]', '--include-filter', 'CtsSyncContentHostTestCases', '--include-filter', 'CtsSyncContentHostTestCases[secondary_user]', '--include-filter', 'CtsSyncManagerTestsCases', '--include-filter', 'CtsSyncManagerTestsCases[secondary_user]', '--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]', '--include-filter', 'CtsTaggingHostTestCases', '--include-filter', 'CtsTaggingHostTestCases[instant]', '--include-filter', 'CtsTaggingHostTestCases[secondary_user]', '--include-filter', 'CtsTelecomTestCases', '--include-filter', 'CtsTelecomTestCases2', '--include-filter', 'CtsTelecomTestCases2[secondary_user]', '--include-filter', 'CtsTelecomTestCases3', '--include-filter', 'CtsTelecomTestCases3[secondary_user]', '--include-filter', 'CtsTelecomTestCases[secondary_user]', '--include-filter', 'CtsTelephony2TestCases', '--include-filter', 'CtsTelephony2TestCases[instant]', '--include-filter', 'CtsTelephony2TestCases[secondary_user]', '--include-filter', 'CtsTelephony3TestCases', '--include-filter', 'CtsTelephony3TestCases[secondary_user]', '--include-filter', 'CtsTelephonyHostCases', '--include-filter', 'CtsTelephonyHostCases[secondary_user]', '--include-filter', 'CtsTelephonyProviderHostCases', '--include-filter', 'CtsTelephonyProviderHostCases[secondary_user]', '--include-filter', 'CtsTelephonyProviderTestCases', '--include-filter', 'CtsTelephonyProviderTestCases[secondary_user]', '--include-filter', 'CtsTelephonySdk28TestCases', '--include-filter', 'CtsTelephonySdk28TestCases[secondary_user]', '--include-filter', 'CtsTelephonyTestCases', '--include-filter', 'CtsTelephonyTestCasesPermissionReadPhoneState', '--include-filter', 'CtsTelephonyTestCasesPermissionReadPhoneState[instant]', '--include-filter', 'CtsTelephonyTestCasesPermissionReadPhoneState[secondary_user]', '--include-filter', 'CtsTestHarnessModeTestCases', '--include-filter', 'CtsTestHarnessModeTestCases[secondary_user]', '--include-filter', 'CtsTetheringTest', '--include-filter', 'CtsTetheringTest[secondary_user]', '--include-filter', 'CtsTextClassifierTestCases', '--include-filter', 'CtsTextClassifierTestCases[secondary_user]', '--include-filter', 'CtsTextTestCases', '--include-filter', 'CtsTextTestCases[instant]', '--include-filter', 'CtsTextTestCases[secondary_user]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.CtsSoundTriggerTestCases_-_CtsTextTestCases',
        target_plan=None,
        bundle='arm',
        uri='LATEST',
        timeout=172800)

parallel_simple(run_TS, machines)
