# Copyright 2024 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

# TODO: Convert this Tast first class (TFC) after Satlab support TFC.

AUTHOR = 'Ambalavanan M M <ambalavanan.m.m@intel.com>'
NAME = 'tast.intel-dp'
METADATA = {
    'contacts': ['intel.chrome.automation.team@intel.com', 'ambalavanan.m.m@intel.com'],
    'bug_component': 'b:157291', # ChromeOS > External > Intel
    'criteria': 'Tauto wrapper for specified tast tests',
}
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:intel-dp'
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 Intel dp Tast tests.

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 Intel dp Tast 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=['("group:intel-dp")'],
                 ignore_test_failures=False, max_run_sec=2400,
                 clear_tpm=False,
                 command_args=args)

parallel_simple(run, machines)
