diff options
author | Tairu Wang <tairuw@google.com> | 2024-02-20 20:14:27 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2024-02-20 20:14:27 +0000 |
commit | b037f04699fc29335b99e40d5f63b00cbe412079 (patch) | |
tree | 1aa425a61f16a5b819113ffd16ddbe8088da1c51 | |
parent | 74f115e22884043cd57d20e4e8c9d12b3e898782 (diff) | |
parent | 2bb7b2a4be3d5ab39fa8b162a28442da37c0691f (diff) | |
download | Iwlan-b037f04699fc29335b99e40d5f63b00cbe412079.tar.gz |
Clarify tunnel bring down reason for tunnel closure. am: 2bb7b2a4be
Original change: https://android-review.googlesource.com/c/platform/packages/services/Iwlan/+/2968802
Change-Id: Iec8f369a86bdde159166b3260e633719ee13b1a6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
4 files changed, 65 insertions, 35 deletions
diff --git a/src/com/google/android/iwlan/IwlanDataService.java b/src/com/google/android/iwlan/IwlanDataService.java index 0259f28..c1c8bc3 100644 --- a/src/com/google/android/iwlan/IwlanDataService.java +++ b/src/com/google/android/iwlan/IwlanDataService.java @@ -20,6 +20,11 @@ import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; import static android.net.ipsec.ike.ike3gpp.Ike3gppParams.PDU_SESSION_ID_UNSET; +import static com.google.android.iwlan.epdg.EpdgTunnelManager.BRINGDOWN_REASON_DEACTIVATE_DATA_CALL; +import static com.google.android.iwlan.epdg.EpdgTunnelManager.BRINGDOWN_REASON_IN_DEACTIVATING_STATE; +import static com.google.android.iwlan.epdg.EpdgTunnelManager.BRINGDOWN_REASON_NETWORK_UPDATE_WHEN_TUNNEL_IN_BRINGUP; +import static com.google.android.iwlan.epdg.EpdgTunnelManager.BRINGDOWN_REASON_SERVICE_OUT_OF_SYNC; + import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; @@ -923,7 +928,8 @@ public class IwlanDataService extends DataService { entry.getKey(), true /* forceClose */, getIwlanTunnelCallback(), - getIwlanTunnelMetrics()); + getIwlanTunnelMetrics(), + BRINGDOWN_REASON_IN_DEACTIVATING_STATE); } } } @@ -1047,7 +1053,8 @@ public class IwlanDataService extends DataService { entry.getKey(), true /* forceClose */, getIwlanTunnelCallback(), - getIwlanTunnelMetrics()); + getIwlanTunnelMetrics(), + BRINGDOWN_REASON_NETWORK_UPDATE_WHEN_TUNNEL_IN_BRINGUP); } } } @@ -1651,7 +1658,8 @@ public class IwlanDataService extends DataService { dataProfile.getApnSetting().getApnName(), true /* forceClose */, iwlanDataServiceProvider.getIwlanTunnelCallback(), - iwlanDataServiceProvider.getIwlanTunnelMetrics()); + iwlanDataServiceProvider.getIwlanTunnelMetrics(), + BRINGDOWN_REASON_SERVICE_OUT_OF_SYNC); iwlanDataServiceProvider.deliverCallback( IwlanDataServiceProvider.CALLBACK_TYPE_SETUP_DATACALL_COMPLETE, 5 /* DataServiceCallback @@ -1922,7 +1930,8 @@ public class IwlanDataService extends DataService { matchingApn, isNetworkLost || isHandoverSuccessful, /* forceClose */ serviceProvider.getIwlanTunnelCallback(), - serviceProvider.getIwlanTunnelMetrics()); + serviceProvider.getIwlanTunnelMetrics(), + BRINGDOWN_REASON_DEACTIVATE_DATA_CALL); } private void resumePendingDeactivationIfExists( diff --git a/src/com/google/android/iwlan/epdg/EpdgTunnelManager.java b/src/com/google/android/iwlan/epdg/EpdgTunnelManager.java index fc9be74..8b53ee1 100644 --- a/src/com/google/android/iwlan/epdg/EpdgTunnelManager.java +++ b/src/com/google/android/iwlan/epdg/EpdgTunnelManager.java @@ -245,11 +245,19 @@ public class EpdgTunnelManager { public static final int BRINGDOWN_REASON_UNKNOWN = 0; public static final int BRINGDOWN_REASON_DISABLE_N1_MODE = 1; public static final int BRINGDOWN_REASON_ENABLE_N1_MODE = 2; + public static final int BRINGDOWN_REASON_SERVICE_OUT_OF_SYNC = 3; + public static final int BRINGDOWN_REASON_IN_DEACTIVATING_STATE = 4; + public static final int BRINGDOWN_REASON_NETWORK_UPDATE_WHEN_TUNNEL_IN_BRINGUP = 5; + public static final int BRINGDOWN_REASON_DEACTIVATE_DATA_CALL = 6; @IntDef({ BRINGDOWN_REASON_UNKNOWN, BRINGDOWN_REASON_DISABLE_N1_MODE, BRINGDOWN_REASON_ENABLE_N1_MODE, + BRINGDOWN_REASON_SERVICE_OUT_OF_SYNC, + BRINGDOWN_REASON_IN_DEACTIVATING_STATE, + BRINGDOWN_REASON_NETWORK_UPDATE_WHEN_TUNNEL_IN_BRINGUP, + BRINGDOWN_REASON_DEACTIVATE_DATA_CALL, }) public @interface TunnelBringDownReason {} @@ -261,6 +269,14 @@ public class EpdgTunnelManager { return "BRINGDOWN_REASON_DISABLE_N1_MODE"; case BRINGDOWN_REASON_ENABLE_N1_MODE: return "BRINGDOWN_REASON_ENABLE_N1_MODE"; + case BRINGDOWN_REASON_SERVICE_OUT_OF_SYNC: + return "BRINGDOWN_REASON_SERVICE_OUT_OF_SYNC"; + case BRINGDOWN_REASON_IN_DEACTIVATING_STATE: + return "BRINGDOWN_REASON_IN_DEACTIVATING_STATE"; + case BRINGDOWN_REASON_NETWORK_UPDATE_WHEN_TUNNEL_IN_BRINGUP: + return "BRINGDOWN_REASON_NETWORK_UPDATE_WHEN_TUNNEL_IN_BRINGUP"; + case BRINGDOWN_REASON_DEACTIVATE_DATA_CALL: + return "BRINGDOWN_REASON_DEACTIVATE_DATA_CALL"; default: return "Unknown(" + reason + ")"; } @@ -701,24 +717,6 @@ public class EpdgTunnelManager { * provided in {@link #bringUpTunnel}. If no tunnel was available, callback will be delivered * using client-provided provided tunnelCallback and iwlanTunnelMetrics * - * @param apnName apn name - * @param forceClose if true, results in local cleanup of tunnel - * @param tunnelCallback Used if no current or pending IWLAN tunnel exists - * @param iwlanTunnelMetrics Used to report metrics if no current or pending IWLAN tunnel exists - */ - // TODO(b/309866889): Clarify tunnel bring down reason for tunnel closure. - public void closeTunnel( - @NonNull String apnName, - boolean forceClose, - @NonNull TunnelCallback tunnelCallback, - @NonNull IwlanTunnelMetricsImpl iwlanTunnelMetrics) { - closeTunnel( - apnName, forceClose, tunnelCallback, iwlanTunnelMetrics, BRINGDOWN_REASON_UNKNOWN); - } - - /** - * Closes tunnel for an apn with reason. - * * @param apnName APN name * @param forceClose if {@code true}, triggers a local cleanup of the tunnel; if {@code false}, * performs a normal closure procedure diff --git a/test/com/google/android/iwlan/IwlanDataServiceTest.java b/test/com/google/android/iwlan/IwlanDataServiceTest.java index bdbe4d9..bb53780 100644 --- a/test/com/google/android/iwlan/IwlanDataServiceTest.java +++ b/test/com/google/android/iwlan/IwlanDataServiceTest.java @@ -27,6 +27,9 @@ import static android.telephony.TelephonyManager.NETWORK_TYPE_BITMASK_NR; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession; +import static com.google.android.iwlan.epdg.EpdgTunnelManager.BRINGDOWN_REASON_DEACTIVATE_DATA_CALL; +import static com.google.android.iwlan.epdg.EpdgTunnelManager.BRINGDOWN_REASON_NETWORK_UPDATE_WHEN_TUNNEL_IN_BRINGUP; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; @@ -458,7 +461,8 @@ public class IwlanDataServiceTest { networkCallback.onLinkPropertiesChanged(mMockNetwork, newLinkProperties); verify(mMockEpdgTunnelManager, times(1)) .updateNetwork(eq(mMockNetwork), eq(newLinkProperties)); - verify(mMockEpdgTunnelManager, never()).closeTunnel(any(), anyBoolean(), any(), any()); + verify(mMockEpdgTunnelManager, never()) + .closeTunnel(any(), anyBoolean(), any(), any(), anyInt()); } @Test @@ -867,7 +871,8 @@ public class IwlanDataServiceTest { eq(TEST_APN_NAME), eq(false), any(IwlanTunnelCallback.class), - any(IwlanTunnelMetricsImpl.class)); + any(IwlanTunnelMetricsImpl.class), + eq(BRINGDOWN_REASON_DEACTIVATE_DATA_CALL)); /* Check callback result is RESULT_SUCCESS when onClosed() is called. */ mSpyIwlanDataServiceProvider @@ -907,7 +912,8 @@ public class IwlanDataServiceTest { eq(TEST_APN_NAME), eq(true) /* forceClose */, any(IwlanTunnelCallback.class), - any(IwlanTunnelMetricsImpl.class)); + any(IwlanTunnelMetricsImpl.class), + eq(BRINGDOWN_REASON_DEACTIVATE_DATA_CALL)); /* Check callback result is RESULT_SUCCESS when onClosed() is called. */ mSpyIwlanDataServiceProvider @@ -952,7 +958,8 @@ public class IwlanDataServiceTest { eq(TEST_APN_NAME), anyBoolean(), any(IwlanTunnelCallback.class), - any(IwlanTunnelMetricsImpl.class)); + any(IwlanTunnelMetricsImpl.class), + eq(BRINGDOWN_REASON_DEACTIVATE_DATA_CALL)); moveTimeForwardAndDispatch(50); /* Check closeTunnel() is called. */ @@ -961,7 +968,8 @@ public class IwlanDataServiceTest { eq(TEST_APN_NAME), eq(true) /* forceClose */, any(IwlanTunnelCallback.class), - any(IwlanTunnelMetricsImpl.class)); + any(IwlanTunnelMetricsImpl.class), + eq(BRINGDOWN_REASON_DEACTIVATE_DATA_CALL)); /* Check callback result is RESULT_SUCCESS when onClosed() is called. */ mSpyIwlanDataServiceProvider @@ -1020,7 +1028,8 @@ public class IwlanDataServiceTest { eq(TEST_APN_NAME), anyBoolean(), any(IwlanTunnelCallback.class), - any(IwlanTunnelMetricsImpl.class)); + any(IwlanTunnelMetricsImpl.class), + anyInt()); /* Check callback result is RESULT_SUCCESS when onClosed() is called. */ mSpyIwlanDataServiceProvider @@ -1037,7 +1046,8 @@ public class IwlanDataServiceTest { eq(TEST_APN_NAME), anyBoolean(), any(IwlanTunnelCallback.class), - any(IwlanTunnelMetricsImpl.class)); + any(IwlanTunnelMetricsImpl.class), + anyInt()); // No additional callbacks are involved. verify(mMockDataServiceCallback, times(1)).onDeactivateDataCallComplete(anyInt()); @@ -1993,7 +2003,8 @@ public class IwlanDataServiceTest { eq(TEST_APN_NAME), anyBoolean(), any(IwlanTunnelCallback.class), - any(IwlanTunnelMetricsImpl.class)); + any(IwlanTunnelMetricsImpl.class), + eq(BRINGDOWN_REASON_DEACTIVATE_DATA_CALL)); advanceCalendarByTimeMs(deactivationTime, calendar); @@ -2044,7 +2055,13 @@ public class IwlanDataServiceTest { Network newNetwork2 = createMockNetwork(mLinkProperties); onSystemDefaultNetworkConnected( newNetwork2, mLinkProperties, TRANSPORT_WIFI, DEFAULT_SUB_INDEX); - verify(mMockEpdgTunnelManager, times(1)).closeTunnel(any(), anyBoolean(), any(), any()); + verify(mMockEpdgTunnelManager, times(1)) + .closeTunnel( + any(), + anyBoolean(), + any(), + any(), + eq(BRINGDOWN_REASON_NETWORK_UPDATE_WHEN_TUNNEL_IN_BRINGUP)); } public static TunnelLinkProperties createTunnelLinkProperties() throws Exception { diff --git a/test/com/google/android/iwlan/epdg/EpdgTunnelManagerTest.java b/test/com/google/android/iwlan/epdg/EpdgTunnelManagerTest.java index ff413b5..05ab0bc 100644 --- a/test/com/google/android/iwlan/epdg/EpdgTunnelManagerTest.java +++ b/test/com/google/android/iwlan/epdg/EpdgTunnelManagerTest.java @@ -16,6 +16,8 @@ package com.google.android.iwlan.epdg; +import static com.google.android.iwlan.epdg.EpdgTunnelManager.BRINGDOWN_REASON_UNKNOWN; + import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -756,7 +758,8 @@ public class EpdgTunnelManagerTest { testApnName, false /*forceClose*/, mMockIwlanTunnelCallback, - mMockIwlanTunnelMetrics); + mMockIwlanTunnelMetrics, + BRINGDOWN_REASON_UNKNOWN); mTestLooper.dispatchAll(); verify(mEpdgTunnelManager).closePendingRequestsForApn(eq(testApnName)); @@ -785,7 +788,8 @@ public class EpdgTunnelManagerTest { testApnName, true /*forceClose*/, mMockIwlanTunnelCallback, - mMockIwlanTunnelMetrics); + mMockIwlanTunnelMetrics, + BRINGDOWN_REASON_UNKNOWN); mTestLooper.dispatchAll(); verify(mMockIkeSession).kill(); @@ -809,7 +813,8 @@ public class EpdgTunnelManagerTest { testApnName, false /*forceClose*/, mMockIwlanTunnelCallback, - mMockIwlanTunnelMetrics); + mMockIwlanTunnelMetrics, + BRINGDOWN_REASON_UNKNOWN); mTestLooper.dispatchAll(); verify(mMockIkeSession).close(); @@ -2295,7 +2300,8 @@ public class EpdgTunnelManagerTest { TEST_APN_NAME, false /*forceClose*/, mMockIwlanTunnelCallback, - mMockIwlanTunnelMetrics); + mMockIwlanTunnelMetrics, + BRINGDOWN_REASON_UNKNOWN); mTestLooper.dispatchAll(); verify(mMockIwlanTunnelCallback, times(1)) |