summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2020-05-29 10:24:30 -0700
committerRoshan Pius <rpius@google.com>2020-05-29 13:17:38 -0700
commitec1025373054e637e3b0e4e25ecafb18a4086e29 (patch)
tree83aa2e83fdcb3a68fe1f2d534f955043f3d136ea /tests
parentb33a1d5b8d8583628ca94b3df7ed5ededca1191d (diff)
WifiNetworkFactory: Stop scanning once user selects a network
Once the user selects one of the matched networks (or was pre-approved), there is no need to continue scanning. Scanning while connecting could lead to disruption in the connection (because the chip needs to go off-channel when connecting/DHCP). Previously, we were cancelling periodic scans only after the connection is established. Also, reset |IsTimerSet| boolean when the corresponding timers fire. Bug: 157603386 Test: atest com.android.server.wifi Test: act.py -c wifi_manager_cross.config -tb dut-name -tc WifiNetworkRequestTest Test: Manually verified that scans are stopped after user selection. Change-Id: I88af4e2d3f2331ba41bacea6fb6b9936e8db88a8
Diffstat (limited to 'tests')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java47
1 files changed, 39 insertions, 8 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java b/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java
index 25aaeffd6..5f9e0333e 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiNetworkFactoryTest.java
@@ -644,6 +644,35 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
}
/**
+ * Verify the periodic scan back off to find a network matching the network specifier
+ * is cancelled when the user selects a network.
+ */
+ @Test
+ public void testPeriodicScanCancelOnUserSelectNetwork() throws Exception {
+ attachDefaultWifiNetworkSpecifierAndAppInfo(TEST_UID_1, false);
+ mWifiNetworkFactory.needNetworkFor(mNetworkRequest, 0);
+
+ mWifiNetworkFactory.addCallback(mAppBinder, mNetworkRequestMatchCallback,
+ TEST_CALLBACK_IDENTIFIER);
+ verify(mNetworkRequestMatchCallback).onUserSelectionCallbackRegistration(
+ mNetworkRequestUserSelectionCallback.capture());
+
+ verifyPeriodicScans(0,
+ PERIODIC_SCAN_INTERVAL_MS, // 10s
+ PERIODIC_SCAN_INTERVAL_MS); // 10s
+
+ // Now trigger user selection to one of the network.
+ mSelectedNetwork = WifiConfigurationTestUtil.createPskNetwork();
+ mSelectedNetwork.SSID = "\"" + TEST_SSID_1 + "\"";
+ sendUserSelectionSelect(mNetworkRequestUserSelectionCallback.getValue(), mSelectedNetwork);
+ mLooper.dispatchAll();
+
+ // Cancel the alarm set for the next scan.
+ verify(mAlarmManager).cancel(mPeriodicScanListenerArgumentCaptor.getValue());
+ }
+
+
+ /**
* Verify callback registration/unregistration.
*/
@Test
@@ -1345,7 +1374,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
}
mInOrder = inOrder(mAlarmManager, mClientModeImpl);
- validateConnectionRetryAttempts();
+ validateConnectionRetryAttempts(true);
// Fail the request after all the retries are exhausted.
verify(mNetworkRequestMatchCallback).onAbort();
@@ -1373,7 +1402,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
mLooper.dispatchAll();
mInOrder = inOrder(mAlarmManager, mClientModeImpl);
- validateConnectionRetryAttempts();
+ validateConnectionRetryAttempts(false);
// Fail the request after all the retries are exhausted.
verify(mNetworkRequestMatchCallback).onAbort();
@@ -1407,7 +1436,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
}
mInOrder = inOrder(mAlarmManager, mClientModeImpl);
- validateConnectionRetryAttempts();
+ validateConnectionRetryAttempts(false);
verify(mNetworkRequestMatchCallback).onAbort();
// Verify that we sent the connection failure callback.
@@ -1453,7 +1482,7 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
}
mInOrder = inOrder(mAlarmManager, mClientModeImpl);
- validateConnectionRetryAttempts();
+ validateConnectionRetryAttempts(false);
// Verify that we sent the connection failure callback.
verify(mNetworkRequestMatchCallback).onUserSelectionConnectFailure(
@@ -2783,11 +2812,13 @@ public class WifiNetworkFactoryTest extends WifiBaseTest {
}
}
- private void validateConnectionRetryAttempts() {
+ private void validateConnectionRetryAttempts(boolean onTimeout) {
for (int i = 0; i < WifiNetworkFactory.USER_SELECTED_NETWORK_CONNECT_RETRY_MAX; i++) {
- // Cancel the existing connection timeout.
- mInOrder.verify(mAlarmManager).cancel(
- mConnectionTimeoutAlarmListenerArgumentCaptor.getValue());
+ if (!onTimeout) {
+ // Cancel the existing connection timeout.
+ mInOrder.verify(mAlarmManager).cancel(
+ mConnectionTimeoutAlarmListenerArgumentCaptor.getValue());
+ }
// Trigger new connection.
mInOrder.verify(mClientModeImpl).connect(eq(null), eq(TEST_NETWORK_ID_1),