"""Tests for Connection switching feature of Triangle.""" import logging import time from mobly import test_runner from blueberry.utils import triangle_base_test as base_test from blueberry.utils import triangle_constants class ConnectionSwitchingTest(base_test.TriangleBaseTest): """Connection Switching Test.""" def setup_class(self): """Executes Connection switching setups. Pairs Phone to headset and Watch, then pairs and connect Watch to Headset, let Watch be last connected device of Headset. """ super().setup_class() self.headset.power_on() self.pair_and_connect_phone_to_headset() self.pair_and_connect_phone_to_watch() self.pair_and_connect_watch_to_headset() def setup_test(self): """Makes sure that Headset is connected to Watch instead of Phone.""" super().setup_test() self.phone.disconnect_bluetooth(self.headset.mac_address) self.watch.connect_bluetooth(self.headset.mac_address) self.assert_headset_a2dp_connection(connected=False, device=self.phone) self.assert_headset_hsp_connection(connected=False, device=self.phone) def test_trigger_connection_switching_when_headset_powered_on(self): """Test for triggering connection switching when Headset is powered on. Steps: 1. Power off Headset. 2. Wait 1 minute. 3. Power on Headset, and then it will be reconnect. Verifications: The Headset connection is switched from Watch to Phone. """ logging.info('Power off Headset and wait 1 minute.') self.headset.power_off() time.sleep(triangle_constants.WAITING_TIME_SEC) logging.info('Power on Headset.') self.headset.power_on() self.assert_headset_a2dp_connection(connected=True, device=self.phone) self.assert_headset_hsp_connection(connected=True, device=self.phone) def test_trigger_connection_switching_when_phone_tethered_watch(self): """Test for triggering connection switching when Phone is tethered to Watch. Steps: 1. Disable Bluetooth on Phone. 2. Wait 1 minute. 3. Enable Bluetooth on Phone, and then Phone will be tethered to Watch. Verifications: The Headset connection is switched from Watch to Phone. """ self.phone.log.info('Disable Bluetooth and wait 1 minute.') self.phone.mbs.btDisable() time.sleep(triangle_constants.WAITING_TIME_SEC) self.phone.log.info('Enable Bluetooth.') self.phone.mbs.btEnable() self.assert_headset_a2dp_connection(connected=True, device=self.phone) self.assert_headset_hsp_connection(connected=True, device=self.phone) if __name__ == '__main__': test_runner.main()