summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNingyuan Wang <nywang@google.com>2017-09-27 16:19:39 -0700
committerNingyuan Wang <nywang@google.com>2017-09-28 16:17:23 -0700
commite6b6ab66c49702d3358b4894d28e322ea9534a84 (patch)
tree14f721c9a85efab2f6d1be402161340563b74b17 /tests
parent75dc8a494a00a37d19772220fdc639abc05ea3d0 (diff)
Fail scan request if no channels are available
This fails scan request if no available channels could be scanned for this request. With this fix we can avoid the freezing of WifiScanner in aformentioned case. Bug: 67015387 Test: compile, unit test, integration test Change-Id: I68654ce8d53104484c1559d8b0525585ab50b9e5
Diffstat (limited to 'tests')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/scanner/WificondScannerTest.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/WificondScannerTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/WificondScannerTest.java
index ed7c58298..d337cf1cf 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/WificondScannerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/WificondScannerTest.java
@@ -32,6 +32,7 @@ import com.android.server.wifi.ScanDetail;
import com.android.server.wifi.ScanResults;
import com.android.server.wifi.WifiMonitor;
import com.android.server.wifi.WifiNative;
+import com.android.server.wifi.scanner.ChannelHelper.ChannelCollection;
import org.junit.Before;
import org.junit.Test;
@@ -56,6 +57,39 @@ public class WificondScannerTest extends BaseWifiScannerImplTest {
mLooper.getLooper(), mClock);
}
+ /**
+ * Test that WificondScannerImpl will not issue a scan and report scan failure
+ * when there is no channel to scan for.
+ */
+ @Test
+ public void singleScanNotIssuedIfNoAvailableChannels() {
+ // Use mocked ChannelHelper and ChannelCollection to simulate the scenario
+ // that no channel is available for this request.
+ ChannelHelper channelHelper = mock(ChannelHelper.class);
+ ChannelCollection channelCollection = mock(ChannelCollection.class);
+ when(channelHelper.createChannelCollection()).thenReturn(channelCollection);
+ when(channelCollection.isEmpty()).thenReturn(true);
+
+ mScanner = new WificondScannerImpl(mContext, mWifiNative, mWifiMonitor,
+ channelHelper, mLooper.getLooper(), mClock);
+
+ WifiNative.ScanSettings settings = new NativeScanSettingsBuilder()
+ .withBasePeriod(10000) // ms
+ .withMaxApPerScan(10)
+ .addBucketWithBand(10000 /* ms */, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN,
+ WifiScanner.WIFI_BAND_5_GHZ)
+ .build();
+ WifiNative.ScanEventHandler eventHandler = mock(WifiNative.ScanEventHandler.class);
+ mScanner.startSingleScan(settings, eventHandler);
+
+ mLooper.dispatchAll();
+
+ // No scan is issued to WifiNative.
+ verify(mWifiNative, never()).scan(any(), any(Set.class));
+ // A scan failed event must be reported.
+ verify(eventHandler).onScanStatus(WifiNative.WIFI_SCAN_FAILED);
+ }
+
@Test
public void backgroundScanSuccessSingleBucket() {
WifiNative.ScanSettings settings = new NativeScanSettingsBuilder()