# Copyright (c) 2013 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 = 'keybuk@chromium.org'
NAME = 'bluetooth_Sanity_Discovery'
ATTRIBUTES = "suite:bluetooth, suite:bluetooth_sanity"
SUITE = 'bluetooth,bluetooth_sanity'
TIME = 'SHORT'
TEST_CLASS = 'bluetooth'
TEST_TYPE = 'Server'
DEPENDENCIES = 'bluetooth,wificell'

DOC = """
Verify that the device can discover another Bluetooth device.

This is a useful sanity check because it tests basic functionality of the
radio and host subsystem.
"""

from autotest_lib.server.cros.bluetooth import bluetooth_tester
from autotest_lib.server import utils


args_dict = utils.args_to_dict(args)

def run(machine):
    device_host = hosts.create_host(machine)
    tester_host = bluetooth_tester.create_host_from(device_host, args=args_dict)
    job.run_test('bluetooth_Sanity_Discovery',
                 device_host=device_host,
                 tester_host=tester_host,
                 interactive=False)


parallel_simple(run, machines)
