# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

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

AUTHOR = 'ARC++ Team'
NAME = 'cheets_CTS_R.11_r5.x86.all.CtsVoiceInteractionTestCases_-_vm-tests-tf'
ATTRIBUTES = 'suite:arc-cts-qual'
DEPENDENCIES = 'arc, cts_abi_x86'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
DOC = 'Run module CtsVoiceInteractionTestCases, CtsVoiceInteractionTestCases[instant], CtsVoiceInteractionTestCases[secondary_user], CtsVoiceSettingsTestCases, CtsVoiceSettingsTestCases[instant], CtsVoiceSettingsTestCases[secondary_user], CtsVrTestCases, CtsVrTestCases[secondary_user], CtsWebkitTestCases, CtsWebkitTestCases[instant], CtsWebkitTestCases[secondary_user], CtsWidgetTestCases, CtsWidgetTestCases29, CtsWidgetTestCases29[instant], CtsWidgetTestCases29[secondary_user], CtsWidgetTestCases[instant], CtsWidgetTestCases[secondary_user], CtsWifiBroadcastsHostTestCases, CtsWifiBroadcastsHostTestCases[instant], CtsWifiBroadcastsHostTestCases[secondary_user], CtsWifiTestCases, CtsWifiTestCases[instant], CtsWifiTestCases[secondary_user], CtsWindowManagerDeviceTestCases, CtsWindowManagerDeviceTestCases[secondary_user], CtsWindowManagerJetpackTestCases, CtsWindowManagerJetpackTestCases[secondary_user], CtsWindowManagerSdk25TestCases, CtsWindowManagerSdk25TestCases[secondary_user], CtsWindowManagerSdk28TestCases, CtsWindowManagerSdk28TestCases[secondary_user], CtsWindowManagerSdk29TestCases, CtsWindowManagerSdk29TestCases[secondary_user], CtsWrapNoWrapTestCases, CtsWrapNoWrapTestCases[secondary_user], CtsWrapWrapDebugMallocDebugTestCases, CtsWrapWrapDebugMallocDebugTestCases[secondary_user], CtsWrapWrapDebugTestCases, CtsWrapWrapDebugTestCases[secondary_user], CtsWrapWrapNoDebugTestCases, CtsWrapWrapNoDebugTestCases[secondary_user], LegacyStorageTest, LegacyStorageTest[instant], ScopedStorageTest, ScopedStorageTest[instant], signed-CtsOmapiTestCases, signed-CtsOmapiTestCases[secondary_user], signed-CtsSecureElementAccessControlTestCases1, signed-CtsSecureElementAccessControlTestCases1[secondary_user], signed-CtsSecureElementAccessControlTestCases2, signed-CtsSecureElementAccessControlTestCases2[secondary_user], signed-CtsSecureElementAccessControlTestCases3, signed-CtsSecureElementAccessControlTestCases3[secondary_user], vm-tests-tf, vm-tests-tf[secondary_user] of the Android Compatibility Test Suite (CTS) using x86 ABI in the ARC++ container.'

def run_TS(machine):
    host_list = [hosts.create_host(machine)]
    job.run_test(
        'cheets_CTS_R',
        hosts=host_list,
        iterations=1,
        max_retry=10,
        tag='11_r5.x86.all.CtsVoiceInteractionTestCases_-_vm-tests-tf',
        test_name='cheets_CTS_R.11_r5.x86.all.CtsVoiceInteractionTestCases_-_vm-tests-tf',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsVoiceInteractionTestCases', '--include-filter', 'CtsVoiceInteractionTestCases[instant]', '--include-filter', 'CtsVoiceInteractionTestCases[secondary_user]', '--include-filter', 'CtsVoiceSettingsTestCases', '--include-filter', 'CtsVoiceSettingsTestCases[instant]', '--include-filter', 'CtsVoiceSettingsTestCases[secondary_user]', '--include-filter', 'CtsVrTestCases', '--include-filter', 'CtsVrTestCases[secondary_user]', '--include-filter', 'CtsWebkitTestCases', '--include-filter', 'CtsWebkitTestCases[instant]', '--include-filter', 'CtsWebkitTestCases[secondary_user]', '--include-filter', 'CtsWidgetTestCases', '--include-filter', 'CtsWidgetTestCases29', '--include-filter', 'CtsWidgetTestCases29[instant]', '--include-filter', 'CtsWidgetTestCases29[secondary_user]', '--include-filter', 'CtsWidgetTestCases[instant]', '--include-filter', 'CtsWidgetTestCases[secondary_user]', '--include-filter', 'CtsWifiBroadcastsHostTestCases', '--include-filter', 'CtsWifiBroadcastsHostTestCases[instant]', '--include-filter', 'CtsWifiBroadcastsHostTestCases[secondary_user]', '--include-filter', 'CtsWifiTestCases', '--include-filter', 'CtsWifiTestCases[instant]', '--include-filter', 'CtsWifiTestCases[secondary_user]', '--include-filter', 'CtsWindowManagerDeviceTestCases', '--include-filter', 'CtsWindowManagerDeviceTestCases[secondary_user]', '--include-filter', 'CtsWindowManagerJetpackTestCases', '--include-filter', 'CtsWindowManagerJetpackTestCases[secondary_user]', '--include-filter', 'CtsWindowManagerSdk25TestCases', '--include-filter', 'CtsWindowManagerSdk25TestCases[secondary_user]', '--include-filter', 'CtsWindowManagerSdk28TestCases', '--include-filter', 'CtsWindowManagerSdk28TestCases[secondary_user]', '--include-filter', 'CtsWindowManagerSdk29TestCases', '--include-filter', 'CtsWindowManagerSdk29TestCases[secondary_user]', '--include-filter', 'CtsWrapNoWrapTestCases', '--include-filter', 'CtsWrapNoWrapTestCases[secondary_user]', '--include-filter', 'CtsWrapWrapDebugMallocDebugTestCases', '--include-filter', 'CtsWrapWrapDebugMallocDebugTestCases[secondary_user]', '--include-filter', 'CtsWrapWrapDebugTestCases', '--include-filter', 'CtsWrapWrapDebugTestCases[secondary_user]', '--include-filter', 'CtsWrapWrapNoDebugTestCases', '--include-filter', 'CtsWrapWrapNoDebugTestCases[secondary_user]', '--include-filter', 'LegacyStorageTest', '--include-filter', 'LegacyStorageTest[instant]', '--include-filter', 'ScopedStorageTest', '--include-filter', 'ScopedStorageTest[instant]', '--include-filter', 'signed-CtsOmapiTestCases', '--include-filter', 'signed-CtsOmapiTestCases[secondary_user]', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases1', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases1[secondary_user]', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases2', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases2[secondary_user]', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases3', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases3[secondary_user]', '--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='all.CtsVoiceInteractionTestCases_-_vm-tests-tf',
        target_plan=None,
        bundle='x86',
        uri='LATEST',
        use_jdk9=True,
        timeout=172800)

parallel_simple(run_TS, machines)
