# 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.manual'
TIME = 'SHORT'
TEST_CLASS = 'bluetooth'
TEST_TYPE = 'Server'
DEPENDENCIES = 'bluetooth'

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.

This is the manual, interactive, version of bluetooth_Sanity_Discovery;
whereas running that test will use an automated Bluetooth tester, running this
test will open a web browser on the device with testing instructions and
interactive prompts where required.

You will need a second device in order to perform those tests and verify the
results according to the instructions.
"""

from autotest_lib.server.cros.bluetooth import bluetooth_tester


def run(machine):
    device_host = hosts.create_host(machine)
    job.run_test('bluetooth_Sanity_Discovery',
                 device_host=device_host,
                 tester_host=None,
                 interactive=True)


parallel_simple(run, machines)
