# Copyright 2020 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_R.11_r3.arm.CtsTelephony'
ATTRIBUTES = 'suite:arc-cts-r'
DEPENDENCIES = 'arc'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
DOC = 'Run module CtsTelephony2TestCases, CtsTelephony2TestCases[instant], CtsTelephony2TestCases[secondary_user], CtsTelephony3TestCases, CtsTelephony3TestCases[secondary_user], CtsTelephonyHostCases, CtsTelephonyHostCases[secondary_user], CtsTelephonyProviderHostCases, CtsTelephonyProviderHostCases[secondary_user], CtsTelephonyProviderTestCases, CtsTelephonyProviderTestCases[secondary_user], CtsTelephonySdk28TestCases, CtsTelephonySdk28TestCases[secondary_user], CtsTelephonyTestCases, CtsTelephonyTestCasesPermissionReadPhoneState, CtsTelephonyTestCasesPermissionReadPhoneState[instant], CtsTelephonyTestCasesPermissionReadPhoneState[secondary_user] 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_R',
        hosts=host_list,
        iterations=1,
        tag='11_r3.arm.CtsTelephony',
        test_name='cheets_CTS_R.11_r3.arm.CtsTelephony',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsTelephony2TestCases', '--include-filter', 'CtsTelephony2TestCases[instant]', '--include-filter', 'CtsTelephony2TestCases[secondary_user]', '--include-filter', 'CtsTelephony3TestCases', '--include-filter', 'CtsTelephony3TestCases[secondary_user]', '--include-filter', 'CtsTelephonyHostCases', '--include-filter', 'CtsTelephonyHostCases[secondary_user]', '--include-filter', 'CtsTelephonyProviderHostCases', '--include-filter', 'CtsTelephonyProviderHostCases[secondary_user]', '--include-filter', 'CtsTelephonyProviderTestCases', '--include-filter', 'CtsTelephonyProviderTestCases[secondary_user]', '--include-filter', 'CtsTelephonySdk28TestCases', '--include-filter', 'CtsTelephonySdk28TestCases[secondary_user]', '--include-filter', 'CtsTelephonyTestCases', '--include-filter', 'CtsTelephonyTestCasesPermissionReadPhoneState', '--include-filter', 'CtsTelephonyTestCasesPermissionReadPhoneState[instant]', '--include-filter', 'CtsTelephonyTestCasesPermissionReadPhoneState[secondary_user]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='CtsTelephony',
        target_plan=None,
        bundle='arm',
        uri='LATEST',
        use_jdk9=True,
        timeout=32400)

parallel_simple(run_TS, machines)
