# Copyright 2016 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_N.7.1_r28.arm.all.CtsMidiTestCases_-_CtsSecurityHostTestCases'
ATTRIBUTES = 'suite:arc-cts-qual'
DEPENDENCIES = 'arc'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 307200
DOC = 'Run module CtsMidiTestCases, CtsMonkeyTestCases, CtsMultiUserHostTestCases, CtsMultiUserTestCases, CtsNativeMediaSlTestCases, CtsNativeMediaXaTestCases, CtsNativeNetTestCases, CtsNdefTestCases, CtsNetSecConfigAttributeTestCases, CtsNetSecConfigBasicDebugDisabledTestCases, CtsNetSecConfigBasicDebugEnabledTestCases, CtsNetSecConfigBasicDomainConfigTestCases, CtsNetSecConfigCleartextTrafficTestCases, CtsNetSecConfigDownloadManagerTestCases, CtsNetSecConfigInvalidPinTestCases, CtsNetSecConfigNestedDomainConfigTestCases, CtsNetSecConfigResourcesSrcTestCases, CtsNetSecPolicyUsesCleartextTrafficFalseTestCases, CtsNetSecPolicyUsesCleartextTrafficTrueTestCases, CtsNetSecPolicyUsesCleartextTrafficUnspecifiedTestCases, CtsNetTestCases, CtsNetTestCasesLegacyApi22, CtsNetTestCasesLegacyPermission22, CtsOpenGLTestCases, CtsOpenGlPerf2TestCases, CtsOpenGlPerfTestCases, CtsOsHostTestCases, CtsOsTestCases, CtsPermission2TestCases, CtsPermissionTestCases, CtsPreference2TestCases, CtsPreferenceTestCases, CtsPrintTestCases, CtsProviderTestCases, CtsRenderscriptLegacyTestCases, CtsRenderscriptTestCases, CtsRetailDemoHostTestCases, CtsRsBlasTestCases, CtsRsCppTestCases, CtsSampleDeviceTestCases, CtsSampleHostTestCases, CtsSaxTestCases, CtsSecurityHostTestCases 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_N',
        hosts=host_list,
        iterations=1,
        max_retry=9,
        needs_push_media=False,
        tag='7.1_r28.arm.all.CtsMidiTestCases_-_CtsSecurityHostTestCases',
        test_name='cheets_CTS_N.7.1_r28.arm.all.CtsMidiTestCases_-_CtsSecurityHostTestCases',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsMidiTestCases', '--include-filter', 'CtsMonkeyTestCases', '--include-filter', 'CtsMultiUserHostTestCases', '--include-filter', 'CtsMultiUserTestCases', '--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', 'CtsNetSecConfigResourcesSrcTestCases', '--include-filter', 'CtsNetSecPolicyUsesCleartextTrafficFalseTestCases', '--include-filter', 'CtsNetSecPolicyUsesCleartextTrafficTrueTestCases', '--include-filter', 'CtsNetSecPolicyUsesCleartextTrafficUnspecifiedTestCases', '--include-filter', 'CtsNetTestCases', '--include-filter', 'CtsNetTestCasesLegacyApi22', '--include-filter', 'CtsNetTestCasesLegacyPermission22', '--include-filter', 'CtsOpenGLTestCases', '--include-filter', 'CtsOpenGlPerf2TestCases', '--include-filter', 'CtsOpenGlPerfTestCases', '--include-filter', 'CtsOsHostTestCases', '--include-filter', 'CtsOsTestCases', '--include-filter', 'CtsPermission2TestCases', '--include-filter', 'CtsPermissionTestCases', '--include-filter', 'CtsPreference2TestCases', '--include-filter', 'CtsPreferenceTestCases', '--include-filter', 'CtsPrintTestCases', '--include-filter', 'CtsProviderTestCases', '--include-filter', 'CtsRenderscriptLegacyTestCases', '--include-filter', 'CtsRenderscriptTestCases', '--include-filter', 'CtsRetailDemoHostTestCases', '--include-filter', 'CtsRsBlasTestCases', '--include-filter', 'CtsRsCppTestCases', '--include-filter', 'CtsSampleDeviceTestCases', '--include-filter', 'CtsSampleHostTestCases', '--include-filter', 'CtsSaxTestCases', '--include-filter', 'CtsSecurityHostTestCases', '--disable-reboot', '--logcat-on-failure', '--skip-device-info'],
        retry_template=['run', 'commandAndExit', 'cts', '--disable-reboot', '--skip-device-info', '--retry', '{session_id}'],
        target_module='all.CtsMidiTestCases_-_CtsSecurityHostTestCases',
        target_plan=None,
        bundle='arm',
        uri='gs://chromeos-arc-images/cts/bundle/N/android-cts-7.1_r28-linux_x86-arm.zip',
        login_precondition_commands=['lsblk -do NAME,RM | sed -n s/1$//p | xargs -n1 eject'],
        precondition_commands=['echo 3 > /proc/sys/kernel/perf_event_paranoid'],
        timeout=172800)

parallel_simple(run_CTS, machines)
