# 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 = 'The ChromiumOS Authors'
NAME = 'tast.crosbolt-fsi-check'
METADATA = {
    'contacts': ['chromeos-performance-eng@google.com'],
    'bug_component': 'b:131602', # ChromeOS > Platform > System > HealthMonitoring > Crosbolt
    'criteria': 'Tauto wrapper for specified tast tests',
}
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:crosbolt_fsi_check'
MAX_RESULT_SIZE_KB = 1024 * 1024
PY_VERSION = 3

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

DOC = '''
Run the Tast tests used for FSI health check.

FSI health check is part of the process for launching devices.

See http://go/cros-fsi-overview to see the FSI health check process.
'''

def run(machine):
    job.run_test('tast',
                 host=hosts.create_host(machine),
                 test_exprs=['('
                             '"group:crosbolt" && '
                             'crosbolt_fsi_check && '
                             '!"dep:android*"'
                             ')'],
                 ignore_test_failures=True,
                 max_run_sec=3600,  # 1 hour.
                 command_args=args)

parallel_simple(run, machines)