# 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.stress'
TIME = 'LONG'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:stress'
MAX_RESULT_SIZE_KB = 50 * 1024

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

DOC = '''
Run the Tast stress 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 stress tests that are required to pass
against a remote DUT. It fails if any individual Tast tests fail.

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

def run(machine):
    job.run_test('tast',
                 host=hosts.create_host(machine),
                 test_exprs=['(!disabled && "group:stress")'],
                 ignore_test_failures=False, max_run_sec=3600,
                 command_args=args)

parallel_simple(run, machines)
