# 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_CTS_Instant.x86.waivers'
ATTRIBUTES = 'suite:cts_P, suite:cts'
DEPENDENCIES = 'arc, cts_cpu_x86'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
DOC = 'Run preview version of the Android Compatibility Test Suite for Instant Apps (CTS Instant) using x86 ABI in the ARC++ container.'

def run_TS(machine):
    host_list = [hosts.create_host(machine)]
    job.run_test(
        'cheets_CTS_Instant',
        hosts=host_list,
        iterations=1,
        tag='x86.waivers',
        test_name='cheets_CTS_Instant.x86.waivers',
        run_template=['run', 'commandAndExit', 'cts-instant',
            # HACK. What we really want is including the following two cases.
            #   android.media.cts.AudioTrackTest#testPlayStaticData
            #   android.media.cts.MediaCodecListTest#testRequiredMediaCodecList
            # Since cts-instant does not support --include-filter, roughly
            # approximate by --module and --exclude of a few expensive classes
            # (taking 15 out of 20 minutes of CtsMediaTestCases.)
            '--module', 'CtsMediaTestCases',
            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioNativeTest',
            '--exclude-filter', 'CtsMediaTestCases android.media.cts.AudioRecordTest',
            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncodeVirtualDisplayWithCompositionTest',
            '--exclude-filter', 'CtsMediaTestCases android.media.cts.EncoderTest',
            '--exclude-filter', 'CtsMediaTestCases android.media.cts.MediaDrmClearkeyTest',
        ],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='cts-instant-dev',
        target_plan=None,
        load_waivers=False,
        bundle='x86',
        uri='gs://chromeos-partner-gts/android-cts_instant-6862722-linux_x86-x86.zip',
        retry_manual_tests=True,
        warn_on_test_retry=False,
        timeout=3600)

parallel_simple(run_TS, machines)
