# 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-dev'
METADATA = {
    'contacts': ['chromeos-sw-engprod@google.com', 'chromeos-cross-device-eng@google.com'],
    'bug_component': 'b:1131838',
    'criteria': 'Tauto wrapper for specified tast tests',
}
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:nearby-share-dev'
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 with dev Android NS.'''

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-dev")'],
                 ignore_test_failures=True, max_run_sec=10800,
                 command_args=args,
                 varslist=[androidcomp])
parallel_simple(run, machines)
