summaryrefslogtreecommitdiffstats
path: root/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java60
1 files changed, 54 insertions, 6 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
index 022997d67..281ffa163 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
@@ -33,6 +33,7 @@ import android.net.wifi.WifiManager;
import android.net.wifi.WifiScanner;
import android.net.wifi.WifiScanner.PnoScanListener;
import android.net.wifi.WifiScanner.PnoSettings;
+import android.net.wifi.WifiScanner.ScanData;
import android.net.wifi.WifiScanner.ScanListener;
import android.net.wifi.WifiScanner.ScanSettings;
import android.net.wifi.WifiSsid;
@@ -71,11 +72,12 @@ public class WifiConnectivityManagerTest {
mWifiStateMachine = mockWifiStateMachine();
mWifiConfigManager = mockWifiConfigManager();
mWifiInfo = getWifiInfo();
+ mScanData = mockScanData();
mWifiScanner = mockWifiScanner();
mWifiQNS = mockWifiQualifiedNetworkSelector();
mWifiConnectivityManager = new WifiConnectivityManager(mContext, mWifiStateMachine,
mWifiScanner, mWifiConfigManager, mWifiInfo, mWifiQNS, mWifiInjector,
- mLooper.getLooper());
+ mLooper.getLooper(), true);
mWifiConnectivityManager.setWifiEnabled(true);
when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime());
}
@@ -96,6 +98,7 @@ public class WifiConnectivityManagerTest {
private WifiQualifiedNetworkSelector mWifiQNS;
private WifiStateMachine mWifiStateMachine;
private WifiScanner mWifiScanner;
+ private ScanData mScanData;
private WifiConfigManager mWifiConfigManager;
private WifiInfo mWifiInfo;
private Clock mClock = mock(Clock.class);
@@ -128,6 +131,14 @@ public class WifiConnectivityManagerTest {
return context;
}
+ ScanData mockScanData() {
+ ScanData scanData = mock(ScanData.class);
+
+ when(scanData.isAllChannelsScanned()).thenReturn(true);
+
+ return scanData;
+ }
+
WifiScanner mockWifiScanner() {
WifiScanner scanner = mock(WifiScanner.class);
ArgumentCaptor<ScanListener> allSingleScanListenerCaptor =
@@ -135,9 +146,8 @@ public class WifiConnectivityManagerTest {
doNothing().when(scanner).registerScanListener(allSingleScanListenerCaptor.capture());
- // dummy scan results. QNS PeriodicScanListener bulids scanDetails from
- // the fullScanResult and doesn't really use results
- final WifiScanner.ScanData[] scanDatas = new WifiScanner.ScanData[1];
+ ScanData[] scanDatas = new ScanData[1];
+ scanDatas[0] = mScanData;
// do a synchronous answer for the ScanListener callbacks
doAnswer(new AnswerWithArguments() {
@@ -756,8 +766,9 @@ public class WifiConnectivityManagerTest {
currentTimeStamp += 2000;
when(mClock.elapsedRealtime()).thenReturn(currentTimeStamp);
- // Force a connectivity scan
- mWifiConnectivityManager.forceConnectivityScan();
+ // Allow untrusted networks so WifiConnectivityManager starts a periodic scan
+ // immediately.
+ mWifiConnectivityManager.setUntrustedConnectionAllowed(true);
// Get the second periodic scan actual time stamp. Note, this scan is not
// started from the AlarmManager.
@@ -944,4 +955,41 @@ public class WifiConnectivityManagerTest {
verify(mWifiStateMachine).autoConnectToNetwork(
CANDIDATE_NETWORK_ID, CANDIDATE_BSSID);
}
+
+ /**
+ * Verify that a forced connectivity scan waits for full band scan
+ * results.
+ *
+ * Expected behavior: WifiConnectivityManager doesn't invoke
+ * WifiStateMachine.autoConnectToNetwork() when full band scan
+ * results are not available.
+ */
+ @Test
+ public void waitForFullBandScanResults() {
+ // Set WiFi to connected state.
+ mWifiConnectivityManager.handleConnectionStateChanged(
+ WifiConnectivityManager.WIFI_STATE_CONNECTED);
+
+ // Set up as partial scan results.
+ when(mScanData.isAllChannelsScanned()).thenReturn(false);
+
+ // Force a connectivity scan which enables WifiConnectivityManager
+ // to wait for full band scan results.
+ mWifiConnectivityManager.forceConnectivityScan();
+
+ // No roaming because no full band scan results.
+ verify(mWifiStateMachine, times(0)).autoConnectToNetwork(
+ CANDIDATE_NETWORK_ID, CANDIDATE_BSSID);
+
+ // Set up as full band scan results.
+ when(mScanData.isAllChannelsScanned()).thenReturn(true);
+
+ // Force a connectivity scan which enables WifiConnectivityManager
+ // to wait for full band scan results.
+ mWifiConnectivityManager.forceConnectivityScan();
+
+ // Roaming attempt because full band scan results are available.
+ verify(mWifiStateMachine).autoConnectToNetwork(
+ CANDIDATE_NETWORK_ID, CANDIDATE_BSSID);
+ }
}