# 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.9.0_r8.arm.all.CtsShortcutHostTestCases_-_CtsVideoTestCases'
ATTRIBUTES = 'suite:arc-cts-qual'
DEPENDENCIES = 'arc'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
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 arm ABI in the ARC++ container.'

def run_CTS(machine):
    host_list = [hosts.create_host(machine)]
    job.run_test(
        'cheets_CTS_P',
        hosts=host_list,
        iterations=1,
        max_retry=9,
        needs_push_media=False,
        tag='9.0_r8.arm.all.CtsShortcutHostTestCases_-_CtsVideoTestCases',
        test_name='cheets_CTS_P.9.0_r8.arm.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'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.CtsShortcutHostTestCases_-_CtsVideoTestCases',
        target_plan=None,
        executable_test_count=3829,
        bundle='arm',
        uri='gs://chromeos-arc-images/cts/bundle/P/android-cts-9.0_r8-linux_x86-arm.zip',
        timeout=172800)

parallel_simple(run_CTS, machines)
