# Copyright 2018 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-system-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'
# System tests can't be broken by Android or Chrome changes, so these tests
# don't run in the PFQs.
ATTRIBUTES = 'suite:bvt-tast-cq, suite:cft-nightly'
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 system 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 non-Chrome-dependent and non-Android-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):
    job.run_test('tast',
                 host=hosts.create_host(machine, servo_args=servo_args),
                 test_exprs=['('
                             '"group:mainline" && '
                             '!informational && '
                             '!"dep:chrome" && '
                             '!"name:crostini.*" && '
                             '!"dep:android*"'
                             ')'],
                 ignore_test_failures=False, max_run_sec=3600,
                 totalshards=3,
                 shardindex=1,
                 command_args=args,
                 clear_tpm=True,
                 retries=2)

parallel_simple(run, machines)
