# 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.x86.all.CtsMidiTestCases_-_CtsSecurityHostTestCases'
ATTRIBUTES = 'suite:arc-cts-qual'
DEPENDENCIES = 'arc, cts_abi_x86'
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 x86 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.x86.all.CtsMidiTestCases_-_CtsSecurityHostTestCases',
        test_name='cheets_CTS_N.7.1_r28.x86.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='x86',
        uri='gs://chromeos-arc-images/cts/bundle/N/android-cts-7.1_r28-linux_x86-x86.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)
