# 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_ServiceSearchAttributeRequest'
ATTRIBUTES = ('suite:bluetooth, suite:bluetooth_qualification,'
              '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 executing Service Search
Attribute transaction.

The tester sends a Service Search Attribute Request to the DUT, checking:
* non-existing Service, existing Attribute
* existing Service, non-existing Attribute
* non-existing Service, non-existing Attribute
* existing Service, existing Attribute
* various specific attributes, listed in Test Specification
* correctness of continuation state behavior
* responses to invalid requests

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

parallel_simple(run, machines)
