# 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'
ATTRIBUTES = 'suite:bluetooth, suite:bluetooth_e2e'
TIME = 'SHORT'
TEST_CLASS = 'bluetooth'
TEST_TYPE = 'Server'
DEPENDENCIES = 'bluetooth, chameleon:bt_peer'
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, DocumentationURL, ClientExecutableURL,
IconURL, ProtocolDescriptorList, VersionNumberList, ServiceDatabaseState,
BluetoothProfileDescriptorList, AdditionalProtocolDescriptorLists, ServiceID,
ServiceRecordState, ServiceInfoTime, LanguageBaseAttributeIdList,
ServiceAvailability, ServiceName, ServiceDescription, ProviderName.
It also checks that responses with continuation state work properly,
as well as requests with non-existing attributes and various invalid requests.

This test covers the Bluetooth SIG test cases:
TP/SERVER/SA/BV-01-C
TP/SERVER/SA/BV-03-C
TP/SERVER/SA/BV-04-C
TP/SERVER/SA/BV-05-C
TP/SERVER/SA/BV-06-C
TP/SERVER/SA/BV-07-C
TP/SERVER/SA/BV-08-C
TP/SERVER/SA/BV-09-C
TP/SERVER/SA/BV-10-C
TP/SERVER/SA/BV-11-C
TP/SERVER/SA/BV-12-C
TP/SERVER/SA/BV-13-C
TP/SERVER/SA/BV-14-C
TP/SERVER/SA/BV-15-C
TP/SERVER/SA/BV-16-C
TP/SERVER/SA/BV-17-C
TP/SERVER/SA/BV-18-C
TP/SERVER/SA/BV-19-C
TP/SERVER/SA/BV-20-C
TP/SERVER/SA/BV-21-C
TP/SERVER/SA/BI-01-C
TP/SERVER/SA/BI-02-C
TP/SERVER/SA/BI-03-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_ServiceAttributeRequest',
                 device_host=device_host,
                 tester_host=tester_host,
                 interactive=False)

parallel_simple(run, machines)
