# Copyright 2018 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_P.9.0_r11.arm.all.CtsVmTestCases_-_vm-tests-tf'
ATTRIBUTES = 'suite:arc-cts-qual'
DEPENDENCIES = 'arc'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
DOC = 'Run module CtsVmTestCases, CtsVoiceInteractionTestCases, CtsVoiceSettingsTestCases, CtsVrTestCases, CtsWebkitTestCases, CtsWidgetTestCases, CtsWindowManagerDeviceTestCases, CtsWrapNoWrapTestCases, CtsWrapWrapDebugMallocDebugTestCases, CtsWrapWrapDebugTestCases, CtsWrapWrapNoDebugTestCases, cts-system-all.api, signed-CtsSecureElementAccessControlTestCases1, signed-CtsSecureElementAccessControlTestCases2, signed-CtsSecureElementAccessControlTestCases3, vm-tests-tf of the Android Compatibility Test Suite (CTS) using arm ABI in the ARC++ container.'

def run_TS(machine):
    host_list = [hosts.create_host(machine)]
    job.run_test(
        'cheets_CTS_P',
        hosts=host_list,
        iterations=1,
        max_retry=9,
        tag='9.0_r11.arm.all.CtsVmTestCases_-_vm-tests-tf',
        test_name='cheets_CTS_P.9.0_r11.arm.all.CtsVmTestCases_-_vm-tests-tf',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsVmTestCases', '--include-filter', 'CtsVoiceInteractionTestCases', '--include-filter', 'CtsVoiceSettingsTestCases', '--include-filter', 'CtsVrTestCases', '--include-filter', 'CtsWebkitTestCases', '--include-filter', 'CtsWidgetTestCases', '--include-filter', 'CtsWindowManagerDeviceTestCases', '--include-filter', 'CtsWrapNoWrapTestCases', '--include-filter', 'CtsWrapWrapDebugMallocDebugTestCases', '--include-filter', 'CtsWrapWrapDebugTestCases', '--include-filter', 'CtsWrapWrapNoDebugTestCases', '--include-filter', 'cts-system-all.api', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases1', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases2', '--include-filter', 'signed-CtsSecureElementAccessControlTestCases3', '--include-filter', 'vm-tests-tf', '--logcat-on-failure', '--dynamic-config-url='],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}', '--dynamic-config-url='],
        target_module='all.CtsVmTestCases_-_vm-tests-tf',
        target_plan=None,
        bundle='arm',
        uri='gs://chromeos-arc-images/cts/bundle/P/android-cts-9.0_r11-linux_x86-arm.zip',
        timeout=172800)

parallel_simple(run_TS, machines)
