diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2018-03-20 23:09:20 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-03-20 23:09:20 +0000 |
commit | 19b7c71daffc4f90440c60de4ff201903f9dbd0a (patch) | |
tree | 0d23575a5919d454a3bed779abe6916379055110 /tests | |
parent | 6ebf773529372995c0494fe46ad6d037c6ea5447 (diff) | |
parent | f0adc273f23fe6cb06fdc92f3c2b9b7961b62b5b (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.java | 2 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/scanner/WificondScannerTest.java | 73 |
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(); } - } |