# Copyright 2022 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from autotest_lib.client.common_lib import utils

AUTHOR = 'The ChromiumOS Authors'
NAME = 'tast.critical-crostini-hw-shard-1'
METADATA = {
    'contacts': ['tauto-core@google.com'],
    'bug_component': 'b:1034523', # ChromeOS > Test > Harness > Tauto
    'criteria': 'Tauto wrapper for specified tast tests',
}
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
DEPENDENCIES = 'servo_state:WORKING'
ATTRIBUTES = "suite:bvt-tast-cq-hw"
MAX_RESULT_SIZE_KB = 256 * 1024
PY_VERSION = 3

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

DOC = '''
Run the Tast must-pass Crostini 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 Crostini-dependent Tast-based 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.
'''

args_dict = utils.args_to_dict(args)
assert 'servo_state:WORKING' in DEPENDENCIES
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)

def run(machine):
    # TODO(crbug.com/992303): Fix android condition.
    job.run_test('tast',
                 host=hosts.create_host(machine, servo_args=servo_args),
                 test_exprs=['('
                             '"group:mainline" && '
                             '!"group:hw_agnostic" && '
                             '!informational && '
                             '!"group:crostini_slow" && '
                             '"name:crostini.*"'
                             ')'],
                 ignore_test_failures=False, max_run_sec=5400,
                 totalshards=6,
                 shardindex=1,
                 command_args=args,
                 clear_tpm=True,
                 retries=2)

parallel_simple(run, machines)
