# Copyright 2020 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_R.internal.x86.all.CtsDynamicLinkerTestCases_-_CtsFsMgrTestCases'
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-x86-6'
DEPENDENCIES = 'arc, cts_abi_x86'
HW_DEPS = ['android-container-rvc','android-vm-rvc']
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_R',
        hosts=host_list,
        iterations=1,
        max_retry=9,
        tag='internal.x86.all.CtsDynamicLinkerTestCases_-_CtsFsMgrTestCases',
        test_name='cheets_CTS_R.internal.x86.all.CtsDynamicLinkerTestCases_-_CtsFsMgrTestCases',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsDynamicLinkerTestCases', '--include-filter', 'CtsDynamicLinkerTestCases[instant]', '--include-filter', 'CtsDynamicLinkerTestCases[secondary_user]', '--include-filter', 'CtsDynamicMimeHostTestCases', '--include-filter', 'CtsDynamicMimeHostTestCases[secondary_user]', '--include-filter', 'CtsEdiHostTestCases', '--include-filter', 'CtsEdiHostTestCases[secondary_user]', '--include-filter', 'CtsEffectTestCases', '--include-filter', 'CtsEffectTestCases[instant]', '--include-filter', 'CtsEffectTestCases[secondary_user]', '--include-filter', 'CtsExtendedMockingTestCases', '--include-filter', 'CtsExtendedMockingTestCases[instant]', '--include-filter', 'CtsExtendedMockingTestCases[secondary_user]', '--include-filter', 'CtsExternalServiceTestCases', '--include-filter', 'CtsExternalServiceTestCases[secondary_user]', '--include-filter', 'CtsExtractNativeLibsHostTestCases', '--include-filter', 'CtsExtractNativeLibsHostTestCases[secondary_user]', '--include-filter', 'CtsFragmentTestCases', '--include-filter', 'CtsFragmentTestCasesSdk26', '--include-filter', 'CtsFragmentTestCasesSdk26[instant]', '--include-filter', 'CtsFragmentTestCasesSdk26[secondary_user]', '--include-filter', 'CtsFragmentTestCases[instant]', '--include-filter', 'CtsFragmentTestCases[secondary_user]', '--include-filter', 'CtsFsMgrTestCases', '--include-filter', 'CtsFsMgrTestCases[secondary_user]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.CtsDynamicLinkerTestCases_-_CtsFsMgrTestCases',
        target_plan=None,
        bundle='x86',
        uri='LATEST',
        timeout=172800)

parallel_simple(run_TS, machines)
