# 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.CtsPackage'
METADATA = {
    "contacts": ["arc-cts-eng@google.com"],
    "bug_component": "b:183644",
    "criteria": "A part of Android CTS",
}
ATTRIBUTES = 'suite:arc-cts-vm, suite:arc-cts-vm-stable, suite:arc-cts-vm-stable-arm-13'
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.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',
        timeout=28800)

parallel_simple(run_TS, machines)
