blob: 07258255d2c409a3d7fc71fdb213e12eb993273e [file] [log] [blame]
#!/usr/bin/env python3
#
# Copyright (C) 2019 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
"""
Basic SDP Tests.
This only requires a single bluetooth_device
and exercises adding/removing services, initialization, and
adding search records.
"""
from acts import signals
from acts.base_test import BaseTestClass
from acts.test_utils.abstract_devices.bluetooth_device import AndroidBluetoothDevice
from acts.test_utils.abstract_devices.bluetooth_device import FuchsiaBluetoothDevice
from acts.test_utils.abstract_devices.bluetooth_device import create_bluetooth_device
from acts.test_utils.bt.bt_constants import bt_attribute_values
from acts.test_utils.bt.bt_constants import sig_uuid_constants
from acts.test_utils.fuchsia.sdp_records import sdp_pts_record_list
class SdpSetupTest(BaseTestClass):
def setup_class(self):
super(SdpSetupTest, self).setup_class()
if 'dut' in self.user_params:
if self.user_params['dut'] == 'fuchsia_devices':
self.dut = create_bluetooth_device(self.fuchsia_devices[0])
elif self.user_params['dut'] == 'android_devices':
self.dut = create_bluetooth_device(self.android_devices[0])
else:
raise ValueError('Invalid DUT specified in config. (%s)' %
self.user_params['dut'])
else:
# Default is an fuchsia device
self.dut = create_bluetooth_device(self.fuchsia_devices[0])
self.dut.initialize_bluetooth_controller()
def setup_test(self):
self.dut.sdp_clean_up()
def cleanup_class(self):
self.dut.sdp_clean_up()
def test_init(self):
result = self.dut.sdp_init()
if result.get("error") is None:
raise signals.TestPass("Success")
else:
raise signals.TestFailure(
"Failed to initialize SDP with {}".format(result.get("error")))
def test_add_service(self):
self.dut.sdp_init()
result = self.dut.sdp_add_service(sdp_pts_record_list[0])
if result.get("error") is not None:
raise signals.TestFailure(
"Failed to add SDP service record: {}".format(
result.get("error")))
else:
raise signals.TestPass("Success")
def test_malformed_service(self):
self.dut.sdp_init()
malformed_record = {'malformed_sdp_record_input': ["1101"]}
result = self.dut.sdp_add_service(malformed_record)
if result.get("error") is not None:
raise signals.TestPass("Successfully failed with: {}".format(
result.get("error")))
else:
raise signals.TestFailure(
"Expected failure of adding SDP record: {}".format(
malformed_record))
def test_add_search(self):
attributes = [
bt_attribute_values['ATTR_PROTOCOL_DESCRIPTOR_LIST'],
bt_attribute_values['ATTR_SERVICE_CLASS_ID_LIST'],
bt_attribute_values['ATTR_BLUETOOTH_PROFILE_DESCRIPTOR_LIST'],
bt_attribute_values['ATTR_A2DP_SUPPORTED_FEATURES'],
]
self.dut.sdp_init()
profile_id = int(sig_uuid_constants['AudioSource'], 16)
result = self.dut.sdp_add_search(attributes, profile_id)
if result.get("error") is not None:
raise signals.TestFailure("Failed to add SDP search: {}".format(
result.get("error")))
else:
raise signals.TestPass("Success")
def test_include_additional_attributes(self):
self.dut.sdp_init()
additional_attributes = [{
'id': 0x0201,
'element': {
'data': int(sig_uuid_constants['AVDTP'], 16)
}
}]
sdp_pts_record_list[0]['additional_attributes'] = additional_attributes
result = self.dut.sdp_add_service(sdp_pts_record_list[0])
if result.get("error") is not None:
raise signals.TestFailure(
"Failed to add SDP service record: {}".format(
result.get("error")))
else:
raise signals.TestPass("Success")
def test_add_multiple_services(self):
self.dut.sdp_init()
number_of_records = 10
for i in range(number_of_records):
result = self.dut.sdp_add_service(sdp_pts_record_list[i])
if result.get("error") is not None:
raise signals.TestFailure(
"Failed to add SDP service record: {}".format(
result.get("error")))
raise signals.TestPass("Success")