diff options
-rwxr-xr-x | acts/framework/acts/test_utils/wifi/wifi_test_utils.py | 13 | ||||
-rwxr-xr-x | acts/tests/google/wifi/WifiNetworkSuggestionTest.py | 125 |
2 files changed, 54 insertions, 84 deletions
diff --git a/acts/framework/acts/test_utils/wifi/wifi_test_utils.py b/acts/framework/acts/test_utils/wifi/wifi_test_utils.py index b2ae9a4808..6e29e61243 100755 --- a/acts/framework/acts/test_utils/wifi/wifi_test_utils.py +++ b/acts/framework/acts/test_utils/wifi/wifi_test_utils.py @@ -44,7 +44,6 @@ DEFAULT_TIMEOUT = 10 SHORT_TIMEOUT = 30 ROAMING_TIMEOUT = 30 WIFI_CONNECTION_TIMEOUT_DEFAULT = 30 -WIFI_ABNORMAL_CONNECTION_TIME = 10 # Speed of light in m/s. SPEED_OF_LIGHT = 299792458 @@ -1166,9 +1165,7 @@ def _wait_for_connect_event(ad, ssid=None, id=None, tries=1): if id is None and ssid is None: for i in range(tries): try: - start = time.time() conn_result = ad.ed.pop_event(wifi_constants.WIFI_CONNECTED, 30) - _assert_connection_time(start) break except Empty: pass @@ -1176,25 +1173,16 @@ def _wait_for_connect_event(ad, ssid=None, id=None, tries=1): # If ssid or network id is specified, wait for specific connect event. for i in range(tries): try: - start = time.time() conn_result = ad.ed.pop_event(wifi_constants.WIFI_CONNECTED, 30) if id and conn_result['data'][WifiEnums.NETID_KEY] == id: - _assert_connection_time(start) break elif ssid and conn_result['data'][WifiEnums.SSID_KEY] == ssid: - _assert_connection_time(start) break except Empty: pass return conn_result -def _assert_connection_time(start): - duration = time.time() - start - asserts.assert_true( - duration < WIFI_ABNORMAL_CONNECTION_TIME, - "Took " + str(duration) + "s to connect to network, " + - " expected " + str(WIFI_ABNORMAL_CONNECTION_TIME)) def wait_for_disconnect(ad, timeout=10): """Wait for a disconnect event within the specified timeout. @@ -1430,6 +1418,7 @@ def _wifi_connect_by_id(ad, network_id, num_of_tries=1): finally: ad.droid.wifiStopTrackingStateChange() + def wifi_connect_using_network_request(ad, network, network_specifier, num_of_tries=3, assert_on_fail=True): """Connect an Android device to a wifi network using network request. diff --git a/acts/tests/google/wifi/WifiNetworkSuggestionTest.py b/acts/tests/google/wifi/WifiNetworkSuggestionTest.py index 6d97c7e247..27f859ce19 100755 --- a/acts/tests/google/wifi/WifiNetworkSuggestionTest.py +++ b/acts/tests/google/wifi/WifiNetworkSuggestionTest.py @@ -57,10 +57,10 @@ class WifiNetworkSuggestionTest(WifiBaseTest): def setup_class(self): self.dut = self.android_devices[0] wutils.wifi_test_device_init(self.dut) - req_params = ["radius_conf_2g", "radius_conf_5g", "ca_cert", - "eap_identity", "eap_password",] + req_params = [] opt_param = [ - "open_network", "reference_networks" + "open_network", "reference_networks", "radius_conf_2g", "radius_conf_5g", "ca_cert", + "eap_identity", "eap_password" ] self.unpack_userparams( req_param_names=req_params, opt_param_names=opt_param) @@ -74,24 +74,27 @@ class WifiNetworkSuggestionTest(WifiBaseTest): asserts.assert_true( len(self.reference_networks) > 0, "Need at least one reference network with psk.") - self.wpa_psk_2g = self.reference_networks[0]["2g"] - self.wpa_psk_5g = self.reference_networks[0]["5g"] - self.open_2g = self.open_network[0]["2g"] - self.open_5g = self.open_network[0]["5g"] - self.ent_network_2g = self.ent_networks[0]["2g"] - self.ent_network_5g = self.ent_networks[0]["5g"] - self.config_aka = { - Ent.EAP: int(EAP.AKA), - WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY], - } - self.config_ttls = { - Ent.EAP: int(EAP.TTLS), - Ent.CA_CERT: self.ca_cert, - Ent.IDENTITY: self.eap_identity, - Ent.PASSWORD: self.eap_password, - Ent.PHASE2: int(EapPhase2.MSCHAPV2), - WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY], - } + if hasattr(self, "reference_networks"): + self.wpa_psk_2g = self.reference_networks[0]["2g"] + self.wpa_psk_5g = self.reference_networks[0]["5g"] + if hasattr(self, "open_network"): + self.open_2g = self.open_network[0]["2g"] + self.open_5g = self.open_network[0]["5g"] + if hasattr(self, "ent_networks"): + self.ent_network_2g = self.ent_networks[0]["2g"] + self.ent_network_5g = self.ent_networks[0]["5g"] + self.config_aka = { + Ent.EAP: int(EAP.AKA), + WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY], + } + self.config_ttls = { + Ent.EAP: int(EAP.TTLS), + Ent.CA_CERT: self.ca_cert, + Ent.IDENTITY: self.eap_identity, + Ent.PASSWORD: self.eap_password, + Ent.PHASE2: int(EapPhase2.MSCHAPV2), + WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY], + } self.dut.droid.wifiRemoveNetworkSuggestions([]) def setup_test(self): @@ -173,6 +176,26 @@ class WifiNetworkSuggestionTest(WifiBaseTest): self.dut.droid.wifiStopTrackingNetworkSuggestionStateChange() self.dut.ed.clear_all_events() + def remove_suggestions_disconnect_and_ensure_no_connection_back(self, + network_suggestions, + expected_ssid): + self.dut.log.info("Removing network suggestions") + asserts.assert_true( + self.dut.droid.wifiRemoveNetworkSuggestions(network_suggestions), + "Failed to remove suggestions") + # Ensure we did not disconnect + wutils.ensure_no_disconnect(self.dut) + + # Trigger a disconnect and wait for the disconnect. + self.dut.droid.wifiDisconnect() + wutils.wait_for_disconnect(self.dut) + self.dut.ed.clear_all_events() + + # Now ensure that we didn't connect back. + asserts.assert_false( + wutils.wait_for_connect(self.dut, expected_ssid, assert_on_fail=False), + "Device should not connect back") + def _test_connect_to_wifi_network_reboot_config_store(self, network_suggestions, wifi_network): @@ -192,20 +215,8 @@ class WifiNetworkSuggestionTest(WifiBaseTest): wutils.wait_for_connect(self.dut, wifi_network[WifiEnums.SSID_KEY]) - # Remove suggestion trigger disconnect and wait for the disconnect. - self.dut.log.info("Removing network suggestions") - asserts.assert_true( - self.dut.droid.wifiRemoveNetworkSuggestions(network_suggestions), - "Failed to remove suggestions") - wutils.wait_for_disconnect(self.dut) - self.dut.ed.clear_all_events() - - # Now ensure that we didn't connect back. - asserts.assert_false( - wutils.wait_for_connect(self.dut, - wifi_network[WifiEnums.SSID_KEY], - assert_on_fail=False), - "Device should not connect back") + self.remove_suggestions_disconnect_and_ensure_no_connection_back( + network_suggestions, wifi_network[WifiEnums.SSID_KEY]) @test_tracker_info(uuid="bda8ed20-4382-4380-831a-64cf77eca108") def test_connect_to_wpa_psk_2g(self): @@ -222,20 +233,8 @@ class WifiNetworkSuggestionTest(WifiBaseTest): [self.wpa_psk_2g], self.wpa_psk_2g[WifiEnums.SSID_KEY], False) - # Remove suggestion trigger disconnect and wait for the disconnect. - self.dut.log.info("Removing network suggestions"); - asserts.assert_true( - self.dut.droid.wifiRemoveNetworkSuggestions([self.wpa_psk_2g]), - "Failed to remove suggestions") - wutils.wait_for_disconnect(self.dut) - self.dut.ed.clear_all_events() - - # Now ensure that we didn't connect back. - asserts.assert_false( - wutils.wait_for_connect(self.dut, - self.wpa_psk_2g[WifiEnums.SSID_KEY], - assert_on_fail=False), - "Device should not connect back") + self.remove_suggestions_disconnect_and_ensure_no_connection_back( + [self.wpa_psk_2g], self.wpa_psk_2g[WifiEnums.SSID_KEY]) @test_tracker_info(uuid="f54bc250-d9e9-4f00-8b5b-b866e8550b43") def test_connect_to_highest_priority(self): @@ -262,13 +261,8 @@ class WifiNetworkSuggestionTest(WifiBaseTest): self.wpa_psk_2g[WifiEnums.SSID_KEY], None) - # Remove all suggestions trigger disconnect and wait for the disconnect. - self.dut.log.info("Removing network suggestions") - asserts.assert_true( - self.dut.droid.wifiRemoveNetworkSuggestions([]), - "Failed to remove suggestions") - wutils.wait_for_disconnect(self.dut) - self.dut.ed.clear_all_events() + self.remove_suggestions_disconnect_and_ensure_no_connection_back( + [], self.wpa_psk_2g[WifiEnums.SSID_KEY]) # Reverse the priority. # Add suggestions & wait for the connection event. @@ -296,21 +290,8 @@ class WifiNetworkSuggestionTest(WifiBaseTest): self.add_suggestions_and_ensure_connection( [network_suggestion], self.wpa_psk_2g[WifiEnums.SSID_KEY], True) - - # Remove suggestion trigger disconnect and wait for the disconnect. - self.dut.log.info("Removing network suggestions"); - asserts.assert_true( - self.dut.droid.wifiRemoveNetworkSuggestions([network_suggestion]), - "Failed to remove suggestions") - wutils.wait_for_disconnect(self.dut) - self.dut.ed.clear_all_events() - - # Now ensure that we didn't connect back. - asserts.assert_false( - wutils.wait_for_connect(self.dut, - self.wpa_psk_2g[WifiEnums.SSID_KEY], - assert_on_fail=False), - "Device should not connect back") + self.remove_suggestions_disconnect_and_ensure_no_connection_back( + [self.wpa_psk_2g], self.wpa_psk_2g[WifiEnums.SSID_KEY]) @test_tracker_info(uuid="a036a24d-29c0-456d-ae6a-afdde34da710") def test_connect_to_wpa_psk_5g_reboot_config_store(self): @@ -439,7 +420,7 @@ class WifiNetworkSuggestionTest(WifiBaseTest): [network_suggestion], self.wpa_psk_2g[WifiEnums.SSID_KEY], True) - # Simulate user forgeting the ephemeral network. + # Simulate user forgetting the ephemeral network. self.dut.droid.wifiDisableEphemeralNetwork( self.wpa_psk_2g[WifiEnums.SSID_KEY]) wutils.wait_for_disconnect(self.dut) |