Simplify per-target-SDK LinkProperties tests.
Currently these tests run as hostside tests and require a lot of boilerplate, including their own CtsHostsideNetworkTestsApp3 build target. Move the coverage to LinkPropertiesTest using the new-ish @CtsNetTestCasesMaxTargetSdk31 annotation, and remove the hostside tests. The only test that is not being moved is one that checks the behaviour of disabling the compat change on T. This test is not very useful because it can only run on userdebug builds and not on production builds, because CtsHostsideNetworkTestsApp3 targets SDK 33. We do have test coverage for disabling the compat change on an app targeting SDK 31, where it is allowed. Fix: 236087258 Test: atest CtsNetTestCasesMaxTargetSdk31 Test: atest CtsNetTestCasesLatestSdk:android.net.LinkPropertiesTest Change-Id: I6d4b1ba40f6cb63b30a600c227e9628858c03d73
This commit is contained in:
@@ -36,10 +36,10 @@ import android.os.Build;
|
||||
import android.system.OsConstants;
|
||||
import android.util.ArraySet;
|
||||
|
||||
import androidx.core.os.BuildCompat;
|
||||
import androidx.test.filters.SmallTest;
|
||||
import androidx.test.runner.AndroidJUnit4;
|
||||
|
||||
import com.android.modules.utils.build.SdkLevel;
|
||||
import com.android.net.module.util.LinkPropertiesUtils.CompareResult;
|
||||
import com.android.testutils.ConnectivityModuleTest;
|
||||
import com.android.testutils.DevSdkIgnoreRule;
|
||||
@@ -114,11 +114,6 @@ public class LinkPropertiesTest {
|
||||
return InetAddresses.parseNumericAddress(addrString);
|
||||
}
|
||||
|
||||
private static boolean isAtLeastR() {
|
||||
// BuildCompat.isAtLeastR is documented to return false on release SDKs (including R)
|
||||
return Build.VERSION.SDK_INT > Build.VERSION_CODES.Q || BuildCompat.isAtLeastR();
|
||||
}
|
||||
|
||||
private void checkEmpty(final LinkProperties lp) {
|
||||
assertEquals(0, lp.getAllInterfaceNames().size());
|
||||
assertEquals(0, lp.getAllAddresses().size());
|
||||
@@ -139,7 +134,7 @@ public class LinkPropertiesTest {
|
||||
assertFalse(lp.isIpv6Provisioned());
|
||||
assertFalse(lp.isPrivateDnsActive());
|
||||
|
||||
if (isAtLeastR()) {
|
||||
if (SdkLevel.isAtLeastR()) {
|
||||
assertNull(lp.getDhcpServerAddress());
|
||||
assertFalse(lp.isWakeOnLanSupported());
|
||||
assertNull(lp.getCaptivePortalApiUrl());
|
||||
@@ -166,7 +161,7 @@ public class LinkPropertiesTest {
|
||||
lp.setMtu(MTU);
|
||||
lp.setTcpBufferSizes(TCP_BUFFER_SIZES);
|
||||
lp.setNat64Prefix(new IpPrefix("2001:db8:0:64::/96"));
|
||||
if (isAtLeastR()) {
|
||||
if (SdkLevel.isAtLeastR()) {
|
||||
lp.setDhcpServerAddress(DHCPSERVER);
|
||||
lp.setWakeOnLanSupported(true);
|
||||
lp.setCaptivePortalApiUrl(CAPPORT_API_URL);
|
||||
@@ -210,7 +205,7 @@ public class LinkPropertiesTest {
|
||||
assertTrue(source.isIdenticalTcpBufferSizes(target));
|
||||
assertTrue(target.isIdenticalTcpBufferSizes(source));
|
||||
|
||||
if (isAtLeastR()) {
|
||||
if (SdkLevel.isAtLeastR()) {
|
||||
assertTrue(source.isIdenticalDhcpServerAddress(target));
|
||||
assertTrue(source.isIdenticalDhcpServerAddress(source));
|
||||
|
||||
@@ -1295,56 +1290,73 @@ public class LinkPropertiesTest {
|
||||
assertEquals(2, lp.getRoutes().size());
|
||||
}
|
||||
|
||||
@Test @IgnoreUpTo(Build.VERSION_CODES.R)
|
||||
@CtsNetTestCasesMaxTargetSdk31(reason = "Compat change cannot be overridden when targeting T+")
|
||||
@EnableCompatChanges({LinkProperties.EXCLUDED_ROUTES})
|
||||
public void testExcludedRoutesEnabled() {
|
||||
private void assertExcludeRoutesVisible() {
|
||||
final LinkProperties lp = new LinkProperties();
|
||||
assertEquals(0, lp.getRoutes().size());
|
||||
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV4, 0), RTN_UNREACHABLE));
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV4, 31), RTN_UNREACHABLE));
|
||||
assertEquals(1, lp.getRoutes().size());
|
||||
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV6, 0), RTN_THROW));
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV6, 127), RTN_THROW));
|
||||
assertEquals(2, lp.getRoutes().size());
|
||||
|
||||
lp.addRoute(new RouteInfo(GATEWAY1));
|
||||
assertEquals(3, lp.getRoutes().size());
|
||||
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(DNS6, 127), RTN_UNICAST));
|
||||
assertEquals(4, lp.getRoutes().size());
|
||||
}
|
||||
|
||||
@Test @IgnoreUpTo(Build.VERSION_CODES.R) @IgnoreAfter(Build.VERSION_CODES.S_V2)
|
||||
@CtsNetTestCasesMaxTargetSdk31(reason = "Compat change cannot be overridden when targeting T+")
|
||||
@DisableCompatChanges({LinkProperties.EXCLUDED_ROUTES})
|
||||
public void testExcludedRoutesDisabled_S() {
|
||||
private void assertExcludeRoutesNotVisible() {
|
||||
final LinkProperties lp = new LinkProperties();
|
||||
assertEquals(0, lp.getRoutes().size());
|
||||
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV4, 0), RTN_UNREACHABLE));
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV4, 31), RTN_UNREACHABLE));
|
||||
assertEquals(0, lp.getRoutes().size());
|
||||
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV6, 127), RTN_THROW));
|
||||
assertEquals(0, lp.getRoutes().size());
|
||||
|
||||
lp.addRoute(new RouteInfo(GATEWAY1));
|
||||
assertEquals(1, lp.getRoutes().size());
|
||||
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV6, 5), RTN_THROW));
|
||||
// RTN_THROW routes are visible on S when added by the caller (but they are not added by
|
||||
// the system). This is uncommon usage but was tested by CTSv12.
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(DNS6, 127), RTN_UNICAST));
|
||||
assertEquals(2, lp.getRoutes().size());
|
||||
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV6, 2), RTN_UNICAST));
|
||||
assertEquals(3, lp.getRoutes().size());
|
||||
}
|
||||
|
||||
@Test @IgnoreUpTo(Build.VERSION_CODES.S_V2)
|
||||
private void checkExcludeRoutesNotVisibleAfterS() {
|
||||
if (!SdkLevel.isAtLeastT()) {
|
||||
// RTN_THROW routes are visible on R and S when added by the caller (but they are not
|
||||
// added by the system except for legacy VPN).
|
||||
// This is uncommon usage but was tested by CTSr12.
|
||||
assertExcludeRoutesVisible();
|
||||
} else {
|
||||
assertExcludeRoutesNotVisible();
|
||||
}
|
||||
}
|
||||
|
||||
@Test @IgnoreUpTo(Build.VERSION_CODES.R)
|
||||
@CtsNetTestCasesMaxTargetSdk31(reason = "Testing behaviour for target SDK 31")
|
||||
public void testExcludedRoutesNotVisibleOnTargetSdk31() {
|
||||
checkExcludeRoutesNotVisibleAfterS();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExcludedRoutesVisibleOnTargetSdk33AndAbove() {
|
||||
assertExcludeRoutesVisible();
|
||||
}
|
||||
|
||||
@Test @IgnoreUpTo(Build.VERSION_CODES.R)
|
||||
@CtsNetTestCasesMaxTargetSdk31(reason = "Compat change cannot be overridden when targeting T+")
|
||||
@EnableCompatChanges({LinkProperties.EXCLUDED_ROUTES})
|
||||
public void testExcludedRoutesEnabledByCompatChange() {
|
||||
assertExcludeRoutesVisible();
|
||||
}
|
||||
|
||||
@Test @IgnoreUpTo(Build.VERSION_CODES.R)
|
||||
@CtsNetTestCasesMaxTargetSdk31(reason = "Compat change cannot be overridden when targeting T+")
|
||||
@DisableCompatChanges({LinkProperties.EXCLUDED_ROUTES})
|
||||
public void testExcludedRoutesDisabled() {
|
||||
final LinkProperties lp = new LinkProperties();
|
||||
assertEquals(0, lp.getRoutes().size());
|
||||
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV4, 0), RTN_UNREACHABLE));
|
||||
assertEquals(0, lp.getRoutes().size());
|
||||
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV6, 5), RTN_THROW));
|
||||
assertEquals(0, lp.getRoutes().size());
|
||||
|
||||
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV6, 2), RTN_UNICAST));
|
||||
assertEquals(1, lp.getRoutes().size());
|
||||
public void testExcludedRoutesDisabledByCompatChange() {
|
||||
checkExcludeRoutesNotVisibleAfterS();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user