Merge "Skip TestDropPacketToVpnAddress if the feature is disabled" into main

This commit is contained in:
Motomu Utsumi 2024-09-02 07:52:02 +00:00 • committed by Gerrit Code Review
commit b8950d144a
4 changed files with 46 additions and 0 deletions

View file

@ -6734,4 +6734,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

@ -14505,4 +14505,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)