# Copyright 2018 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_P.internal.x86.all.CtsShortcutHostTestCases_-_CtsVideoTestCases'
ATTRIBUTES = 'suite:arc-cts-qual'
DEPENDENCIES = 'arc, cts_abi_x86'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
PY_VERSION = 3
DOC = 'Run module CtsShortcutHostTestCases, CtsShortcutManagerTestCases, CtsSimRestrictedApisTestCases, CtsSimpleCpuTestCases, CtsSimpleperfTestCases, CtsSkQPTestCases, CtsSliceTestCases, CtsSpeechTestCases, CtsStatsdHostTestCases, CtsSustainedPerformanceHostTestCases, CtsSyncAccountAccessOtherCertTestCases, CtsSyncContentHostTestCases, CtsSyncManagerTestsCases, CtsSystemApiAnnotationTestCases, CtsSystemApiSignatureTestCases, CtsSystemIntentTestCases, CtsSystemUiHostTestCases, CtsSystemUiTestCases, CtsTelecomTestCases, CtsTelecomTestCases2, CtsTelecomTestCases3, CtsTelephony2TestCases, CtsTelephonyTestCases, CtsTextTestCases, CtsThemeDeviceTestCases, CtsThemeHostTestCases, CtsToastLegacyTestCases, CtsToastTestCases, CtsTransitionTestCases, CtsTrustedVoiceHostTestCases, CtsTvProviderTestCases, CtsTvTestCases, CtsUiAutomationTestCases, CtsUiDeviceTestCases, CtsUiRenderingTestCases, CtsUidIsolationTestCases, CtsUsageStatsTestCases, CtsUsbTests, CtsUtilTestCases, CtsVideoTestCases 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_P',
        hosts=host_list,
        iterations=1,
        max_retry=9,
        tag='internal.x86.all.CtsShortcutHostTestCases_-_CtsVideoTestCases',
        test_name='cheets_CTS_P.internal.x86.all.CtsShortcutHostTestCases_-_CtsVideoTestCases',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsShortcutHostTestCases', '--include-filter', 'CtsShortcutManagerTestCases', '--include-filter', 'CtsSimRestrictedApisTestCases', '--include-filter', 'CtsSimpleCpuTestCases', '--include-filter', 'CtsSimpleperfTestCases', '--include-filter', 'CtsSkQPTestCases', '--include-filter', 'CtsSliceTestCases', '--include-filter', 'CtsSpeechTestCases', '--include-filter', 'CtsStatsdHostTestCases', '--include-filter', 'CtsSustainedPerformanceHostTestCases', '--include-filter', 'CtsSyncAccountAccessOtherCertTestCases', '--include-filter', 'CtsSyncContentHostTestCases', '--include-filter', 'CtsSyncManagerTestsCases', '--include-filter', 'CtsSystemApiAnnotationTestCases', '--include-filter', 'CtsSystemApiSignatureTestCases', '--include-filter', 'CtsSystemIntentTestCases', '--include-filter', 'CtsSystemUiHostTestCases', '--include-filter', 'CtsSystemUiTestCases', '--include-filter', 'CtsTelecomTestCases', '--include-filter', 'CtsTelecomTestCases2', '--include-filter', 'CtsTelecomTestCases3', '--include-filter', 'CtsTelephony2TestCases', '--include-filter', 'CtsTelephonyTestCases', '--include-filter', 'CtsTextTestCases', '--include-filter', 'CtsThemeDeviceTestCases', '--include-filter', 'CtsThemeHostTestCases', '--include-filter', 'CtsToastLegacyTestCases', '--include-filter', 'CtsToastTestCases', '--include-filter', 'CtsTransitionTestCases', '--include-filter', 'CtsTrustedVoiceHostTestCases', '--include-filter', 'CtsTvProviderTestCases', '--include-filter', 'CtsTvTestCases', '--include-filter', 'CtsUiAutomationTestCases', '--include-filter', 'CtsUiDeviceTestCases', '--include-filter', 'CtsUiRenderingTestCases', '--include-filter', 'CtsUidIsolationTestCases', '--include-filter', 'CtsUsageStatsTestCases', '--include-filter', 'CtsUsbTests', '--include-filter', 'CtsUtilTestCases', '--include-filter', 'CtsVideoTestCases', '--logcat-on-failure', '--dynamic-config-url='],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}', '--dynamic-config-url='],
        target_module='all.CtsShortcutHostTestCases_-_CtsVideoTestCases',
        target_plan=None,
        bundle='x86',
        extra_artifacts_host=['/tmp/diff_*.png'],
        uri='LATEST',
        prerequisites=['bluetooth', 'region_us'],
        timeout=77400)

parallel_simple(run_TS, machines)
