• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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