summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTairu Wang <tairuw@google.com>2023-07-10 16:39:02 -0700
committerTairu Wang <tairuw@google.com>2023-07-11 12:59:02 -0700
commit4085bffe091ee82d88e5c301b44f5ee7906dc29e (patch)
tree40f011f1d23845f4a508d7901edfd6b68d51a04e
parent22e14b73f74af7bfa002ec84346e00ac132eea34 (diff)
downloadIwlan-4085bffe091ee82d88e5c301b44f5ee7906dc29e.tar.gz
Avoid network change during tunnel bring up not toggle tunnel bringdown
- Update sNetwork at the end of setNetworkConnected(). Bug: 289446567 Test: atest IwlanTests: IwlanDataServiceTest#testNetworkChangeDuringTunnelBringUp_closeTunnel, sanity test Change-Id: I5aa7becf7613c38cc473a5d0c49f18ba661d296d
-rw-r--r--src/com/google/android/iwlan/IwlanDataService.java4
-rw-r--r--test/com/google/android/iwlan/IwlanDataServiceTest.java34
2 files changed, 36 insertions, 2 deletions
diff --git a/src/com/google/android/iwlan/IwlanDataService.java b/src/com/google/android/iwlan/IwlanDataService.java
index 9c1b549..5d9006a 100644
--- a/src/com/google/android/iwlan/IwlanDataService.java
+++ b/src/com/google/android/iwlan/IwlanDataService.java
@@ -1891,7 +1891,6 @@ public class IwlanDataService extends DataService {
}
sDefaultDataTransport = transport;
- sNetwork = network;
sNetworkConnected = networkConnected;
if (networkConnected) {
@@ -1914,7 +1913,7 @@ public class IwlanDataService extends DataService {
sLinkProperties = linkProperties;
for (IwlanDataServiceProvider dp : sIwlanDataServiceProviders.values()) {
dp.dnsPrefetchCheck();
- dp.updateNetwork(sNetwork, linkProperties);
+ dp.updateNetwork(network, linkProperties);
}
IwlanHelper.updateCountryCodeWhenNetworkConnected();
}
@@ -1927,6 +1926,7 @@ public class IwlanDataService extends DataService {
dp.forceCloseTunnelsInDeactivatingState();
}
}
+ sNetwork = network;
}
/**
diff --git a/test/com/google/android/iwlan/IwlanDataServiceTest.java b/test/com/google/android/iwlan/IwlanDataServiceTest.java
index 2f8f2c3..b7cda5b 100644
--- a/test/com/google/android/iwlan/IwlanDataServiceTest.java
+++ b/test/com/google/android/iwlan/IwlanDataServiceTest.java
@@ -1780,4 +1780,38 @@ public class IwlanDataServiceTest {
method.setAccessible(true);
return method.invoke(target, args);
}
+
+ @Test
+ public void testNetworkChangeDuringTunnelBringUp_closeTunnel() {
+ DataProfile dp = buildImsDataProfile();
+ Network newNetwork1 = createMockNetwork(mLinkProperties);
+ onSystemDefaultNetworkConnected(
+ newNetwork1, mLinkProperties, TRANSPORT_WIFI, DEFAULT_SUB_INDEX);
+
+ mSpyIwlanDataServiceProvider.setupDataCall(
+ AccessNetworkType.IWLAN, /* AccessNetworkType */
+ dp, /* dataProfile */
+ false, /* isRoaming */
+ true, /* allowRoaming */
+ DataService.REQUEST_REASON_NORMAL, /* DataService.REQUEST_REASON_NORMAL */
+ null, /* LinkProperties */
+ 1, /* pduSessionId */
+ null, /* sliceInfo */
+ null, /* trafficDescriptor */
+ true, /* matchAllRuleAllowed */
+ mMockDataServiceCallback);
+ mTestLooper.dispatchAll();
+
+ /* Check bringUpTunnel() is called. */
+ verify(mMockEpdgTunnelManager, times(1))
+ .bringUpTunnel(
+ any(TunnelSetupRequest.class),
+ any(IwlanTunnelCallback.class),
+ any(IwlanTunnelMetricsImpl.class));
+
+ Network newNetwork2 = createMockNetwork(mLinkProperties);
+ onSystemDefaultNetworkConnected(
+ newNetwork2, mLinkProperties, TRANSPORT_WIFI, DEFAULT_SUB_INDEX);
+ verify(mMockEpdgTunnelManager, times(1)).closeTunnel(any(), anyBoolean(), any(), any());
+ }
}