# Copyright 2019 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-vp8-weekly'
TIME = 'LONG'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:graphics_per-week'
MAX_RESULT_SIZE_KB = 1024 * 1024
PY_VERSION = 3

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

DOC = '''
Run the Tast graphics-video platformdecoding-vp8 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_weekly && graphics_video && !graphics_av_analysis && graphics_video_platformdecoding && graphics_video_vp8)'],
                 ignore_test_failures=True, max_run_sec=21600,
                 command_args=args)

parallel_simple(run, machines)
