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

DOC = """
Verify that the device can be discovered from 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_Discoverable;
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_Discoverable',
                 device_host=device_host,
                 tester_host=None,
                 interactive=True)


parallel_simple(run, machines)
