diff options
author | Roshan Pius <rpius@google.com> | 2018-05-21 10:27:05 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-05-21 10:27:05 -0700 |
commit | 8438ea167f44914a9bb4554c3cf8c350a905231e (patch) | |
tree | 06de5b7f40254a5b88adf2dfd953af5d1c96035d /tests | |
parent | fb6e7e48df4289df4e8bd43572e7373281c55bfd (diff) | |
parent | 966cdd11ad386d25bd168d650db0c47f0b091c16 (diff) |
WifiConfigManager: Temporarily disable network with no internet access am: d5265a61c4
am: 966cdd11ad
Change-Id: I47b88858df57fdbfd03f47763f0061d62657833f
Diffstat (limited to 'tests')
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java | 27 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java | 108 |
2 files changed, 134 insertions, 1 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java index 844a358d0..5b4917c7f 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java @@ -643,6 +643,33 @@ public class WifiConfigManagerTest { /** * Verifies the update of network status using + * {@link WifiConfigManager#updateNetworkSelectionStatus(int, int)}. + */ + @Test + public void testNetworkSelectionStatusTemporarilyDisabledDueToNoInternet() { + WifiConfiguration openNetwork = WifiConfigurationTestUtil.createOpenNetwork(); + + NetworkUpdateResult result = verifyAddNetworkToWifiConfigManager(openNetwork); + + int networkId = result.getNetworkId(); + // First set it to enabled. + verifyUpdateNetworkSelectionStatus( + networkId, NetworkSelectionStatus.NETWORK_SELECTION_ENABLE, 0); + + // Now set it to temporarily disabled. The threshold for no internet is 1, so + // disable it once to actually mark it temporarily disabled. + verifyUpdateNetworkSelectionStatus( + result.getNetworkId(), NetworkSelectionStatus.DISABLED_NO_INTERNET_TEMPORARY, 1); + verify(mWcmListener).onSavedNetworkTemporarilyDisabled(networkId); + + // Now set it back to enabled. + verifyUpdateNetworkSelectionStatus( + result.getNetworkId(), NetworkSelectionStatus.NETWORK_SELECTION_ENABLE, 0); + verify(mWcmListener, times(2)).onSavedNetworkEnabled(networkId); + } + + /** + * Verifies the update of network status using * {@link WifiConfigManager#updateNetworkSelectionStatus(int, int)} and ensures that * enabling a network clears out all the temporary disable counters. */ diff --git a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java index b067d9dfa..8da8339b3 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java @@ -16,6 +16,8 @@ package com.android.server.wifi; +import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.DISABLED_NO_INTERNET_TEMPORARY; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; @@ -37,6 +39,7 @@ import android.net.ConnectivityManager; import android.net.DhcpResults; import android.net.LinkProperties; import android.net.MacAddress; +import android.net.NetworkAgent; import android.net.NetworkCapabilities; import android.net.NetworkFactory; import android.net.NetworkInfo; @@ -2123,7 +2126,7 @@ public class WifiStateMachineTest { Bundle thresholds = new Bundle(); thresholds.putIntegerArrayList("thresholds", thresholdsArray); Message message = new Message(); - message.what = android.net.NetworkAgent.CMD_SET_SIGNAL_STRENGTH_THRESHOLDS; + message.what = NetworkAgent.CMD_SET_SIGNAL_STRENGTH_THRESHOLDS; message.obj = thresholds; messengerCaptor.getValue().send(message); mLooper.dispatchAll(); @@ -2433,4 +2436,107 @@ public class WifiStateMachineTest { mLooper.dispatchAll(); assertEquals(TEST_GLOBAL_MAC_ADDRESS.toString(), mWsm.getWifiInfo().getMacAddress()); } + + /** + * Verify that we temporarily disable the network when auto-connected to a network + * with no internet access. + */ + @Test + public void verifyAutoConnectedNetworkWithInternetValidationFailure() throws Exception { + // Simulate the first connection. + connect(); + ArgumentCaptor<Messenger> messengerCaptor = ArgumentCaptor.forClass(Messenger.class); + verify(mConnectivityManager).registerNetworkAgent(messengerCaptor.capture(), + any(NetworkInfo.class), any(LinkProperties.class), any(NetworkCapabilities.class), + anyInt(), any(NetworkMisc.class)); + + WifiConfiguration currentNetwork = new WifiConfiguration(); + currentNetwork.networkId = FRAMEWORK_NETWORK_ID; + currentNetwork.noInternetAccessExpected = false; + currentNetwork.numNoInternetAccessReports = 1; + when(mWifiConfigManager.getConfiguredNetwork(FRAMEWORK_NETWORK_ID)) + .thenReturn(currentNetwork); + when(mWifiConfigManager.getLastSelectedNetwork()).thenReturn(FRAMEWORK_NETWORK_ID + 1); + + Message message = new Message(); + message.what = NetworkAgent.CMD_REPORT_NETWORK_STATUS; + message.arg1 = NetworkAgent.INVALID_NETWORK; + message.obj = new Bundle(); + messengerCaptor.getValue().send(message); + mLooper.dispatchAll(); + + verify(mWifiConfigManager) + .incrementNetworkNoInternetAccessReports(FRAMEWORK_NETWORK_ID); + verify(mWifiConfigManager).updateNetworkSelectionStatus( + FRAMEWORK_NETWORK_ID, DISABLED_NO_INTERNET_TEMPORARY); + } + + /** + * Verify that we don't temporarily disable the network when user selected to connect to a + * network with no internet access. + */ + @Test + public void verifyLastSelectedNetworkWithInternetValidationFailure() throws Exception { + // Simulate the first connection. + connect(); + ArgumentCaptor<Messenger> messengerCaptor = ArgumentCaptor.forClass(Messenger.class); + verify(mConnectivityManager).registerNetworkAgent(messengerCaptor.capture(), + any(NetworkInfo.class), any(LinkProperties.class), any(NetworkCapabilities.class), + anyInt(), any(NetworkMisc.class)); + + WifiConfiguration currentNetwork = new WifiConfiguration(); + currentNetwork.networkId = FRAMEWORK_NETWORK_ID; + currentNetwork.noInternetAccessExpected = false; + currentNetwork.numNoInternetAccessReports = 1; + when(mWifiConfigManager.getConfiguredNetwork(FRAMEWORK_NETWORK_ID)) + .thenReturn(currentNetwork); + when(mWifiConfigManager.getLastSelectedNetwork()).thenReturn(FRAMEWORK_NETWORK_ID); + + Message message = new Message(); + message.what = NetworkAgent.CMD_REPORT_NETWORK_STATUS; + message.arg1 = NetworkAgent.INVALID_NETWORK; + message.obj = new Bundle(); + messengerCaptor.getValue().send(message); + mLooper.dispatchAll(); + + verify(mWifiConfigManager) + .incrementNetworkNoInternetAccessReports(FRAMEWORK_NETWORK_ID); + verify(mWifiConfigManager, never()).updateNetworkSelectionStatus( + FRAMEWORK_NETWORK_ID, DISABLED_NO_INTERNET_TEMPORARY); + } + + /** + * Verify that we temporarily disable the network when auto-connected to a network + * with no internet access. + */ + @Test + public void verifyAutoConnectedNoInternetExpectedNetworkWithInternetValidationFailure() + throws Exception { + // Simulate the first connection. + connect(); + ArgumentCaptor<Messenger> messengerCaptor = ArgumentCaptor.forClass(Messenger.class); + verify(mConnectivityManager).registerNetworkAgent(messengerCaptor.capture(), + any(NetworkInfo.class), any(LinkProperties.class), any(NetworkCapabilities.class), + anyInt(), any(NetworkMisc.class)); + + WifiConfiguration currentNetwork = new WifiConfiguration(); + currentNetwork.networkId = FRAMEWORK_NETWORK_ID; + currentNetwork.noInternetAccessExpected = true; + currentNetwork.numNoInternetAccessReports = 1; + when(mWifiConfigManager.getConfiguredNetwork(FRAMEWORK_NETWORK_ID + 1)) + .thenReturn(currentNetwork); + when(mWifiConfigManager.getLastSelectedNetwork()).thenReturn(FRAMEWORK_NETWORK_ID); + + Message message = new Message(); + message.what = NetworkAgent.CMD_REPORT_NETWORK_STATUS; + message.arg1 = NetworkAgent.INVALID_NETWORK; + message.obj = new Bundle(); + messengerCaptor.getValue().send(message); + mLooper.dispatchAll(); + + verify(mWifiConfigManager) + .incrementNetworkNoInternetAccessReports(FRAMEWORK_NETWORK_ID); + verify(mWifiConfigManager, never()).updateNetworkSelectionStatus( + FRAMEWORK_NETWORK_ID, DISABLED_NO_INTERNET_TEMPORARY); + } } |