# 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_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)
