# 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_ServiceAttributeRequest'
SUITE = 'bluetooth,bluetooth_qualification'
TIME = 'SHORT'
TEST_CLASS = 'bluetooth'
TEST_TYPE = 'Server'
DEPENDENCIES = 'bluetooth,wificell'

DOC = """
Verify the correct behaviour of the device when searching for attributes of
services.

The tester sends Service Search Request and Service Attribute Request to the DUT
to ensure that it is able to response with different attributes:
ServiceRecordHandle, BrowseGroupList.

This test covers the Bluetooth SIG test cases:
TP/SERVER/SA/BV-01-C
TP/SERVER/SA/BV-08-C
"""

from autotest_lib.server.cros.bluetooth import bluetooth_tester


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

parallel_simple(run, machines)
