# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

AUTHOR = 'Chromium OS team'
NAME = 'tast.skylab-staging'
ATTRIBUTES = "suite:skylab_staging_test"
TIME = 'MEDIUM'
TEST_TYPE = 'Server'

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

DOC = '''
Run example Tast tests that are expected to all pass.

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 some example local and remote Tast tests that exercise the basic
Tast framework and are all expected to pass.
'''

def run(machine):
    job.run_test('tast',
                 host=hosts.create_host(machine),
                 test_exprs=[
                        'example.Pass',
                        'example.Perf',
                        'example.ReconnectToDUT',
                 ], command_args=args)

parallel_simple(run, machines)
