# 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,wificell'

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)
