summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2018-05-21 10:27:05 -0700
committerandroid-build-merger <android-build-merger@google.com>2018-05-21 10:27:05 -0700
commit8438ea167f44914a9bb4554c3cf8c350a905231e (patch)
tree06de5b7f40254a5b88adf2dfd953af5d1c96035d /tests
parentfb6e7e48df4289df4e8bd43572e7373281c55bfd (diff)
parent966cdd11ad386d25bd168d650db0c47f0b091c16 (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.java27
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java108
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);
+ }
}