# Copyright 2022 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_T.internal.arm.all.CtsHiddenApiBlocklistApi27TestCases_-_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-arm-12'
DEPENDENCIES = 'arc'
HW_DEPS = ['android-vm-tm']
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_T',
        hosts=host_list,
        iterations=1,
        max_retry=9,
        tag='internal.arm.all.CtsHiddenApiBlocklistApi27TestCases_-_CtsHostsideWebViewTests',
        test_name='cheets_CTS_T.internal.arm.all.CtsHiddenApiBlocklistApi27TestCases_-_CtsHostsideWebViewTests',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsHiddenApiBlocklistApi27TestCases', '--include-filter', 'CtsHiddenApiBlocklistApi27TestCases[secondary_user]', '--include-filter', 'CtsHiddenApiBlocklistApi28TestCases', '--include-filter', 'CtsHiddenApiBlocklistApi28TestCases[secondary_user]', '--include-filter', 'CtsHiddenApiBlocklistCurrentApiTestCases', '--include-filter', 'CtsHiddenApiBlocklistCurrentApiTestCases[secondary_user]', '--include-filter', 'CtsHiddenApiBlocklistDebugClassTestCases', '--include-filter', 'CtsHiddenApiBlocklistDebugClassTestCases[secondary_user]', '--include-filter', 'CtsHiddenApiBlocklistTestApiTestCases', '--include-filter', 'CtsHiddenApiBlocklistTestApiTestCases[secondary_user]', '--include-filter', 'CtsHiddenApiKillswitchDebugClassTestCases', '--include-filter', 'CtsHiddenApiKillswitchDebugClassTestCases[instant]', '--include-filter', 'CtsHiddenApiKillswitchDebugClassTestCases[secondary_user]', '--include-filter', 'CtsHiddenApiKillswitchSdkListTestCases', '--include-filter', 'CtsHiddenApiKillswitchSdkListTestCases[instant]', '--include-filter', 'CtsHiddenApiKillswitchSdkListTestCases[secondary_user]', '--include-filter', 'CtsHiddenApiKillswitchWildcardTestCases', '--include-filter', 'CtsHiddenApiKillswitchWildcardTestCases[instant]', '--include-filter', 'CtsHiddenApiKillswitchWildcardTestCases[secondary_user]', '--include-filter', 'CtsHostTzDataTests', '--include-filter', 'CtsHostTzDataTests[secondary_user]', '--include-filter', 'CtsHostsideHiddenapiTests', '--include-filter', 'CtsHostsideHiddenapiTests[instant]', '--include-filter', 'CtsHostsideHiddenapiTests[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.CtsHiddenApiBlocklistApi27TestCases_-_CtsHostsideWebViewTests',
        target_plan=None,
        bundle='arm',
        uri='LATEST',
        timeout=172800)

parallel_simple(run_TS, machines)
