# 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 = 'cros-engprod-muc'
NAME = 'tast.duop-hardware-shard-3'
METADATA = {
    'contacts': ['kamilszarek@google.com', 'cros-engprod-muc@google.com'],
    'bug_component': 'b:1034523', # ChromeOS > Test > Harness > Tauto
    'criteria': 'Tauto wrapper for specified tast tests',
}
TIME = 'LONG'
TEST_TYPE = 'Server'
DEPENDENCIES = 'servo_state:WORKING'
ATTRIBUTES = 'suite:duop_hardware_shard_3'
MAX_RESULT_SIZE_KB = 512 * 1024
PY_VERSION = 3
JOB_RETRIES = 0

DOC = '''
This suite runs the tests in Tast to provide results based on various hardware configurations. go/g3-duop
'''

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:hardware" && '
                 '!"group:criticalstaging" && '  # The critical staging suite takes precedence.
                 '!("group:mainline" && !informational)'  # The critical-chrome suite takes precedence.
                 ')'],
                 ignore_test_failures=True,
                 max_run_sec=3*60*60 - 15*60,
                 totalshards=4,
                 shardindex=3,
                 command_args=args)

parallel_simple(run, machines)
