summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSanket Agarwal <sanketa@google.com>2016-04-06 20:06:06 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-04-06 20:06:06 +0000
commitac5c592df860349fba340fa99bc3dea4d968a23b (patch)
tree4cedeb609e98576c5a4f85110f894568e6fb081e
parent42f7f166516d65807e7a62de60b1b614dcdd5b9e (diff)
parent0491de3d9ca1f44e3760a07c51d254aa0e9ef902 (diff)
downloadplatform_tools_test_connectivity-ac5c592df860349fba340fa99bc3dea4d968a23b.tar.gz
platform_tools_test_connectivity-ac5c592df860349fba340fa99bc3dea4d968a23b.tar.bz2
platform_tools_test_connectivity-ac5c592df860349fba340fa99bc3dea4d968a23b.zip
Merge "[DO NOT MERGE] Pairing should wait until success." into nyc-dev
-rw-r--r--acts/framework/acts/test_utils/bt/bt_test_utils.py28
-rw-r--r--acts/tests/google/bt/car_bt/BtCarPairedConnectDisconnectTest.py11
2 files changed, 23 insertions, 16 deletions
diff --git a/acts/framework/acts/test_utils/bt/bt_test_utils.py b/acts/framework/acts/test_utils/bt/bt_test_utils.py
index d5703443a9..8c2501bf04 100644
--- a/acts/framework/acts/test_utils/bt/bt_test_utils.py
+++ b/acts/framework/acts/test_utils/bt/bt_test_utils.py
@@ -611,23 +611,27 @@ def log_energy_info(droids, state):
def pair_pri_to_sec(pri_droid, sec_droid):
+ # Enable discovery on sec_droid so that pri_droid can find it.
+ # The timeout here is based on how much time it would take for two devices
+ # to pair with each other once pri_droid starts seeing devices.
sec_droid.bluetoothMakeDiscoverable(default_timeout)
- pri_droid.bluetoothStartDiscovery()
target_name = sec_droid.bluetoothGetLocalName()
- time.sleep(default_discovery_timeout)
- discovered_devices = pri_droid.bluetoothGetDiscoveredDevices()
- discovered = False
- for device in discovered_devices:
- log.info(device)
- if 'name' in device and target_name == device['name']:
- discovered = True
- continue
- if not discovered:
- return False
pri_droid.bluetoothStartPairingHelper()
sec_droid.bluetoothStartPairingHelper()
result = pri_droid.bluetoothDiscoverAndBond(target_name)
- return result
+
+ # Loop until we have bonded successfully or timeout.
+ end_time = time.time() + default_timeout
+ while time.time() < end_time:
+ bonded_devices = pri_droid.bluetoothGetBondedDevices()
+ expected_address = sec_droid.bluetoothGetLocalAddress()
+ bonded = False
+ for d in bonded_devices:
+ if d['address'] == expected_address:
+ return True
+ time.sleep(1)
+ # Timed out trying to bond.
+ return False
def get_bt_mac_address(droid, droid1, make_undisocverable=True):
diff --git a/acts/tests/google/bt/car_bt/BtCarPairedConnectDisconnectTest.py b/acts/tests/google/bt/car_bt/BtCarPairedConnectDisconnectTest.py
index 822e169a31..6c1b72f593 100644
--- a/acts/tests/google/bt/car_bt/BtCarPairedConnectDisconnectTest.py
+++ b/acts/tests/google/bt/car_bt/BtCarPairedConnectDisconnectTest.py
@@ -55,14 +55,17 @@ class BtCarPairedConnectDisconnectTest(BaseTestClass):
a.ed.clear_all_events()
# Pair the devices.
- pair_pri_to_sec(self.droid_ad.droid, self.droid1_ad.droid)
- # Pairing usually takes time (discovery + key exchange)
- time.sleep(15)
+ # This call may block until some specified timeout in bt_test_utils.py.
+ result = pair_pri_to_sec(self.droid_ad.droid, self.droid1_ad.droid)
+
+ if result is False:
+ self.log.info("pair_pri_to_sec returned false.")
+ return False
# Check for successful setup of test.
devices = self.droid_ad.droid.bluetoothGetBondedDevices()
if (len(devices) == 0):
- self.log.info("No bonded devices.")
+ self.log.info("pair_pri_to_sec succeeded but no bonded devices.")
return False
return True