# 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.arm.all.CtsAssistTestCases_-_CtsBlobStoreTestHelper'
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-2'
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,
        max_retry=9,
        tag='internal.arm.all.CtsAssistTestCases_-_CtsBlobStoreTestHelper',
        test_name='cheets_CTS_R.internal.arm.all.CtsAssistTestCases_-_CtsBlobStoreTestHelper',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsAssistTestCases', '--include-filter', 'CtsAssistTestCases[instant]', '--include-filter', 'CtsAssistTestCases[secondary_user]', '--include-filter', 'CtsAtomicInstallTestCases', '--include-filter', 'CtsAtomicInstallTestCases[secondary_user]', '--include-filter', 'CtsAtraceHostTestCases', '--include-filter', 'CtsAtraceHostTestCases[instant]', '--include-filter', 'CtsAtraceHostTestCases[secondary_user]', '--include-filter', 'CtsAttentionServiceDeviceTestCases', '--include-filter', 'CtsAttentionServiceDeviceTestCases[secondary_user]', '--include-filter', 'CtsBackgroundRestrictionsTestCases', '--include-filter', 'CtsBackgroundRestrictionsTestCases[instant]', '--include-filter', 'CtsBackgroundRestrictionsTestCases[secondary_user]', '--include-filter', 'CtsBackupHostTestCases', '--include-filter', 'CtsBackupTestCases', '--include-filter', 'CtsBatterySavingTestCases', '--include-filter', 'CtsBatterySavingTestCases[secondary_user]', '--include-filter', 'CtsBionicAppTestCases', '--include-filter', 'CtsBionicAppTestCases[instant]', '--include-filter', 'CtsBionicAppTestCases[secondary_user]', '--include-filter', 'CtsBionicTestCases', '--include-filter', 'CtsBionicTestCases[secondary_user]', '--include-filter', 'CtsBlobStoreHostTestCases', '--include-filter', 'CtsBlobStoreHostTestCases[secondary_user]', '--include-filter', 'CtsBlobStoreHostTestHelper', '--include-filter', 'CtsBlobStoreHostTestHelper[secondary_user]', '--include-filter', 'CtsBlobStoreTestCases', '--include-filter', 'CtsBlobStoreTestCases[secondary_user]', '--include-filter', 'CtsBlobStoreTestHelper', '--include-filter', 'CtsBlobStoreTestHelperDiffSig', '--include-filter', 'CtsBlobStoreTestHelperDiffSig2', '--include-filter', 'CtsBlobStoreTestHelperDiffSig2[secondary_user]', '--include-filter', 'CtsBlobStoreTestHelperDiffSig[secondary_user]', '--include-filter', 'CtsBlobStoreTestHelper[secondary_user]', '--logcat-on-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.CtsAssistTestCases_-_CtsBlobStoreTestHelper',
        target_plan=None,
        bundle='arm',
        uri='LATEST',
        timeout=172800)

parallel_simple(run_TS, machines)
