Skip TestDropPacketToVpnAddress if the feature is disabled

INGRESS_TO_VPN_ADDRESS_FILTERING is disabled due to b/352424251 and
testDropPacketToVpnAddress fails if the feature is disabled.
So skip testDropPacketToVpnAddress if the feature is disabled.

Bug: 362434644
Test: adb shell device_config put tethering
      ingress_to_vpn_address_filtering -1
Test: atest CtsHostsideNetworkTests
(cherry picked from https://android-review.googlesource.com/q/commit:9d5d7d07793549a9c8a19d6277c498683cb7da3f)
Merged-In: Ib16a7550dcf93dd9ecf29047b1c4f101ff6d610d
Change-Id: Ib16a7550dcf93dd9ecf29047b1c4f101ff6d610d
This commit is contained in:
Motomu Utsumi 2024-08-27 20:00:24 +09:00 • committed by Android Build Cherrypicker Worker
commit 41ce7c550c
4 changed files with 46 additions and 0 deletions

View file

@ -6747,4 +6747,33 @@ public class ConnectivityManager {
throw e.rethrowFromSystemServer();
}
}
/**
* Get the specified ConnectivityService feature status. This method is for test code to check
* whether the feature is enabled or not.
* Note that tests can not just read DeviceConfig since ConnectivityService reads flag at
* startup. For example, it's possible that the current flag value is "disable"(-1) but the
* feature is enabled since the flag value was "enable"(1) when ConnectivityService started up.
* If the ConnectivityManager needs to check the ConnectivityService feature status for non-test
* purpose, define feature in {@link ConnectivityManagerFeature} and use
* {@link #isFeatureEnabled} instead.
*
* @param featureFlag target flag for feature
* @return {@code true} if the feature is enabled, {@code false} if the feature is disabled.
* @throws IllegalArgumentException if the flag is invalid
*
* @hide
*/
@RequiresPermission(anyOf = {
android.Manifest.permission.NETWORK_SETTINGS,
android.Manifest.permission.NETWORK_STACK,
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK
})
public boolean isConnectivityServiceFeatureEnabledForTesting(final String featureFlag) {
try {
return mService.isConnectivityServiceFeatureEnabledForTesting(featureFlag);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
}

View file

@ -262,4 +262,6 @@ interface IConnectivityManager
IBinder getRoutingCoordinatorService();
long getEnabledConnectivityManagerFeatures();
boolean isConnectivityServiceFeatureEnabledForTesting(String featureFlag);
}

View file

@ -14224,4 +14224,14 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
return features;
}
@Override
public boolean isConnectivityServiceFeatureEnabledForTesting(String featureFlag) {
switch (featureFlag) {
case INGRESS_TO_VPN_ADDRESS_FILTERING:
return mIngressToVpnAddressFiltering;
default:
throw new IllegalArgumentException("Unknown flag: " + featureFlag);
}
}
}

View file

@ -213,6 +213,8 @@ public class VpnTest {
private static final String AUTOMATIC_ON_OFF_KEEPALIVE_VERSION =
"automatic_on_off_keepalive_version";
private static final String INGRESS_TO_VPN_ADDRESS_FILTERING =
"ingress_to_vpn_address_filtering";
// Enabled since version 1 means it's always enabled because the version is always above 1
private static final String AUTOMATIC_ON_OFF_KEEPALIVE_ENABLED = "1";
private static final long TEST_TCP_POLLING_TIMER_EXPIRED_PERIOD_MS = 60_000L;
@ -1949,6 +1951,9 @@ public class VpnTest {
*/
private void doTestDropPacketToVpnAddress(final boolean duplicatedAddress)
throws Exception {
assumeTrue(mCM.isConnectivityServiceFeatureEnabledForTesting(
INGRESS_TO_VPN_ADDRESS_FILTERING));
final NetworkRequest request = new NetworkRequest.Builder()
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)