# Copyright 2022 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
AUTHOR = 'ChromeOS SW Engprod Team'
NAME = 'tast.nearby-share-arc'
METADATA = {
        "contacts": ["chromeos-sw-engprod@google.com", "arc-app-dev@google.com"],
        "bug_component": "b:537221", # ChromeOS > Software > ARC++ > Framework > Chrome Integration
        "criteria": "Run Tast tests for ARC++ Nearby Share"
}
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:nearby-share-arc'
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 ARC++ Nearby Share test suite.'''

from autotest_lib.server.cros.crossdevice import cross_device_util

def run(machine):
    # Get host objects for each device.
    host = hosts.create_host(machine)
    companions = hosts.create_companion_hosts(companion_hosts)
    phone = companions[0]

    androidcomp = "android.companions=%s:%s:model" % (phone.associated_hostname, phone.serial_number)

    job.run_test('tast',
                 host=host,
                 test_exprs=['("group:nearby-share-arc" && !"nearby-share-arc_fusebox")'],
                 ignore_test_failures=True, max_run_sec=10800,
                 command_args=args,
                 varslist=[androidcomp])
parallel_simple(run, machines)
