# 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 (chromeos-sw-engprod@google.com)'
NAME = 'tast.nearby-share-floss'
METADATA = {
    'contacts': ['chromeos-sw-engprod@google.com', 'chromeos-cross-device-eng@google.com'],
    "bug_component": "b:167317", # ChromeOS > Platform > Connectivity > Bluetooth
    'criteria': 'Tauto wrapper for specified tast tests',
}
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:nearby-share-floss'
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 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:cross-device" && "cross-device_nearbyshare" && "cross-device_floss")'],
                 ignore_test_failures=True, max_run_sec=10800,
                 command_args=args,
                 varslist=[androidcomp])
parallel_simple(run, machines)
