bluetooth: Stop discovering in test_discover_device

test_discover_device is changed to automatically call stop_discovery so
callers don't need to call bluetooth_facade.stop_discovery or
test_stop_discovery.

BUG=b:158333537
TEST=Ran bluetooth_AdapterQuickSanity

Change-Id: I41d67554c3b39ad26281f8b1e0bb2a7e9f3e56e5
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2244291
Tested-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
Commit-Queue: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
Reviewed-by: Daniel Winkler <danielwinkler@google.com>
diff --git a/server/cros/bluetooth/bluetooth_adapter_better_together.py b/server/cros/bluetooth/bluetooth_adapter_better_together.py
index 31098f1..bec58ce 100644
--- a/server/cros/bluetooth/bluetooth_adapter_better_together.py
+++ b/server/cros/bluetooth/bluetooth_adapter_better_together.py
@@ -142,7 +142,6 @@
       logging.debug("Test iteration %d", i)
       self.test_set_discovery_filter(filter)
       self.test_discover_device(address)
-      self.test_stop_discovery()
 
       self.test_set_le_connection_parameters(address, parameters)
       self.test_pause_discovery()
@@ -257,4 +256,4 @@
       logging.error("Failed to write message: %s", message_type)
       return False
 
-    return base64.standard_b64decode(ret_msg) == message
\ No newline at end of file
+    return base64.standard_b64decode(ret_msg) == message
diff --git a/server/cros/bluetooth/bluetooth_adapter_controller_role_tests.py b/server/cros/bluetooth/bluetooth_adapter_controller_role_tests.py
index c4abb0f..8c59ca8 100644
--- a/server/cros/bluetooth/bluetooth_adapter_controller_role_tests.py
+++ b/server/cros/bluetooth/bluetooth_adapter_controller_role_tests.py
@@ -39,7 +39,6 @@
         """
 
         self.test_discover_device(device.address)
-        self.bluetooth_facade.stop_discovery()
         time.sleep(self.TEST_SLEEP_SECS)
         self.test_pairing(device.address, device.pin, trusted=True)
         self.test_disconnection_by_adapter(device.address)
@@ -53,7 +52,6 @@
         """
         logging.info('Setting up slave device')
         self.test_discover_device(device.address)
-        self.bluetooth_facade.stop_discovery()
         self.test_pairing(device.address, device.pin, trusted=True)
         time.sleep(self.TEST_SLEEP_SECS)
         self.test_connection_by_adapter(device.address)
diff --git a/server/cros/bluetooth/bluetooth_adapter_pairing_tests.py b/server/cros/bluetooth/bluetooth_adapter_pairing_tests.py
index 1671b64..b20bb9a 100644
--- a/server/cros/bluetooth/bluetooth_adapter_pairing_tests.py
+++ b/server/cros/bluetooth/bluetooth_adapter_pairing_tests.py
@@ -45,9 +45,6 @@
         time.sleep(self.PAIR_TEST_SLEEP_SECS)
         self.test_discover_device(device.address)
 
-        # Test if the discovery could be stopped.
-        self.test_stop_discovery()
-
         # Test if the discovered device class of service is correct.
         self.test_device_class_of_service(device.address,
                                           device.class_of_service)
@@ -159,7 +156,6 @@
         # self.bluetooth_facade.is_discovering() doesn't work as expected:
         # crbug:905374
         # self.test_stop_discovery()
-        self.bluetooth_facade.stop_discovery()
         time.sleep(self.PAIR_TEST_SLEEP_SECS)
         self.test_pairing(device.address, device.pin, trusted=True)
         time.sleep(self.PAIR_TEST_SLEEP_SECS)
@@ -204,7 +200,6 @@
         # self.bluetooth_facade.is_discovering() doesn't work as expected:
         # crbug:905374
         # self.test_stop_discovery()
-        self.bluetooth_facade.stop_discovery()
         time.sleep(self.PAIR_TEST_SLEEP_SECS)
         self.test_pairing(device.address, device.pin, trusted=True)
         time.sleep(self.PAIR_TEST_SLEEP_SECS)
