# Copyright 2016 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_GTS.8.0_r3.all.GtsAccountsHostTestCases_-_GtsEdiHostTestCases'
ATTRIBUTES = 'suite:arc-gts-qual'
DEPENDENCIES = 'arc'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 307200
DOC = 'Run module GtsAccountsHostTestCases, GtsAdminTestCases, GtsAfwTestCases, GtsAndroidAutoDeviceTestCases, GtsAppBlacklistDeviceTestCases, GtsAppTestCases, GtsAppVisibilityDeviceTestCases, GtsArtManagerHostTestCases, GtsAssistIntentTestCases, GtsAssistantHostTestCases, GtsAssistantMicHostTestCases, GtsAssistantWorkProfileHostTestCases, GtsAudioTestCases, GtsBackupHostTestCases, GtsBackupTestCases, GtsBootHealthHostTestCases, GtsBootStatsTestCases, GtsCNGCoreTestCases, GtsCallLogTestCases, GtsCameraTestCases, GtsCastHostTestCases, GtsContactsAppDeviceTestCases, GtsContactsTest, GtsContentHostTestCases, GtsContentTestCases, GtsContextHubPermissionDeviceTestCases, GtsDebugfsMountTestCases, GtsDeviceConfigTestCases, GtsDexModuleRegistrationTestCases, GtsDialerAudioTestCases, GtsDialerDeviceTestCases, GtsDozeDeviceTestCases, GtsDozeHostSideTestCases, GtsDuoReadyTestCases, GtsEdiHostTestCases of the Android Google Test Suite (GTS) in the ARC++ container.'

def run_TS(machine):
    host_list = [hosts.create_host(machine)]
    job.run_test(
        'cheets_GTS',
        hosts=host_list,
        iterations=1,
        max_retry=9,
        tag='8.0_r3.all.GtsAccountsHostTestCases_-_GtsEdiHostTestCases',
        test_name='cheets_GTS.8.0_r3.all.GtsAccountsHostTestCases_-_GtsEdiHostTestCases',
        authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
        run_template=['run', 'commandAndExit', 'gts', '--include-filter', 'GtsAccountsHostTestCases', '--include-filter', 'GtsAdminTestCases', '--include-filter', 'GtsAfwTestCases', '--include-filter', 'GtsAndroidAutoDeviceTestCases', '--include-filter', 'GtsAppBlacklistDeviceTestCases', '--include-filter', 'GtsAppTestCases', '--include-filter', 'GtsAppVisibilityDeviceTestCases', '--include-filter', 'GtsArtManagerHostTestCases', '--include-filter', 'GtsAssistIntentTestCases', '--include-filter', 'GtsAssistantHostTestCases', '--include-filter', 'GtsAssistantMicHostTestCases', '--include-filter', 'GtsAssistantWorkProfileHostTestCases', '--include-filter', 'GtsAudioTestCases', '--include-filter', 'GtsBackupHostTestCases', '--include-filter', 'GtsBackupTestCases', '--include-filter', 'GtsBootHealthHostTestCases', '--include-filter', 'GtsBootStatsTestCases', '--include-filter', 'GtsCNGCoreTestCases', '--include-filter', 'GtsCallLogTestCases', '--include-filter', 'GtsCameraTestCases', '--include-filter', 'GtsCastHostTestCases', '--include-filter', 'GtsContactsAppDeviceTestCases', '--include-filter', 'GtsContactsTest', '--include-filter', 'GtsContentHostTestCases', '--include-filter', 'GtsContentTestCases', '--include-filter', 'GtsContextHubPermissionDeviceTestCases', '--include-filter', 'GtsDebugfsMountTestCases', '--include-filter', 'GtsDeviceConfigTestCases', '--include-filter', 'GtsDexModuleRegistrationTestCases', '--include-filter', 'GtsDialerAudioTestCases', '--include-filter', 'GtsDialerDeviceTestCases', '--include-filter', 'GtsDozeDeviceTestCases', '--include-filter', 'GtsDozeHostSideTestCases', '--include-filter', 'GtsDuoReadyTestCases', '--include-filter', 'GtsEdiHostTestCases', '--ignore-business-logic-failure'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='all.GtsAccountsHostTestCases_-_GtsEdiHostTestCases',
        target_plan=None,
        uri='LATEST',
        use_jdk9=True,
        timeout=86400)

parallel_simple(run_TS, machines)
