# Copyright 2020 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_R.8.0_r4.tradefed-run-collect-tests-only-internal'
ATTRIBUTES = 'suite:arc-cts-r, suite:arc-gts, suite:arc-gts-qual'
DEPENDENCIES = 'arc'
JOB_RETRIES = 0
TEST_TYPE = 'server'
TIME = 'LENGTHY'
MAX_RESULT_SIZE_KB = 512000
DOC = 'Run all 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_R',
        hosts=host_list,
        iterations=1,
        max_retry=0,
        tag='8.0_r4.tradefed-run-collect-tests-only-internal',
        test_name='cheets_GTS_R.8.0_r4.tradefed-run-collect-tests-only-internal',
        authkey='gs://chromeos-arc-images/cts/bundle/gts-arc.json',
        run_template=['run', 'commandAndExit', 'collect-tests-only', '--disable-reboot', '--module-arg', 'GtsYouTubeTestCases:skip-media-download:true'],
        retry_template=None,
        target_module=None,
        target_plan=None,
        uri='LATEST',
        use_jdk9=True,
        # This module has a known crash bug (b/189040205). As long as the
        # executed test count matches the known number, assume all tests ran.
        executable_test_count=[3726, 7452],
        timeout=1800)

parallel_simple(run_TS, machines)
