xref: /aosp_15_r20/platform_testing/tests/automotive/mobly_tests/bluetooth_base_test.py (revision dd0948b35e70be4c0246aabd6c72554a5eb8b22a)
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