# 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.informational-android'
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:bvt-tast-informational, suite:chrome-informational'
MAX_RESULT_SIZE_KB = 1024 * 1024
JOB_RETRIES = 0  # Do not retry informational tests.

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

DOC = '''
Run the Tast informational ARC test suite.

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 Android-dependent Tast-based informational tests against a remote
DUT. It only reports failure if the tast process itself (rather than individual
Tast tests) fails.

See http://go/tast-failures for information about investigating failures.
'''

def run(machine):
    # TODO(crbug.com/992303): Fix android condition.
    job.run_test('tast',
                 host=hosts.create_host(machine),
                 test_exprs=['('
                             '"group:mainline" && '
                             'informational && '
                             '!"name:crostini.*" && '
                             '!"dep:plugin_vm" && '
                             '"dep:android*"'
                             ')'],
                 ignore_test_failures=True,
                 max_run_sec=3*60*60,
                 command_args=args)

parallel_simple(run, machines)
