diff options
author | Rebecca Silberstein <silberst@google.com> | 2017-09-27 17:19:51 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-09-27 17:19:51 +0000 |
commit | 75dc8a494a00a37d19772220fdc639abc05ea3d0 (patch) | |
tree | 37f414a60c8ef5dc65b637053d16627f15232942 /tests | |
parent | a32e2000025fb2df125c3d14c2fa55ddecd4b790 (diff) | |
parent | e416f1b0ebc69d02147f72599fe41d5a045ca2d3 (diff) |
Merge "WifiStateMachine: check for null config after dhcp" into oc-mr1-dev
Diffstat (limited to 'tests')
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java index 07840fdac..177261632 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java @@ -1571,6 +1571,67 @@ public class WifiStateMachineTest { } /** + * Test that we disconnect from a network if it was removed while we are in the + * ObtainingIpState. + */ + @Test + public void disconnectFromNetworkWhenRemovedWhileObtainingIpAddr() throws Exception { + initializeAndAddNetworkAndVerifySuccess(); + + when(mWifiConfigManager.enableNetwork(eq(0), eq(true), anyInt())).thenReturn(true); + when(mWifiConfigManager.checkAndUpdateLastConnectUid(eq(0), anyInt())).thenReturn(true); + + mWsm.setOperationalMode(WifiStateMachine.CONNECT_MODE); + mLooper.dispatchAll(); + verify(mWifiNative).removeAllNetworks(); + + mLooper.startAutoDispatch(); + assertTrue(mWsm.syncEnableNetwork(mWsmAsyncChannel, 0, true)); + mLooper.stopAutoDispatch(); + + verify(mWifiConfigManager).enableNetwork(eq(0), eq(true), anyInt()); + verify(mWifiConnectivityManager).setUserConnectChoice(eq(0)); + when(mWifiConfigManager.getScanDetailCacheForNetwork(FRAMEWORK_NETWORK_ID)) + .thenReturn(mScanDetailCache); + + when(mScanDetailCache.getScanDetail(sBSSID)).thenReturn( + getGoogleGuestScanDetail(TEST_RSSI, sBSSID, sFreq)); + when(mScanDetailCache.getScanResult(sBSSID)).thenReturn( + getGoogleGuestScanDetail(TEST_RSSI, sBSSID, sFreq).getScanResult()); + + mWsm.sendMessage(WifiMonitor.NETWORK_CONNECTION_EVENT, 0, 0, sBSSID); + mLooper.dispatchAll(); + + mWsm.sendMessage(WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT, 0, 0, + new StateChangeResult(0, sWifiSsid, sBSSID, SupplicantState.COMPLETED)); + mLooper.dispatchAll(); + + assertEquals("ObtainingIpState", getCurrentState().getName()); + + // now remove the config + when(mWifiConfigManager.removeNetwork(eq(FRAMEWORK_NETWORK_ID), anyInt())) + .thenReturn(true); + mWsm.sendMessage(WifiManager.FORGET_NETWORK, FRAMEWORK_NETWORK_ID, MANAGED_PROFILE_UID); + mLooper.dispatchAll(); + verify(mWifiConfigManager).removeNetwork(eq(FRAMEWORK_NETWORK_ID), anyInt()); + + reset(mWifiConfigManager); + + when(mWifiConfigManager.getConfiguredNetwork(FRAMEWORK_NETWORK_ID)).thenReturn(null); + + DhcpResults dhcpResults = new DhcpResults(); + dhcpResults.setGateway("1.2.3.4"); + dhcpResults.setIpAddress("192.168.1.100", 0); + dhcpResults.addDns("8.8.8.8"); + dhcpResults.setLeaseDuration(3600); + + injectDhcpSuccess(dhcpResults); + mLooper.dispatchAll(); + + assertEquals("DisconnectingState", getCurrentState().getName()); + } + + /** * Sunny-day scenario for WPS connections. Verifies that after a START_WPS and * NETWORK_CONNECTION_EVENT command, WifiStateMachine will have transitioned to ObtainingIpState */ |