# 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_R.x86.CtsMediaTestCases.exclude-GLView.ctshardware'
ATTRIBUTES = 'suite:cts-hardware'
DEPENDENCIES = 'arc, cts_abi_x86'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
PY_VERSION = 3
PRIORITY = 50
DOC = 'Run module CtsMediaTestCases.exclude-GLView of the Android Compatibility Test Suite (CTS) using x86 ABI in the ARC++ container.'

def run_TS(machine):
    host_list = [hosts.create_host(machine)]
    job.run_test(
        'cheets_CTS_R',
        hosts=host_list,
        iterations=1,
        needs_push_media=True,
        tag='x86.CtsMediaTestCases.exclude-GLView.ctshardware',
        test_name='cheets_CTS_R.x86.CtsMediaTestCases.exclude-GLView.ctshardware',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsMediaTestCases', '--exclude-filter', 'CtsMediaTestCases android.media.cts.DecodeAccuracyTest#testGLViewDecodeAccuracy', '--exclude-filter', 'CtsMediaTestCases android.media.cts.DecodeAccuracyTest#testGLViewLargerHeightDecodeAccuracy', '--exclude-filter', 'CtsMediaTestCases android.media.cts.DecodeAccuracyTest#testGLViewLargerWidthDecodeAccuracy', '--exclude-filter', 'CtsMediaTestCases android.media.cts.MediaExtractorTest#testProgramStreamExtraction', '--exclude-filter', 'CtsMediaTestCases[instant] android.media.cts.MediaExtractorTest#testProgramStreamExtraction'],
        retry_template=['run', 'commandAndExit', 'retry', '--retry', '{session_id}'],
        target_module='CtsMediaTestCases',
        target_plan=None,
        bundle='x86',
        retry_manual_tests=True,
        use_jdk9=True,
        warn_on_test_retry=False,
        timeout=36000)

parallel_simple(run_TS, machines)
