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 logging 10 11from mobly import base_test 12from mobly.controllers import android_device 13 14from utilities import spectatio_utils 15from utilities import bt_utils 16from utilities.main_utils import common_main 17from utilities.video_utils_service import VideoRecording 18 19 20class BluetoothBaseTest(base_test.BaseTestClass): 21 22 def setup_class(self): 23 # Registering android_device controller module, and declaring that the test 24 # requires at least two Android devices. 25 # This setup will need to be overwritten or extended if a test uses three devices. 26 logging.info("Running basic class setup.") 27 self.ads = self.register_controller(android_device, min_number=2) 28 # The device used to discover Bluetooth devices. 29 self.discoverer = android_device.get_device( 30 self.ads, label='auto') 31 # Sets the tag that represents this device in logs. 32 self.discoverer.debug_tag = 'discoverer' 33 # The device that is expected to be discovered 34 self.target = android_device.get_device(self.ads, label='phone') 35 self.target.debug_tag = 'target' 36 logging.info("\tLoading Snippets.") 37 self.target.load_snippet('mbs', android_device.MBS_PACKAGE) 38 self.discoverer.load_snippet('mbs', android_device.MBS_PACKAGE) 39 logging.info("\tInitializing Utilities") 40 self.call_utils = (spectatio_utils.CallUtils(self.discoverer)) 41 self.bt_utils = (bt_utils.BTUtils(self.discoverer, self.target)) 42 43 logging.info("\tInitializing video services on HU") 44 self.video_utils_service = VideoRecording(self.discoverer, self.__class__.__name__) 45 logging.info("\tInitializing video services on target") 46 self.video_utils_service_target = VideoRecording(self.target, self.__class__.__name__) 47 48 def setup_test(self): 49 # Make sure bluetooth is on. 50 self.call_utils.press_home() 51 logging.info("Running basic test setup.") 52 logging.info("\tEnabling bluetooth on Target and Discoverer.") 53 self.target.mbs.btEnable() 54 self.discoverer.mbs.btEnable() 55 56 def teardown_test(self): 57 # Turn Bluetooth off on both devices. 58 logging.info("Running basic test teardown.") 59 self.call_utils.press_home() 60 self.call_utils.press_phone_home_icon_using_adb_command(self.target) 61 self.hu_recording_handler() 62 self.bt_utils.unpair() 63 logging.info("Disable Bluetooth on Discoverer device") 64 self.discoverer.mbs.btDisable() 65 logging.info("Disable Bluetooth on Target device") 66 self.target.mbs.btDisable() 67 68 def teardown_no_video_recording(self): 69 # Turn Bluetooth off on both devices. 70 logging.info("Running basic test teardown.") 71 self.call_utils.press_home() 72 self.call_utils.press_phone_home_icon_using_adb_command(self.target) 73 self.bt_utils.unpair() 74 logging.info("Disable Bluetooth on Discoverer device") 75 self.discoverer.mbs.btDisable() 76 logging.info("Disable Bluetooth on Target device") 77 self.target.mbs.btDisable() 78 79 80 def hu_recording_handler(self): 81 logging.info("Stopping the screen recording on Discoverer Device") 82 self.video_utils_service.stop_screen_recording() 83 logging.info("Pull the screen recording from Discoverer device") 84 self.video_utils_service.pull_recording_file(self.log_path) 85 logging.info("delete the screen recording from the Discoverer device") 86 self.video_utils_service.delete_screen_recording_from_device() 87 88 logging.info("Stopping the screen recording on Target Device") 89 self.video_utils_service_target.stop_screen_recording() 90 logging.info("Pull the screen recording from Target device") 91 self.video_utils_service_target.pull_recording_file(self.log_path) 92 logging.info("delete the screen recording from the Target device") 93 self.video_utils_service_target.delete_screen_recording_from_device() 94 95 def enable_recording(self): 96 logging.info("Enabling video recording for Discoverer device") 97 self.video_utils_service.enable_screen_recording() 98 logging.info("Enabling video recording for Target device") 99 self.video_utils_service_target.enable_screen_recording() 100 logging.info("Video recording started on Discoverer and Target") 101 102if __name__ == '__main__': 103 common_main() 104