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

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

AUTHOR = 'n/a'
NAME = 'cheets_CTS_R.internal.x86.all.CtsHiddenApiBlacklistApi27TestCases_-_CtsHostsideWebViewTests'
METADATA = {
    "contacts": ["arc-cts-eng@google.com"],
    "bug_component": "b:183644",
    "criteria": "A part of Android CTS",
}
ATTRIBUTES = 'suite:arc-cts-qual, suite:arc-cts-qual-x86-8'
DEPENDENCIES = 'arc, cts_abi_x86'
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,
        max_retry=9,
        tag='internal.x86.all.CtsHiddenApiBlacklistApi27TestCases_-_CtsHostsideWebViewTests',
        test_name='cheets_CTS_R.internal.x86.all.CtsHiddenApiBlacklistApi27TestCases_-_CtsHostsideWebViewTests',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsHiddenApiBlacklistApi27TestCases', '--include-filter', 'CtsHiddenApiBlacklistApi27TestCases[secondary_user]', '--include-filter', 'CtsHiddenApiBlacklistApi28TestCases', '--include-filter', 'CtsHiddenApiBlacklistApi28TestCases[secondary_user]', '--include-filter', 'CtsHiddenApiBlacklistCurrentApiTestCases', '--include-filter', 'CtsHiddenApiBlacklistCurrentApiTestCases[secondary_user]', '--include-filter', 'CtsHiddenApiBlacklistDebugClassTestCases', '--include-filter', 'CtsHiddenApiBlacklistDebugClassTestCases[secondary_user]', '--include-filter', 'CtsHiddenApiBlacklistTestApiTestCases', '--include-filter', 'CtsHiddenApiBlacklistTestApiTestCases[secondary_user]', '--include-filter', 'CtsHiddenApiKillswitchDebugClassTestCases', '--include-filter', 'CtsHiddenApiKillswitchDebugClassTestCases[instant]', '--include-filter', 'CtsHiddenApiKillswitchDebugClassTestCases[secondary_user]', '--include-filter', 'CtsHiddenApiKillswitchWhitelistTestCases', '--include-filter', 'CtsHiddenApiKillswitchWhitelistTestCases[instant]', '--include-filter', 'CtsHiddenApiKillswitchWhitelistTestCases[secondary_user]', '--include-filter', 'CtsHiddenApiKillswitchWildcardTestCases', '--include-filter', 'CtsHiddenApiKillswitchWildcardTestCases[instant]', '--include-filter', 'CtsHiddenApiKillswitchWildcardTestCases[secondary_user]', '--include-filter', 'CtsHostTzDataTests', '--include-filter', 'CtsHostTzDataTests[secondary_user]', '--include-filter', 'CtsHostsideNetworkTests', '--include-filter', 'CtsHostsideNetworkTests[instant]', '--include-filter', 'CtsHostsideNetworkTests[secondary_user]', '--include-filter', 'CtsHostsideNumberBlockingTestCases', '--include-filter', 'CtsHostsideNumberBlockingTestCases[secondary_user]', '--include-filter', 'CtsHostsideTvTests', '--include-filter', 'CtsHostsideTvTests[secondary_user]', '--include-filter', 'CtsHostsideWebViewTests', '--include-filter', 'CtsHostsideWebViewTests[instant]', '--include-filter', 'CtsHostsideWebViewTests[secondary_user]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.CtsHiddenApiBlacklistApi27TestCases_-_CtsHostsideWebViewTests',
        target_plan=None,
        bundle='x86',
        uri='LATEST',
        timeout=172800)

parallel_simple(run_TS, machines)
