# 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.testGLViewLargerHeightDecodeAccuracy'
ATTRIBUTES = 'suite:cts'
DEPENDENCIES = 'arc, cts_abi_x86'
JOB_RETRIES = 1
TEST_TYPE = 'server'
TIME = 'MEDIUM'
MAX_RESULT_SIZE_KB = 512000
PRIORITY = 50
DOC = 'Run module CtsMediaTestCases.testGLViewLargerHeightDecodeAccuracy 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.testGLViewLargerHeightDecodeAccuracy',
        test_name='cheets_CTS_R.x86.CtsMediaTestCases.testGLViewLargerHeightDecodeAccuracy',
        run_template=['run', 'commandAndExit', 'cts', '--include-filter', 'CtsMediaTestCases android.media.cts.DecodeAccuracyTest#testGLViewLargerHeightDecodeAccuracy'],
        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=3600)

parallel_simple(run_TS, machines)
