# 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 = 'arakhov@chromium.org'
NAME = 'bluetooth_SDP_ServiceBrowse'
ATTRIBUTES = "suite:bluetooth, suite:bluetooth_qualification"
TIME = 'SHORT'
TEST_CLASS = 'bluetooth'
TEST_TYPE = 'Server'
DEPENDENCIES = 'bluetooth, chameleon:bt_peer'

DOC = """
Verify that the IUT behave correct during Service Browse procedure.

Two tests use different requests to execute Service Browse procedure:
one uses Service Search Request and Service Attribute Request,
the other one uses Service Search Attribute Request.

This test covers the Bluetooth SIG test cases:
TP/SERVER/BRW/BV-01-C
TP/SERVER/BRW/BV-02-C

"""

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_SDP_ServiceBrowse',
                 device_host=device_host,
                 tester_host=tester_host,
                 interactive=False)

parallel_simple(run, machines)
