# 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 = 'Chromium OS team'
NAME = 'tast.graphics-video-platformdecoding-h264-nightly'
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:graphics_per-day'
MAX_RESULT_SIZE_KB = 1024 * 1024

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

DOC = '''
Run the Tast graphics-video platformdecoding h264 test suite.

Tast is an integration-testing framework analagous to the test-running portion
of Autotest. See https://chromium.googlesource.com/chromiumos/platform/tast/ for
more information.

This test runs Tast-based graphics-video tests against a remote DUT.

See http://go/tast-failures for information about investigating failures.
'''

def run(machine):
    host=hosts.create_host(machine)
    host.reboot()
    job.run_test('tast',
                 host=host,
                 test_exprs=['("group:graphics" && graphics_nightly && graphics_video && !graphics_av_analysis && graphics_video_platformdecoding && graphics_video_h264)'],
                 ignore_test_failures=True, max_run_sec=21600,
                 command_args=args)

parallel_simple(run, machines)
