# Copyright 2022 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# __GENERATED_BY_GENERATE_CONTROLFILES_PY__:LATEST

# This file has been automatically generated. Do not edit!

AUTHOR = 'n/a'
NAME = 'cheets_CTS_T.internal.arm.all.CtsWrapNoWrapTestCases_-_signed-CtsSecureElementAccessControlTestCases3'
METADATA = {
    "contacts": ["arc-cts-eng@google.com"],
    "bug_component": "b:183644",
    "criteria": "A part of Android CTS",
}
ATTRIBUTES = 'suite:arc-cts-qual, suite:arc-cts-qual-arm-39'
DEPENDENCIES = 'arc'
HW_DEPS = ['android-vm-tm']
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
DOC = 'n/a'

def run_TS(machine):
    host_list = [hosts.create_host(machine)]
    job.run_test(
        'cheets_CTS_T',
        hosts=host_list,
        iterations=1,
        max_retry=9,
        tag='internal.arm.all.CtsWrapNoWrapTestCases_-_signed-CtsSecureElementAccessControlTestCases3',
        test_name='cheets_CTS_T.internal.arm.all.CtsWrapNoWrapTestCases_-_signed-CtsSecureElementAccessControlTestCases3',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsWrapNoWrapTestCases', '--include-filter', 'CtsWrapNoWrapTestCases[secondary_user]', '--include-filter', 'CtsWrapWrapDebugMallocDebugTestCases', '--include-filter', 'CtsWrapWrapDebugMallocDebugTestCases[secondary_user]', '--include-filter', 'CtsWrapWrapDebugTestCases', '--include-filter', 'CtsWrapWrapDebugTestCases[secondary_user]', '--include-filter', 'CtsWrapWrapNoDebugTestCases', '--include-filter', 'CtsWrapWrapNoDebugTestCases[secondary_user]', '--include-filter', 'MicrodroidHostTestCases', '--include-filter', 'MicrodroidHostTestCases[secondary_user]', '--include-filter', 'MicrodroidTestApp', '--include-filter', 'MicrodroidTestApp[secondary_user]', '--include-filter', 'ResourceObserverNativeTest', '--include-filter', 'ResourceObserverNativeTest[instant]', '--include-filter', 'ResourceObserverNativeTest[secondary_user]', '--include-filter', 'art-run-test-048-reflect-v8', '--include-filter', 'art-run-test-048-reflect-v8[secondary_user]', '--include-filter', 'art_libnativebridge_cts_tests', '--include-filter', 'art_libnativebridge_cts_tests[secondary_user]', '--include-filter', 'art_standalone_dex2oat_cts_tests', '--include-filter', 'art_standalone_dex2oat_cts_tests[secondary_user]', '--include-filter', 'art_standalone_libartpalette_tests', '--include-filter', 'art_standalone_libartpalette_tests[secondary_user]', '--include-filter', 'art_standalone_libdexfile_external_tests', '--include-filter', 'art_standalone_libdexfile_external_tests[secondary_user]', '--include-filter', 'libnativeloader_test', '--include-filter', 'libnativeloader_test[secondary_user]', '--include-filter', 'odsign_e2e_tests', '--include-filter', 'signed-CtsOmapiTestCases', '--include-filter', 'signed-CtsOmapiTestCases[secondary_user]', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases1', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases1[secondary_user]', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases2', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases2[secondary_user]', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases3', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases3[secondary_user]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.CtsWrapNoWrapTestCases_-_signed-CtsSecureElementAccessControlTestCases3',
        target_plan=None,
        bundle='arm',
        uri='LATEST',
        timeout=172800)

parallel_simple(run_TS, machines)
