# Copyright 2021 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.

AUTHOR = 'Chrome OS Team'
NAME = 'tast.pvs-graphics'
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:pvs-graphics'
MAX_RESULT_SIZE_KB = 1024 * 1024
PY_VERSION = 3

# tast.py uses binaries installed from autotest_server_package.tar.bz2.
REQUIRE_SSP = True

DOC = '''
This test suite is part of the Platform Validation Suite (go/cros-pvs)
and includes a collection of tast.gaphics tests that require no
special hardware to run.
'''
def run(machine):
    job.run_test('tast',
                 host=hosts.create_host(machine),
                 test_exprs=['graphics.Connector',
                            'graphics.DEQP',
                            'graphics.FPS',
                            'graphics.GLBench.hasty',
                            'graphics.ScreenshotCLI',
                            'graphics.ScreenshotChrome',
                            'graphics.Smoke.chrome',
                            'graphics.Smoke.platform'],
                 ignore_test_failures=False, max_run_sec=3600,
                 command_args=args,
                 clear_tmp=True)
parallel_simple(run, machines)
