1""" 2Bluetooth Base Test 3 4This test class serves as a base class for others to inherit from. 5It also serves as a device-cleaner to help reset devices between tests. 6 7""" 8 9import sys 10import logging 11import pprint 12 13 14from mobly import asserts 15from mobly import base_test 16from mobly import test_runner 17from mobly.controllers import android_device 18 19from mbs_utils import spectatio_utils 20from mbs_utils import bt_utils 21 22class BluetoothBaseTest(base_test.BaseTestClass): 23 24 25 def setup_class(self): 26 # Registering android_device controller module, and declaring that the test 27 # requires at least two Android devices. 28 # This setup will need to be overwritten or extended if a test uses three devices. 29 30 self.ads = self.register_controller(android_device, min_number=2) 31 # The device used to discover Bluetooth devices. 32 self.discoverer = android_device.get_device( 33 self.ads, label='auto') 34 # Sets the tag that represents this device in logs. 35 self.discoverer.debug_tag = 'discoverer' 36 # The device that is expected to be discovered 37 self.target = android_device.get_device(self.ads, label='phone') 38 self.target.debug_tag = 'target' 39 self.target.load_snippet('mbs', android_device.MBS_PACKAGE) 40 self.discoverer.load_snippet('mbs', android_device.MBS_PACKAGE) 41 42 self.call_utils = (spectatio_utils.CallUtils(self.discoverer)) 43 44 self.bt_utils = (bt_utils.BTUtils(self.discoverer, self.target)) 45 46 def setup_test(self): 47 # Make sure bluetooth is on. 48 logging.info("Running basic test setup.") 49 self.target.mbs.btEnable() 50 self.discoverer.mbs.btEnable() 51 52 def teardown_test(self): 53 # Turn Bluetooth off on both devices. 54 logging.info("Running basic test teardown.") 55 # unpair target from discoverer 56 discoverer_address = self.discoverer.mbs.btGetAddress() 57 target_paired_devices = self.target.mbs.btGetPairedDevices() 58 _, target_paired_addresses = self.bt_utils.get_info_from_devices(target_paired_devices) 59 if discoverer_address in target_paired_addresses: 60 logging.info(f"forget {discoverer_address}") 61 self.target.mbs.btUnpairDevice(discoverer_address) 62 # unpair discoverer from target 63 target_address = self.target.mbs.btGetAddress() 64 discoverer_paired_devices = self.discoverer.mbs.btGetPairedDevices() 65 _, discoverer_paired_addresses = self.bt_utils.get_info_from_devices(discoverer_paired_devices) 66 if target_address in discoverer_paired_addresses: 67 logging.info(f"forget {target_address}") 68 self.discoverer.mbs.btUnpairDevice(target_address) 69 # disable BT 70 self.target.mbs.btDisable() 71 self.discoverer.mbs.btDisable() 72 73 74if __name__ == '__main__': 75 # Pass test arguments after '--' to the test runner. 76 # Needed for Mobly Test Runner 77 if '--' in sys.argv: 78 index = sys.argv.index('--') 79 sys.argv = sys.argv[:1] + sys.argv[index + 1:] 80 test_runner.main() 81