summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2018-03-20 23:09:20 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-03-20 23:09:20 +0000
commit19b7c71daffc4f90440c60de4ff201903f9dbd0a (patch)
tree0d23575a5919d454a3bed779abe6916379055110 /tests
parent6ebf773529372995c0494fe46ad6d037c6ea5447 (diff)
parentf0adc273f23fe6cb06fdc92f3c2b9b7961b62b5b (diff)
Merge "WificondScannerTest: fix some spurious timer actions" into pi-dev
Diffstat (limited to 'tests')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/scanner/HalWifiScannerTest.java2
-rw-r--r--tests/wifitests/src/com/android/server/wifi/scanner/WificondScannerTest.java73
2 files changed, 74 insertions, 1 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/HalWifiScannerTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/HalWifiScannerTest.java
index f9d6f4522..fc6e41778 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/HalWifiScannerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/HalWifiScannerTest.java
@@ -37,4 +37,6 @@ public class HalWifiScannerTest extends BaseWifiScannerImplTest {
mScanner = new HalWifiScannerImpl(mContext, BaseWifiScannerImplTest.IFACE_NAME,
mWifiNative, mWifiMonitor, mLooper.getLooper(), mClock);
}
+
+ // Subtle: tests are inherited from base class.
}
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 61e633fb2..d398a9a35 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/WificondScannerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/WificondScannerTest.java
@@ -22,9 +22,13 @@ import static com.android.server.wifi.ScanTestUtil.setupMockChannels;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
+import android.app.AlarmManager;
+import android.app.PendingIntent;
import android.net.wifi.WifiScanner;
import android.support.test.filters.SmallTest;
+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;
@@ -34,6 +38,7 @@ import org.junit.Test;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.util.HashSet;
import java.util.Set;
import java.util.regex.Pattern;
@@ -87,6 +92,73 @@ public class WificondScannerTest extends BaseWifiScannerImplTest {
verify(eventHandler).onScanStatus(WifiNative.WIFI_SCAN_FAILED);
}
+ @Test
+ public void externalScanResultsDoNotCauseSpuriousTimerCancellationOrCrash() {
+ mWifiMonitor.sendMessage(IFACE_NAME, WifiMonitor.SCAN_RESULTS_EVENT);
+ mLooper.dispatchAll();
+ verify(mAlarmManager.getAlarmManager(), never()).cancel(any(PendingIntent.class));
+ verify(mAlarmManager.getAlarmManager(), never())
+ .cancel(any(AlarmManager.OnAlarmListener.class));
+ verify(mAlarmManager.getAlarmManager(), never()).cancel(isNull(PendingIntent.class));
+ verify(mAlarmManager.getAlarmManager(), never())
+ .cancel(isNull(AlarmManager.OnAlarmListener.class));
+ }
+
+ @Test
+ public void externalScanResultsAfterOurScanDoNotCauseSpuriousTimerCancellationOrCrash() {
+ WifiNative.ScanSettings settings = new NativeScanSettingsBuilder()
+ .withBasePeriod(10000) // ms
+ .withMaxApPerScan(10)
+ .addBucketWithBand(10000 /* ms */, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN,
+ WifiScanner.WIFI_BAND_24_GHZ)
+ .build();
+
+ doSuccessfulSingleScanTest(settings,
+ expectedBandScanFreqs(WifiScanner.WIFI_BAND_24_GHZ),
+ new HashSet<String>(),
+ ScanResults.create(0, isAllChannelsScanned(WifiScanner.WIFI_BAND_24_GHZ),
+ 2400, 2450, 2450, 2400, 2450, 2450, 2400, 2450, 2450), false);
+
+ mWifiMonitor.sendMessage(IFACE_NAME, WifiMonitor.SCAN_RESULTS_EVENT);
+ mLooper.dispatchAll();
+ verify(mAlarmManager.getAlarmManager(), never()).cancel(any(PendingIntent.class));
+ verify(mAlarmManager.getAlarmManager(), times(1))
+ .cancel(any(AlarmManager.OnAlarmListener.class));
+ verify(mAlarmManager.getAlarmManager(), never()).cancel(isNull(PendingIntent.class));
+ verify(mAlarmManager.getAlarmManager(), never())
+ .cancel(isNull(AlarmManager.OnAlarmListener.class));
+ }
+
+ @Test
+ public void lateScanResultsDoNotCauseSpuriousTimerCancellationOrCrash() {
+ WifiNative.ScanSettings settings = new NativeScanSettingsBuilder()
+ .withBasePeriod(10000) // ms
+ .withMaxApPerScan(10)
+ .addBucketWithBand(10000 /* ms */, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN,
+ WifiScanner.WIFI_BAND_24_GHZ)
+ .build();
+
+ // Kick off a scan
+ when(mWifiNative.scan(eq(IFACE_NAME), anyInt(), any(), any(Set.class))).thenReturn(true);
+ WifiNative.ScanEventHandler eventHandler = mock(WifiNative.ScanEventHandler.class);
+ assertTrue(mScanner.startSingleScan(settings, eventHandler));
+ mLooper.dispatchAll();
+
+ // Report a timeout
+ mAlarmManager.dispatch(WificondScannerImpl.TIMEOUT_ALARM_TAG);
+ mLooper.dispatchAll();
+
+ // Now report scan results (results lost the race with timeout)
+ mWifiMonitor.sendMessage(IFACE_NAME, WifiMonitor.SCAN_RESULTS_EVENT);
+ mLooper.dispatchAll();
+
+ verify(mAlarmManager.getAlarmManager(), never()).cancel(any(PendingIntent.class));
+ verify(mAlarmManager.getAlarmManager(), never())
+ .cancel(any(AlarmManager.OnAlarmListener.class));
+ verify(mAlarmManager.getAlarmManager(), never()).cancel(isNull(PendingIntent.class));
+ verify(mAlarmManager.getAlarmManager(), never())
+ .cancel(isNull(AlarmManager.OnAlarmListener.class));
+ }
/**
* Test that dump() of WificondScannerImpl dumps native scan results.
@@ -109,5 +181,4 @@ public class WificondScannerTest extends BaseWifiScannerImplTest {
new String[0]);
return stringWriter.toString();
}
-
}