# 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.internal.arm.CtsPackage'
ATTRIBUTES = 'suite:arc-cts, suite:arc-cts-r, suite:arc-cts-unibuild'
DEPENDENCIES = 'arc'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
PY_VERSION = 3
DOC = 'Run module CtsPackageInstallAppOpDefaultTestCases, CtsPackageInstallAppOpDefaultTestCases[instant], CtsPackageInstallAppOpDefaultTestCases[secondary_user], CtsPackageInstallAppOpDeniedTestCases, CtsPackageInstallAppOpDeniedTestCases[instant], CtsPackageInstallAppOpDeniedTestCases[secondary_user], CtsPackageInstallTestCases, CtsPackageInstallTestCases[instant], CtsPackageInstallTestCases[secondary_user], CtsPackageInstallerTapjackingTestCases, CtsPackageInstallerTapjackingTestCases[secondary_user], CtsPackageUninstallTestCases, CtsPackageUninstallTestCases[secondary_user], CtsPackageWatchdogTestCases, CtsPackageWatchdogTestCases[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='internal.arm.CtsPackage',
        test_name='cheets_CTS_R.internal.arm.CtsPackage',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsPackageInstallAppOpDefaultTestCases', '--include-filter', 'CtsPackageInstallAppOpDefaultTestCases[instant]', '--include-filter', 'CtsPackageInstallAppOpDefaultTestCases[secondary_user]', '--include-filter', 'CtsPackageInstallAppOpDeniedTestCases', '--include-filter', 'CtsPackageInstallAppOpDeniedTestCases[instant]', '--include-filter', 'CtsPackageInstallAppOpDeniedTestCases[secondary_user]', '--include-filter', 'CtsPackageInstallTestCases', '--include-filter', 'CtsPackageInstallTestCases[instant]', '--include-filter', 'CtsPackageInstallTestCases[secondary_user]', '--include-filter', 'CtsPackageInstallerTapjackingTestCases', '--include-filter', 'CtsPackageInstallerTapjackingTestCases[secondary_user]', '--include-filter', 'CtsPackageUninstallTestCases', '--include-filter', 'CtsPackageUninstallTestCases[secondary_user]', '--include-filter', 'CtsPackageWatchdogTestCases', '--include-filter', 'CtsPackageWatchdogTestCases[secondary_user]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='CtsPackage',
        target_plan=None,
        bundle='arm',
        uri='DEV',
        use_jdk9=True,
        timeout=28800)

parallel_simple(run_TS, machines)
