# 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_r2.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, 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_r2.all.GtsAccountsHostTestCases_-_GtsEdiHostTestCases',
        test_name='cheets_GTS.8.0_r2.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', '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='gs://chromeos-arc-images/cts/bundle/android-gts-8-R2-P-6955212.zip',
        use_jdk9=True,
        # This module has a known waived abort bug (b/173331969). As long as the
        # executed test count matches the known number, assume all tests ran.
        executable_test_count=[161, 322, 483, 644],
        timeout=86400)

parallel_simple(run_TS, machines)
