# 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.arm.all.CtsWindowManagerDeviceTestCases_-_CtsWrapWrapNoDebugTestCases'
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-25'
DEPENDENCIES = 'arc'
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.arm.all.CtsWindowManagerDeviceTestCases_-_CtsWrapWrapNoDebugTestCases',
        test_name='cheets_CTS_R.internal.arm.all.CtsWindowManagerDeviceTestCases_-_CtsWrapWrapNoDebugTestCases',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsWindowManagerDeviceTestCases', '--include-filter', 'CtsWindowManagerDeviceTestCases[secondary_user]', '--include-filter', 'CtsWindowManagerJetpackTestCases', '--include-filter', 'CtsWindowManagerJetpackTestCases[secondary_user]', '--include-filter', 'CtsWindowManagerSdk25TestCases', '--include-filter', 'CtsWindowManagerSdk25TestCases[secondary_user]', '--include-filter', 'CtsWindowManagerSdk28TestCases', '--include-filter', 'CtsWindowManagerSdk28TestCases[secondary_user]', '--include-filter', 'CtsWindowManagerSdk29TestCases', '--include-filter', 'CtsWindowManagerSdk29TestCases[secondary_user]', '--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]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.CtsWindowManagerDeviceTestCases_-_CtsWrapWrapNoDebugTestCases',
        target_plan=None,
        bundle='arm',
        uri='LATEST',
        timeout=172800)

parallel_simple(run_TS, machines)
