# Copyright 2023 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
AUTHOR = 'ChromeOS SW Performance Team'
NAME = 'tast.cuj-experimental-10'
METADATA = {
    "contacts": ["cros-sw-perf@google.com"],
    "bug_component": 'b:1045832',  # ChromeOS > Software > Performance > TPS
    'criteria': 'Tauto wrapper for specified tast tests',
}
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:cuj_experimental_10'

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

DOC = '''
Run the CUJ Experimental test suite cuj_experimental_10.

This test may only be run on a selected subset of models.

This suite is used to run CUJ tast tests against a remote DUT.
'''

def run(machine):
    job.run_test('tast',
                 host=hosts.create_host(machine),
                 test_exprs=['("group:cuj" && cuj_experimental)'],
                 ignore_test_failures=True,
                 max_run_sec=3*60*60,  # 3 hours
                 totalshards=13,
                 shardindex=10,
                 command_args=args)
parallel_simple(run, machines)
