summaryrefslogtreecommitdiffstats
path: root/tests/wifitests/src/com/android/server
diff options
context:
space:
mode:
authorDavid Su <dysu@google.com>2018-10-10 15:10:07 -0700
committerDavid Su <dysu@google.com>2018-10-31 09:47:23 -0700
commitf27f8fc96593d686ca8c71fa851635d50a47b549 (patch)
tree501db90525c1f387a19a392115ffd95635ba6691 /tests/wifitests/src/com/android/server
parent1223e9aa52466139b4de0637c4f9dd3d00b8b20b (diff)
downloadandroid_frameworks_opt_net_wifi-f27f8fc96593d686ca8c71fa851635d50a47b549.tar.gz
android_frameworks_opt_net_wifi-f27f8fc96593d686ca8c71fa851635d50a47b549.tar.bz2
android_frameworks_opt_net_wifi-f27f8fc96593d686ca8c71fa851635d50a47b549.zip
Increased Wifi Wake consecutive missed scans to 5 and force add last disconnected network to Wakeup Lock.
Due to low latency Wifi scans on new devices being more flaky than before, increase the number of missed scans required to evict from 3 to 5. In addition, always add the last connected network to the Wakeup Lock, since we do not want to automatically reconnect to a network that the user manually disconnected from. Bug: 112812039 Bug: 112047384 Test: frameworks/opt/net/wifi/tests/wifitests/runtests.sh Test: connect to AP, disable Wifi on device, wait for scans to initialize Wakeup Lock (trigger scans by opening Google Maps), turn off AP, wait for AP to be evicted from Wakeup Lock, turn on AP, Wifi Wake should turn on Wifi and reconnect to AP. Test: ACTS WifiWakeTest Change-Id: I506a1c860ddbd2bfbcd52cf6a23f1ee4e0ca00c6
Diffstat (limited to 'tests/wifitests/src/com/android/server')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java57
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WakeupLockTest.java11
2 files changed, 62 insertions, 6 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java b/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
index 3734ba786..dcea61a48 100644
--- a/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
@@ -75,6 +75,7 @@ public class WakeupControllerTest {
@Mock private WifiWakeMetrics mWifiWakeMetrics;
@Mock private WifiController mWifiController;
@Mock private WifiNative mWifiNative;
+ @Mock private Clock mClock;
private TestLooper mLooper;
private WakeupController mWakeupController;
@@ -129,7 +130,8 @@ public class WakeupControllerTest {
mWifiConfigStore,
mWifiWakeMetrics,
mWifiInjector,
- mFrameworkFacade);
+ mFrameworkFacade,
+ mClock);
ArgumentCaptor<WakeupConfigStoreData> captor =
ArgumentCaptor.forClass(WakeupConfigStoreData.class);
@@ -563,4 +565,57 @@ public class WakeupControllerTest {
contentObserver.onChange(false /* selfChange */);
verify(mWakeupOnboarding).setOnboarded();
}
+
+ /**
+ * When Wifi disconnects from a network, and within LAST_DISCONNECT_TIMEOUT_MILLIS Wifi is
+ * disabled, then the last connected Wifi network should be added to the wakeup lock.
+ *
+ * This simulates when a Wifi network sporadically connects and disconnects. During the
+ * disconnected phase, the user forcibly disables Wifi to stop this intermittent behavior. Then,
+ * we should add the network to the wake lock to ensure Wifi Wake does not automatically
+ * reconnect to this network.
+ *
+ * Also verifies that after the above flow, when Wifi is re-enabled, then disabled again, the
+ * last connected network should be reset and no networks should be added to the wakeup lock.
+ */
+ @Test
+ public void lastConnectedNetworkAddedToLock() {
+ when(mClock.getElapsedSinceBootMillis()).thenReturn(0L,
+ (long) (0.8 * WakeupController.LAST_DISCONNECT_TIMEOUT_MILLIS));
+ ScanResultMatchInfo matchInfo = ScanResultMatchInfo.fromScanResult(mTestScanResult);
+ when(mWifiConfigManager.getSavedNetworks()).thenReturn(Collections.emptyList());
+ when(mWifiScanner.getSingleScanResults()).thenReturn(Collections.emptyList());
+ initializeWakeupController(true);
+
+ mWakeupController.setLastDisconnectInfo(matchInfo);
+ mWakeupController.start();
+
+ verify(mWakeupLock).setLock(eq(Collections.singleton(matchInfo)));
+
+ mWakeupController.stop();
+ mWakeupController.reset();
+ mWakeupController.start();
+
+ verify(mWakeupLock).setLock(eq(Collections.emptySet()));
+ }
+
+ /**
+ * When Wifi disconnects from a network, and Wifi is disabled after more than
+ * LAST_DISCONNECT_TIMEOUT_MILLIS, the last connected Wifi network should not be added to the
+ * wakeup lock.
+ */
+ @Test
+ public void expiredLastConnectedNetworkNotAddedToLock() {
+ when(mClock.getElapsedSinceBootMillis()).thenReturn(0L,
+ (long) (1.2 * WakeupController.LAST_DISCONNECT_TIMEOUT_MILLIS));
+ ScanResultMatchInfo matchInfo = ScanResultMatchInfo.fromScanResult(mTestScanResult);
+ when(mWifiConfigManager.getSavedNetworks()).thenReturn(Collections.emptyList());
+ when(mWifiScanner.getSingleScanResults()).thenReturn(Collections.emptyList());
+ initializeWakeupController(true);
+
+ mWakeupController.setLastDisconnectInfo(matchInfo);
+ mWakeupController.start();
+
+ verify(mWakeupLock).setLock(eq(Collections.emptySet()));
+ }
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WakeupLockTest.java b/tests/wifitests/src/com/android/server/wifi/WakeupLockTest.java
index 43605f484..8bd38e156 100644
--- a/tests/wifitests/src/com/android/server/wifi/WakeupLockTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WakeupLockTest.java
@@ -105,10 +105,10 @@ public class WakeupLockTest {
mWakeupLock.setLock(networks);
assertFalse(mWakeupLock.isInitialized());
- mWakeupLock.update(networks);
- assertFalse(mWakeupLock.isInitialized());
- mWakeupLock.update(networks);
- assertFalse(mWakeupLock.isInitialized());
+ for (int i = 0; i < WakeupLock.CONSECUTIVE_MISSED_SCANS_REQUIRED_TO_EVICT - 1; i++) {
+ mWakeupLock.update(networks);
+ assertFalse(mWakeupLock.isInitialized());
+ }
mWakeupLock.update(networks);
assertTrue(mWakeupLock.isInitialized());
}
@@ -283,7 +283,8 @@ public class WakeupLockTest {
for (int i = 0; i < WakeupLock.CONSECUTIVE_MISSED_SCANS_REQUIRED_TO_EVICT; i++) {
mWakeupLock.update(Collections.emptyList());
}
- verify(mWifiWakeMetrics).recordUnlockEvent(3 /* numScans */);
+ verify(mWifiWakeMetrics).recordUnlockEvent(
+ WakeupLock.CONSECUTIVE_MISSED_SCANS_REQUIRED_TO_EVICT /* numScans */);
}
private void setLockAndInitializeByTimeout(Collection<ScanResultMatchInfo> networks) {