summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2020-06-05 10:00:57 -0700
committerRoshan Pius <rpius@google.com>2020-06-06 22:19:42 +0000
commitb387b81b64717c32de2fe0f6c0a5e86abfe0de9c (patch)
tree08aab8c317ae3623308dc190f8db2d17ce7aa2eb /tests
parentd183457586db509753e5b87c91b8c584fe5a53d3 (diff)
ClientModeImpl: Reset mTargetNetworkId on connection failure
Bug: 158127841 Test: atest com.android.server.wifi Change-Id: I321c9380a2277c20fb985c6c770c1bf3362ed588 Merged-In: I321c9380a2277c20fb985c6c770c1bf3362ed588
Diffstat (limited to 'tests')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java71
1 files changed, 65 insertions, 6 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
index bc29d34b7..20766898d 100644
--- a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
@@ -1592,6 +1592,59 @@ public class ClientModeImplTest extends WifiBaseTest {
}
/**
+ * If caller tries to connect to a network that previously failed connection, the connection
+ * request should succeed.
+ *
+ * Test: Create and trigger connect to a network, then fail the connection. Now try to reconnect
+ * to the same network. Verify that connection request returns with CONNECT_NETWORK_SUCCEEDED
+ * and did trigger a new * connection.
+ */
+ @Test
+ public void connectAfterAssociationRejection() throws Exception {
+ triggerConnect();
+
+ // fail the connection.
+ mCmi.sendMessage(WifiMonitor.ASSOCIATION_REJECTION_EVENT, 0,
+ ISupplicantStaIfaceCallback.StatusCode.AP_UNABLE_TO_HANDLE_NEW_STA, sBSSID);
+ mLooper.dispatchAll();
+
+ IActionListener connectActionListener = mock(IActionListener.class);
+ mCmi.connect(null, FRAMEWORK_NETWORK_ID, mock(Binder.class), connectActionListener, 0,
+ Binder.getCallingUid());
+ mLooper.dispatchAll();
+ verify(connectActionListener).onSuccess();
+
+ // Verify that we triggered a second connection.
+ verify(mWifiNative, times(2)).connectToNetwork(eq(WIFI_IFACE_NAME), any());
+ }
+
+ /**
+ * If caller tries to connect to a network that previously failed connection, the connection
+ * request should succeed.
+ *
+ * Test: Create and trigger connect to a network, then fail the connection. Now try to reconnect
+ * to the same network. Verify that connection request returns with CONNECT_NETWORK_SUCCEEDED
+ * and did trigger a new * connection.
+ */
+ @Test
+ public void connectAfterConnectionFailure() throws Exception {
+ triggerConnect();
+
+ // fail the connection.
+ mCmi.sendMessage(WifiMonitor.NETWORK_DISCONNECTION_EVENT, FRAMEWORK_NETWORK_ID, 0, sBSSID);
+ mLooper.dispatchAll();
+
+ IActionListener connectActionListener = mock(IActionListener.class);
+ mCmi.connect(null, FRAMEWORK_NETWORK_ID, mock(Binder.class), connectActionListener, 0,
+ Binder.getCallingUid());
+ mLooper.dispatchAll();
+ verify(connectActionListener).onSuccess();
+
+ // Verify that we triggered a second connection.
+ verify(mWifiNative, times(2)).connectToNetwork(eq(WIFI_IFACE_NAME), any());
+ }
+
+ /**
* If caller tries to connect to a new network while still provisioning the current one,
* the connection attempt should succeed.
*/
@@ -2420,18 +2473,20 @@ public class ClientModeImplTest extends WifiBaseTest {
assertEquals("DisconnectedState", getCurrentState().getName());
// Simulate an AUTHENTICATION_FAILURE_EVENT, which should clear the ExtraFailureReason
- reset(mWifiConfigManager);
+ mCmi.sendMessage(ClientModeImpl.CMD_START_CONNECT, 0, 0, sBSSID);
+ mLooper.dispatchAll();
mCmi.sendMessage(WifiMonitor.AUTHENTICATION_FAILURE_EVENT, 0, 0, null);
mLooper.dispatchAll();
- verify(mWifiConfigManager).clearRecentFailureReason(eq(0));
- verify(mWifiConfigManager, never()).setRecentFailureAssociationStatus(anyInt(), anyInt());
+ verify(mWifiConfigManager, times(1)).clearRecentFailureReason(eq(0));
+ verify(mWifiConfigManager, times(1)).setRecentFailureAssociationStatus(anyInt(), anyInt());
// Simulate a NETWORK_CONNECTION_EVENT which should clear the ExtraFailureReason
- reset(mWifiConfigManager);
+ mCmi.sendMessage(ClientModeImpl.CMD_START_CONNECT, 0, 0, sBSSID);
+ mLooper.dispatchAll();
mCmi.sendMessage(WifiMonitor.NETWORK_CONNECTION_EVENT, 0, 0, null);
mLooper.dispatchAll();
- verify(mWifiConfigManager).clearRecentFailureReason(eq(0));
- verify(mWifiConfigManager, never()).setRecentFailureAssociationStatus(anyInt(), anyInt());
+ verify(mWifiConfigManager, times(2)).clearRecentFailureReason(eq(0));
+ verify(mWifiConfigManager, times(1)).setRecentFailureAssociationStatus(anyInt(), anyInt());
}
private WifiConfiguration makeLastSelectedWifiConfiguration(int lastSelectedNetworkId,
@@ -4026,6 +4081,8 @@ public class ClientModeImplTest extends WifiBaseTest {
// Verifies that WifiLastResortWatchdog be notified
// for FOURWAY_HANDSHAKE_TIMEOUT.
+ mCmi.sendMessage(ClientModeImpl.CMD_START_CONNECT, 0, 0, sBSSID);
+ mLooper.dispatchAll();
mCmi.sendMessage(WifiMonitor.NETWORK_DISCONNECTION_EVENT, 0, 15, sBSSID);
mLooper.dispatchAll();
@@ -5121,6 +5178,8 @@ public class ClientModeImplTest extends WifiBaseTest {
verify(mWifiNative, never()).removeNetworkCachedData(anyInt());
// got 4WAY_HANDSHAKE_TIMEOUT during this connection attempt
+ mCmi.sendMessage(ClientModeImpl.CMD_START_CONNECT, 0, 0, sBSSID);
+ mLooper.dispatchAll();
mCmi.sendMessage(WifiMonitor.NETWORK_DISCONNECTION_EVENT, 0, 15, sBSSID);
mLooper.dispatchAll();