# 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.crosbolt-parallels-perbuild'
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
# TODO(crbug.com/1154072): Remove from 'suite:crosbolt_perf_perbuild' once the
# parallels suite is scheduled.
ATTRIBUTES = 'suite:crosbolt_perf_perbuild, suite:crosbolt_perf_parallels_perbuild'
MAX_RESULT_SIZE_KB = 1024 * 1024

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

DOC = '''
Run the Tast crosbolt performance test suite for Parallels.

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 Tast-based crosbolt performance tests against a remote DUT.

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:crosbolt" && '
                             'crosbolt_perbuild && '
                             '"dep:plugin_vm"'
                             ')'],
                 ignore_test_failures=True,
                 max_run_sec=7200,  # 2 hours.
                 command_args=args)

parallel_simple(run, machines)
