From 052dbb85d379b3f9660badc7e484cd74d76eaf6e Mon Sep 17 00:00:00 2001 From: chiachangwang Date: Wed, 15 Mar 2023 07:42:35 +0000 Subject: [PATCH] Verify the update of shouldLongLivedTcpExcluded in VpnTransportInfo Bug: 273422889 Test: atest FrameworksNetTests Change-Id: I5e25d1b8b1f86dc4474cef1616cb16668119240a --- .../android/server/connectivity/VpnTest.java | 68 +++++++++++++++---- 1 file changed, 56 insertions(+), 12 deletions(-) diff --git a/tests/unit/java/com/android/server/connectivity/VpnTest.java b/tests/unit/java/com/android/server/connectivity/VpnTest.java index 79987e6216..dd9177eede 100644 --- a/tests/unit/java/com/android/server/connectivity/VpnTest.java +++ b/tests/unit/java/com/android/server/connectivity/VpnTest.java @@ -48,6 +48,7 @@ import static android.telephony.CarrierConfigManager.KEY_PREFERRED_IKE_PROTOCOL_ import static com.android.net.module.util.NetworkStackConstants.IPV6_MIN_MTU; import static com.android.server.connectivity.Vpn.AUTOMATIC_KEEPALIVE_DELAY_SECONDS; +import static com.android.server.connectivity.Vpn.DEFAULT_LONG_LIVED_TCP_CONNS_EXPENSIVE_TIMEOUT_SEC; import static com.android.server.connectivity.Vpn.DEFAULT_UDP_PORT_4500_NAT_TIMEOUT_SEC_INT; import static com.android.server.connectivity.Vpn.PREFERRED_IKE_PROTOCOL_AUTO; import static com.android.server.connectivity.Vpn.PREFERRED_IKE_PROTOCOL_IPV4_UDP; @@ -1860,6 +1861,13 @@ public class VpnTest extends VpnTestBase { private PlatformVpnSnapshot verifySetupPlatformVpn(VpnProfile vpnProfile, IkeSessionConfiguration ikeConfig, boolean mtuSupportsIpv6) throws Exception { + return verifySetupPlatformVpn(vpnProfile, ikeConfig, mtuSupportsIpv6, + false /* areLongLivedTcpConnectionsExpensive */); + } + + private PlatformVpnSnapshot verifySetupPlatformVpn(VpnProfile vpnProfile, + IkeSessionConfiguration ikeConfig, boolean mtuSupportsIpv6, + boolean areLongLivedTcpConnectionsExpensive) throws Exception { if (!mtuSupportsIpv6) { doReturn(IPV6_MIN_MTU - 1).when(mTestDeps).calculateVpnMtu(any(), anyInt(), anyInt(), anyBoolean()); @@ -1942,8 +1950,10 @@ public class VpnTest extends VpnTestBase { // Check if allowBypass is set or not. assertTrue(nacCaptor.getValue().isBypassableVpn()); - assertTrue(((VpnTransportInfo) ncCaptor.getValue().getTransportInfo()).isBypassable()); - + final VpnTransportInfo info = (VpnTransportInfo) ncCaptor.getValue().getTransportInfo(); + assertTrue(info.isBypassable()); + assertEquals(areLongLivedTcpConnectionsExpensive, + info.areLongLivedTcpConnectionsExpensive()); return new PlatformVpnSnapshot(vpn, nwCb, ikeCb, childCb); } @@ -2069,7 +2079,8 @@ public class VpnTest extends VpnTestBase { final PlatformVpnSnapshot vpnSnapShot = verifySetupPlatformVpn(profile, createIkeConfig(createIkeConnectInfo(), true /* isMobikeEnabled */), - false /* mtuSupportsIpv6 */); + false /* mtuSupportsIpv6 */, + expectedKeepalive < DEFAULT_LONG_LIVED_TCP_CONNS_EXPENSIVE_TIMEOUT_SEC); // Simulate a new network coming up vpnSnapShot.nwCb.onAvailable(TEST_NETWORK_2); verify(mIkeSessionWrapper, never()).setNetwork(any(), anyInt(), anyInt(), anyInt()); @@ -2116,7 +2127,9 @@ public class VpnTest extends VpnTestBase { PREFERRED_IKE_PROTOCOL_IPV4_UDP, AUTOMATIC_KEEPALIVE_DELAY_SECONDS /* expectedKeepaliveTimer */, ESP_IP_VERSION_AUTO /* expectedIpVersion */, - ESP_ENCAP_TYPE_AUTO /* expectedEncapType */); + ESP_ENCAP_TYPE_AUTO /* expectedEncapType */, + false /* expectedReadFromCarrierConfig*/, + true /* areLongLivedTcpConnectionsExpensive */); } @Test @@ -2126,7 +2139,9 @@ public class VpnTest extends VpnTestBase { PREFERRED_IKE_PROTOCOL_IPV4_UDP, AUTOMATIC_KEEPALIVE_DELAY_SECONDS /* expectedKeepaliveTimer */, ESP_IP_VERSION_AUTO /* expectedIpVersion */, - ESP_ENCAP_TYPE_AUTO /* expectedEncapType */); + ESP_ENCAP_TYPE_AUTO /* expectedEncapType */, + false /* expectedReadFromCarrierConfig*/, + true /* areLongLivedTcpConnectionsExpensive */); } @Test @@ -2136,7 +2151,9 @@ public class VpnTest extends VpnTestBase { PREFERRED_IKE_PROTOCOL_AUTO, TEST_KEEPALIVE_TIMER /* expectedKeepaliveTimer */, ESP_IP_VERSION_AUTO /* expectedIpVersion */, - ESP_ENCAP_TYPE_AUTO /* expectedEncapType */); + ESP_ENCAP_TYPE_AUTO /* expectedEncapType */, + true /* expectedReadFromCarrierConfig*/, + false /* areLongLivedTcpConnectionsExpensive */); } @Test @@ -2150,7 +2167,9 @@ public class VpnTest extends VpnTestBase { PREFERRED_IKE_PROTOCOL_IPV4_UDP, AUTOMATIC_KEEPALIVE_DELAY_SECONDS /* expectedKeepaliveTimer */, ESP_IP_VERSION_AUTO /* expectedIpVersion */, - ESP_ENCAP_TYPE_AUTO /* expectedEncapType */); + ESP_ENCAP_TYPE_AUTO /* expectedEncapType */, + false /* expectedReadFromCarrierConfig*/, + true /* areLongLivedTcpConnectionsExpensive */); } @Test @@ -2160,7 +2179,9 @@ public class VpnTest extends VpnTestBase { PREFERRED_IKE_PROTOCOL_IPV4_UDP, TEST_KEEPALIVE_TIMER /* expectedKeepaliveTimer */, ESP_IP_VERSION_IPV4 /* expectedIpVersion */, - ESP_ENCAP_TYPE_UDP /* expectedEncapType */); + ESP_ENCAP_TYPE_UDP /* expectedEncapType */, + true /* expectedReadFromCarrierConfig*/, + false /* areLongLivedTcpConnectionsExpensive */); } @Test @@ -2170,7 +2191,9 @@ public class VpnTest extends VpnTestBase { PREFERRED_IKE_PROTOCOL_IPV6_ESP, TEST_KEEPALIVE_TIMER /* expectedKeepaliveTimer */, ESP_IP_VERSION_IPV6 /* expectedIpVersion */, - ESP_ENCAP_TYPE_NONE /* expectedEncapType */); + ESP_ENCAP_TYPE_NONE /* expectedEncapType */, + true /* expectedReadFromCarrierConfig*/, + false /* areLongLivedTcpConnectionsExpensive */); } @Test @@ -2180,7 +2203,9 @@ public class VpnTest extends VpnTestBase { PREFERRED_IKE_PROTOCOL_IPV6_UDP, TEST_KEEPALIVE_TIMER /* expectedKeepaliveTimer */, ESP_IP_VERSION_IPV6 /* expectedIpVersion */, - ESP_ENCAP_TYPE_UDP /* expectedEncapType */); + ESP_ENCAP_TYPE_UDP /* expectedEncapType */, + true /* expectedReadFromCarrierConfig*/, + false /* areLongLivedTcpConnectionsExpensive */); } private NetworkCapabilities createTestCellNc() { @@ -2193,7 +2218,9 @@ public class VpnTest extends VpnTestBase { } private void doTestReadCarrierConfig(NetworkCapabilities nc, int simState, int preferredIpProto, - int expectedKeepaliveTimer, int expectedIpVersion, int expectedEncapType) + int expectedKeepaliveTimer, int expectedIpVersion, int expectedEncapType, + boolean expectedReadFromCarrierConfig, + boolean areLongLivedTcpConnectionsExpensive) throws Exception { final Ikev2VpnProfile ikeProfile = new Ikev2VpnProfile.Builder(TEST_VPN_SERVER, TEST_VPN_IDENTITY) @@ -2206,7 +2233,8 @@ public class VpnTest extends VpnTestBase { final PlatformVpnSnapshot vpnSnapShot = verifySetupPlatformVpn(ikeProfile.toVpnProfile(), createIkeConfig(createIkeConnectInfo(), true /* isMobikeEnabled */), - false /* mtuSupportsIpv6 */); + false /* mtuSupportsIpv6 */, + true /* areLongLivedTcpConnectionsExpensive */); final CarrierConfigManager.CarrierConfigChangeListener listener = getCarrierConfigListener(); @@ -2221,15 +2249,31 @@ public class VpnTest extends VpnTestBase { vpnSnapShot.nwCb.onCapabilitiesChanged(TEST_NETWORK_2, nc); verify(mIkeSessionWrapper).setNetwork(TEST_NETWORK_2, expectedIpVersion, expectedEncapType, expectedKeepaliveTimer); + if (expectedReadFromCarrierConfig) { + final ArgumentCaptor ncCaptor = + ArgumentCaptor.forClass(NetworkCapabilities.class); + verify(mMockNetworkAgent).doSendNetworkCapabilities(ncCaptor.capture()); + + final VpnTransportInfo info = + (VpnTransportInfo) ncCaptor.getValue().getTransportInfo(); + assertEquals(areLongLivedTcpConnectionsExpensive, + info.areLongLivedTcpConnectionsExpensive()); + } else { + verify(mMockNetworkAgent, never()).doSendNetworkCapabilities(any()); + } reset(mExecutor); reset(mIkeSessionWrapper); + reset(mMockNetworkAgent); // Trigger carrier config change listener.onCarrierConfigChanged(1 /* logicalSlotIndex */, TEST_SUB_ID, -1 /* carrierId */, -1 /* specificCarrierId */); verify(mIkeSessionWrapper).setNetwork(TEST_NETWORK_2, expectedIpVersion, expectedEncapType, expectedKeepaliveTimer); + // Expect no NetworkCapabilities change. + // Call to doSendNetworkCapabilities() will not be triggered. + verify(mMockNetworkAgent, never()).doSendNetworkCapabilities(any()); } @Test