diff --git a/server/cros/bluetooth/bluetooth_adapter_tests.py b/server/cros/bluetooth/bluetooth_adapter_tests.py
index 4c4cd73..dfb4f83 100644
--- a/server/cros/bluetooth/bluetooth_adapter_tests.py
+++ b/server/cros/bluetooth/bluetooth_adapter_tests.py
@@ -1526,16 +1526,21 @@
 
 
     @test_retry_and_log(False)
-    def test_discover_device(self, device_address):
+    def test_discover_device(self, device_address, stop_discovery=True):
         """Test that the adapter could discover the specified device address.
 
         @param device_address: Address of the device.
+        @param stop_discovery: Whether to stop discovery at the end. If this is
+                               set to False, make sure to call
+                               test_stop_discovery afterwards.
 
         @returns: True if the device is found. False otherwise.
 
         """
         has_device_initially = False
         start_discovery = False
+        discovery_stopped = False
+        is_not_discovering = False
         device_discovered = False
         has_device = self.bluetooth_facade.has_device
 
@@ -1561,12 +1566,27 @@
                     logging.error(err)
                 except:
                     logging.error('test_discover_device: unexpected error')
+            if start_discovery and stop_discovery:
+                discovery_stopped, _ = self.bluetooth_facade.stop_discovery()
+                is_not_discovering = self._wait_for_condition(
+                        lambda: not self.bluetooth_facade.is_discovering(),
+                        method_name())
 
         self.results = {
                 'has_device_initially': has_device_initially,
                 'start_discovery': start_discovery,
+                'should_stop_discovery': stop_discovery,
+                'stop_discovery': discovery_stopped,
+                'is_not_discovering': is_not_discovering,
                 'device_discovered': device_discovered}
-        return has_device_initially or device_discovered
+
+        # Make sure a discovered device properly started and stopped discovery
+        device_found = device_discovered and start_discovery and (
+                discovery_stopped and is_not_discovering
+                if stop_discovery else True)
+
+        return has_device_initially or device_found
+
 
     def _test_discover_by_device(self, device):
         return device.Discover(self.bluetooth_facade.address)
diff --git a/server/site_tests/bluetooth_AdapterAUSanity/bluetooth_AdapterAUSanity.py b/server/site_tests/bluetooth_AdapterAUSanity/bluetooth_AdapterAUSanity.py
index 5d55440..7903ebf 100644
--- a/server/site_tests/bluetooth_AdapterAUSanity/bluetooth_AdapterAUSanity.py
+++ b/server/site_tests/bluetooth_AdapterAUSanity/bluetooth_AdapterAUSanity.py
@@ -33,7 +33,6 @@
         self.initialize_bluetooth_audio(device, test_profile)
         self.test_device_set_discoverable(device, True)
         self.test_discover_device(device.address)
-        self.test_stop_discovery()
         self.test_pairing(device.address, device.pin, trusted=True)
         device.SetTrustedByRemoteAddress(self.bluetooth_facade.address)
         self.test_connection_by_adapter(device.address)
@@ -54,7 +53,6 @@
         self.initialize_bluetooth_audio(device, test_profile)
         self.test_device_set_discoverable(device, True)
         self.test_discover_device(device.address)
-        self.test_stop_discovery()
         self.test_pairing(device.address, device.pin, trusted=True)
         device.SetTrustedByRemoteAddress(self.bluetooth_facade.address)
         self.test_connection_by_adapter(device.address)
diff --git a/server/site_tests/bluetooth_AdapterLESanity/bluetooth_AdapterLESanity.py b/server/site_tests/bluetooth_AdapterLESanity/bluetooth_AdapterLESanity.py
index 425ad67..56a18b0 100644
--- a/server/site_tests/bluetooth_AdapterLESanity/bluetooth_AdapterLESanity.py
+++ b/server/site_tests/bluetooth_AdapterLESanity/bluetooth_AdapterLESanity.py
@@ -64,10 +64,6 @@
         device = self.devices['BLE_MOUSE'][0]
         # Let the adapter pair, and connect to the target device.
         self.test_discover_device(device.address)
