unplugged-system/cts/hostsidetests/multidevices/bluetooth/bluetooth_multi_devices_test.py

100 lines
4.0 KiB
Python

# Lint as: python3
"""
Bluetooth multi devices tests.
"""
import sys
import os.path
import time
import re
import logging
logging.basicConfig(filename="/tmp/bluetooth_multi_devices_test_log.txt", level=logging.INFO)
from mobly import asserts
from mobly import base_test
from mobly import test_runner
from mobly import utils
from mobly.controllers import android_device
BLUETOOTH_MULTI_DEVICES_SNIPPET_PACKAGE = 'com.google.snippet.bluetooth'
SERVICE_UUID_1 = "0000fffb-0000-1000-8000-00805f9b34fc"
SERVICE_UUID_2 = "0000fffb-0000-1000-8000-00805f9b34fd"
class BluetoothMultiDevicesTest(base_test.BaseTestClass):
def setup_class(self):
# Declare that two Android devices are needed.
self.client, self.server = self.register_controller(
android_device, min_number=2)
def setup_device(device):
device.load_snippet('bluetooth_multi_devices_snippet', BLUETOOTH_MULTI_DEVICES_SNIPPET_PACKAGE)
# Set up devices in parallel to save time.
utils.concurrent_exec(
setup_device, ((self.client,), (self.server,)),
max_workers=2,
raise_on_exception=True)
def setup_test(self):
self.server.bluetooth_multi_devices_snippet.disableBluetooth()
self.client.bluetooth_multi_devices_snippet.disableBluetooth()
# TODO(b/266635827) implement callback
time.sleep(3)
asserts.assert_false(self.server.bluetooth_multi_devices_snippet.isBluetoothOn(), 'Server Bluetooth did not stop')
asserts.assert_false(self.client.bluetooth_multi_devices_snippet.isBluetoothOn(), 'Client Bluetooth did not stop')
self.server.bluetooth_multi_devices_snippet.enableBluetooth()
self.client.bluetooth_multi_devices_snippet.enableBluetooth()
# TODO(b/266635827) implement callback
time.sleep(3)
asserts.assert_true(self.server.bluetooth_multi_devices_snippet.isBluetoothOn(), 'Server Bluetooth did not start')
asserts.assert_true(self.client.bluetooth_multi_devices_snippet.isBluetoothOn(), 'Client Bluetooth did not start')
self.server.bluetooth_multi_devices_snippet.reset()
self.client.bluetooth_multi_devices_snippet.reset()
def test_normal_gatt_server(self):
"""
Tests the android.bluetooth.le.BluetoothLeAdvertiser#startAdvertisingSet API.
"""
# Start and advertise two regular servers
self.server.bluetooth_multi_devices_snippet.createAndAdvertiseServer(SERVICE_UUID_1)
self.server.bluetooth_multi_devices_snippet.createAndAdvertiseServer(SERVICE_UUID_2)
# Connect to the first advertisement
asserts.assert_true(self.client.bluetooth_multi_devices_snippet.connectGatt(SERVICE_UUID_1), "Server not discovered")
# Check the target UUID is present
asserts.assert_true(self.client.bluetooth_multi_devices_snippet.containsService(SERVICE_UUID_1), "Service not found")
# Check that the UUID from the other server is *also* present
asserts.assert_true(self.client.bluetooth_multi_devices_snippet.containsService(SERVICE_UUID_2), "Service not found")
def test_isolated_gatt_server(self):
"""
Tests the android.bluetooth.le.BluetoothLeAdvertiser#startAdvertisingSet API.
"""
# Start a server tied to its advertisement
self.server.bluetooth_multi_devices_snippet.createAndAdvertiseIsolatedServer(SERVICE_UUID_1)
# Start a second regular server
self.server.bluetooth_multi_devices_snippet.createAndAdvertiseServer(SERVICE_UUID_2)
# Connect to the first server
asserts.assert_true(self.client.bluetooth_multi_devices_snippet.connectGatt(SERVICE_UUID_1), "Server not discovered")
# Check the target UUID is present
asserts.assert_true(self.client.bluetooth_multi_devices_snippet.containsService(SERVICE_UUID_1), "Service not found")
# Check that the UUID from the other server is NOT present
asserts.assert_false(self.client.bluetooth_multi_devices_snippet.containsService(SERVICE_UUID_2), "Service unexpectedly found")
if __name__ == '__main__':
# Take test args
index = sys.argv.index('--')
sys.argv = sys.argv[:1] + sys.argv[index + 1:]
test_runner.main()