# 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__:DEV

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

AUTHOR = 'n/a'
NAME = 'cheets_CTS_R.internal.arm.CtsGpu'
METADATA = {
    "contacts": ["arc-cts-eng@google.com"],
    "bug_component": "b:183644",
    "criteria": "A part of Android CTS",
}
ATTRIBUTES = 'suite:arc-cts, suite:arc-cts-arm-4'
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,
        tag='internal.arm.CtsGpu',
        test_name='cheets_CTS_R.internal.arm.CtsGpu',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsGpuProfilingDataTestCases', '--include-filter', 'CtsGpuProfilingDataTestCases[secondary_user]', '--include-filter', 'CtsGpuToolsHostTestCases', '--include-filter', 'CtsGpuToolsHostTestCases[secondary_user]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='CtsGpu',
        target_plan=None,
        bundle='arm',
        uri='DEV',
        timeout=9000)

parallel_simple(run_TS, machines)