-        # self.bluetooth_facade.is_discovering() doesn't work as expected:
-        # crbug:905374
-        # self.test_stop_discovery()
-        self.bluetooth_facade.stop_discovery()
         time.sleep(self.TEST_SLEEP_SECS)
         self.test_pairing(device.address, device.pin, trusted=True)
 
@@ -85,10 +81,6 @@
         device = self.devices['BLE_KEYBOARD'][0]
         # Let the adapter pair, and connect to the target device.
         self.test_discover_device(device.address)
-        # self.bluetooth_facade.is_discovering() doesn't work as expected:
-        # crbug:905374
-        # self.test_stop_discovery()
-        self.bluetooth_facade.stop_discovery()
         time.sleep(self.TEST_SLEEP_SECS)
         self.test_pairing(device.address, device.pin, trusted=True)
 
@@ -116,7 +108,6 @@
 
         device = self.devices['BLE_KEYBOARD'][0]
         self.test_discover_device(device.address)
-        self.bluetooth_facade.stop_discovery()
         time.sleep(self.TEST_SLEEP_SECS)
         self.test_pairing(device.address, device.pin, trusted=True)
         self.test_service_resolved(device.address)
diff --git a/server/site_tests/bluetooth_AdapterMDSanity/bluetooth_AdapterMDSanity.py b/server/site_tests/bluetooth_AdapterMDSanity/bluetooth_AdapterMDSanity.py
index 146f002..02161f3 100644
--- a/server/site_tests/bluetooth_AdapterMDSanity/bluetooth_AdapterMDSanity.py
+++ b/server/site_tests/bluetooth_AdapterMDSanity/bluetooth_AdapterMDSanity.py
@@ -31,7 +31,6 @@
         @param device: meta object for bt peer device
         """
         self.test_discover_device(device.address)
-        self.test_stop_discovery()
         time.sleep(self.TEST_SLEEP_SECS)
         self.test_pairing(device.address, device.pin, trusted=True)
         time.sleep(self.TEST_SLEEP_SECS)
diff --git a/server/site_tests/bluetooth_AdapterMTBF/bluetooth_AdapterMTBF.py b/server/site_tests/bluetooth_AdapterMTBF/bluetooth_AdapterMTBF.py
index 28d4733..1fbc0d1 100644
--- a/server/site_tests/bluetooth_AdapterMTBF/bluetooth_AdapterMTBF.py
+++ b/server/site_tests/bluetooth_AdapterMTBF/bluetooth_AdapterMTBF.py
@@ -156,7 +156,6 @@
         self.initialize_bluetooth_audio(device, A2DP)
         self.test_device_set_discoverable(device, True)
         self.test_discover_device(device.address)
-        self.test_stop_discovery()
         self.test_pairing(device.address, device.pin, trusted=True)
         device.SetTrustedByRemoteAddress(self.bluetooth_facade.address)
         self.test_connection_by_adapter(device.address)
@@ -173,7 +172,6 @@
 
         self.test_device_set_discoverable(device, True)
         self.test_discover_device(device.address)
-        self.test_stop_discovery()
         time.sleep(self.TEST_SLEEP_SECS)
         self.test_pairing(device.address, device.pin, trusted=True)
         time.sleep(self.TEST_SLEEP_SECS)
diff --git a/server/site_tests/bluetooth_AdapterSRSanity/bluetooth_AdapterSRSanity.py b/server/site_tests/bluetooth_AdapterSRSanity/bluetooth_AdapterSRSanity.py
index c562a94..10759aa 100644
--- a/server/site_tests/bluetooth_AdapterSRSanity/bluetooth_AdapterSRSanity.py
+++ b/server/site_tests/bluetooth_AdapterSRSanity/bluetooth_AdapterSRSanity.py
@@ -49,7 +49,6 @@
         """ Discovers and pairs given device. Automatically connects too."""
         self.test_device_set_discoverable(device, True)
         self.test_discover_device(device.address)
-        self.bluetooth_facade.stop_discovery()
         self.test_pairing(device.address, device.pin, trusted=True)
 
     def _test_keyboard_with_string(self, device):