# 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.arm.all.CtsMidiTestCases_-_CtsSecurityBulletinHostTestCases'
ATTRIBUTES = 'suite:arc-cts-qual'
DEPENDENCIES = 'arc'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
PY_VERSION = 3
DOC = 'Run module CtsMidiTestCases, CtsMockingDebuggableTestCases, CtsMockingTestCases, CtsMonkeyTestCases, CtsMultiUserHostTestCases, CtsMultiUserTestCases, CtsNNAPITestCases, CtsNativeHardwareTestCases, CtsNativeMediaAAudioTestCases, CtsNativeMediaSlTestCases, CtsNativeMediaXaTestCases, CtsNativeNetTestCases, CtsNdefTestCases, CtsNetSecConfigAttributeTestCases, CtsNetSecConfigBasicDebugDisabledTestCases, CtsNetSecConfigBasicDebugEnabledTestCases, CtsNetSecConfigBasicDomainConfigTestCases, CtsNetSecConfigCleartextTrafficTestCases, CtsNetSecConfigDownloadManagerTestCases, CtsNetSecConfigInvalidPinTestCases, CtsNetSecConfigNestedDomainConfigTestCases, CtsNetSecConfigPrePCleartextTrafficTestCases, CtsNetSecConfigResourcesSrcTestCases, CtsNetSecPolicyUsesCleartextTrafficFalseTestCases, CtsNetSecPolicyUsesCleartextTrafficTrueTestCases, CtsNetSecPolicyUsesCleartextTrafficUnspecifiedTestCases, CtsNetTestCases, CtsNetTestCasesLegacyApi22, CtsNetTestCasesLegacyPermission22, CtsOmapiTestCases, CtsOpenGLTestCases, CtsOpenGlPerf2TestCases, CtsOpenGlPerfTestCases, CtsOsHostTestCases, CtsOsTestCases, CtsPdfTestCases, CtsPerfettoTestCases, CtsPermission2TestCases, CtsPermissionTestCases, CtsPreference2TestCases, CtsPreferenceTestCases, CtsPrintTestCases, CtsProtoTestCases, CtsProviderTestCases, CtsRenderscriptLegacyTestCases, CtsRenderscriptTestCases, CtsRsBlasTestCases, CtsRsCppTestCases, CtsSampleDeviceTestCases, CtsSampleHostTestCases, CtsSaxTestCases, CtsSeccompHostTestCases, CtsSecureElementAccessControlTestCases1, CtsSecureElementAccessControlTestCases2, CtsSecureElementAccessControlTestCases3, CtsSecurityBulletinHostTestCases of the Android Compatibility Test Suite (CTS) using arm 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.arm.all.CtsMidiTestCases_-_CtsSecurityBulletinHostTestCases',
        test_name='cheets_CTS_P.internal.arm.all.CtsMidiTestCases_-_CtsSecurityBulletinHostTestCases',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsMidiTestCases', '--include-filter', 'CtsMockingDebuggableTestCases', '--include-filter', 'CtsMockingTestCases', '--include-filter', 'CtsMonkeyTestCases', '--include-filter', 'CtsMultiUserHostTestCases', '--include-filter', 'CtsMultiUserTestCases', '--include-filter', 'CtsNNAPITestCases', '--include-filter', 'CtsNativeHardwareTestCases', '--include-filter', 'CtsNativeMediaAAudioTestCases', '--include-filter', 'CtsNativeMediaSlTestCases', '--include-filter', 'CtsNativeMediaXaTestCases', '--include-filter', 'CtsNativeNetTestCases', '--include-filter', 'CtsNdefTestCases', '--include-filter', 'CtsNetSecConfigAttributeTestCases', '--include-filter', 'CtsNetSecConfigBasicDebugDisabledTestCases', '--include-filter', 'CtsNetSecConfigBasicDebugEnabledTestCases', '--include-filter', 'CtsNetSecConfigBasicDomainConfigTestCases', '--include-filter', 'CtsNetSecConfigCleartextTrafficTestCases', '--include-filter', 'CtsNetSecConfigDownloadManagerTestCases', '--include-filter', 'CtsNetSecConfigInvalidPinTestCases', '--include-filter', 'CtsNetSecConfigNestedDomainConfigTestCases', '--include-filter', 'CtsNetSecConfigPrePCleartextTrafficTestCases', '--include-filter', 'CtsNetSecConfigResourcesSrcTestCases', '--include-filter', 'CtsNetSecPolicyUsesCleartextTrafficFalseTestCases', '--include-filter', 'CtsNetSecPolicyUsesCleartextTrafficTrueTestCases', '--include-filter', 'CtsNetSecPolicyUsesCleartextTrafficUnspecifiedTestCases', '--include-filter', 'CtsNetTestCases', '--include-filter', 'CtsNetTestCasesLegacyApi22', '--include-filter', 'CtsNetTestCasesLegacyPermission22', '--include-filter', 'CtsOmapiTestCases', '--include-filter', 'CtsOpenGLTestCases', '--include-filter', 'CtsOpenGlPerf2TestCases', '--include-filter', 'CtsOpenGlPerfTestCases', '--include-filter', 'CtsOsHostTestCases', '--include-filter', 'CtsOsTestCases', '--include-filter', 'CtsPdfTestCases', '--include-filter', 'CtsPerfettoTestCases', '--include-filter', 'CtsPermission2TestCases', '--include-filter', 'CtsPermissionTestCases', '--include-filter', 'CtsPreference2TestCases', '--include-filter', 'CtsPreferenceTestCases', '--include-filter', 'CtsPrintTestCases', '--include-filter', 'CtsProtoTestCases', '--include-filter', 'CtsProviderTestCases', '--include-filter', 'CtsRenderscriptLegacyTestCases', '--include-filter', 'CtsRenderscriptTestCases', '--include-filter', 'CtsRsBlasTestCases', '--include-filter', 'CtsRsCppTestCases', '--include-filter', 'CtsSampleDeviceTestCases', '--include-filter', 'CtsSampleHostTestCases', '--include-filter', 'CtsSaxTestCases', '--include-filter', 'CtsSeccompHostTestCases', '--include-filter', 'CtsSecureElementAccessControlTestCases1', '--include-filter', 'CtsSecureElementAccessControlTestCases2', '--include-filter', 'CtsSecureElementAccessControlTestCases3', '--include-filter', 'CtsSecurityBulletinHostTestCases', '--logcat-on-failure', '--dynamic-config-url='],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}', '--dynamic-config-url='],
        target_module='all.CtsMidiTestCases_-_CtsSecurityBulletinHostTestCases',
        target_plan=None,
        bundle='arm',
        uri='LATEST',
        login_precondition_commands=['lsblk -do NAME,RM | sed -n s/1$//p | xargs -n1 eject'],
        precondition_commands=['android-sh -c \'setprop ctl.start mdnsd\''],
        timeout=106200)

parallel_simple(run_TS, machines)
