From d69d7c815c1b900245ff84fd6d27713a025e495c Mon Sep 17 00:00:00 2001 From: junyulai Date: Wed, 24 Feb 2021 18:25:37 +0800 Subject: [PATCH] Fix CTS test failed on R device The test failed since the API is not available on R device. Add conditions to ignore it. Test: atest CtsHostsideNetworkTests:com.android.cts.net.HostsideVpnTests on R device Bug: None Change-Id: I05a1f63adec72e89382cb095db714bccbdff0058 --- tests/cts/hostside/app/Android.bp | 1 + .../com/android/cts/net/hostside/VpnTest.java | 49 ++++++++++--------- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/tests/cts/hostside/app/Android.bp b/tests/cts/hostside/app/Android.bp index 99037567b5..5fb28e2aba 100644 --- a/tests/cts/hostside/app/Android.bp +++ b/tests/cts/hostside/app/Android.bp @@ -26,6 +26,7 @@ android_test_helper_app { "ctstestrunner-axt", "ub-uiautomator", "CtsHostsideNetworkTestsAidl", + "modules-utils-build", ], libs: [ "android.test.runner", diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/VpnTest.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/VpnTest.java index a663cd6f73..9b437e64a8 100755 --- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/VpnTest.java +++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/VpnTest.java @@ -75,6 +75,7 @@ import android.text.TextUtils; import android.util.Log; import com.android.compatibility.common.util.BlockingBroadcastReceiver; +import com.android.modules.utils.build.SdkLevel; import java.io.Closeable; import java.io.FileDescriptor; @@ -740,13 +741,14 @@ public class VpnTest extends InstrumentationTestCase { getInstrumentation().getTargetContext(), MyVpnService.ACTION_ESTABLISHED); receiver.register(); - // Expect the system default network not to change. final NeverChangeNetworkCallback neverChangeCallback = new NeverChangeNetworkCallback(); final Network defaultNetwork = mCM.getActiveNetwork(); - runWithShellPermissionIdentity(() -> - mCM.registerSystemDefaultNetworkCallback(neverChangeCallback, - new Handler(Looper.getMainLooper())), NETWORK_SETTINGS); + if (SdkLevel.isAtLeastS()) { + runWithShellPermissionIdentity(() -> + mCM.registerSystemDefaultNetworkCallback(neverChangeCallback, + new Handler(Looper.getMainLooper())), NETWORK_SETTINGS); + } FileDescriptor fd = openSocketFdInOtherApp(TEST_HOST, 80, TIMEOUT_MS); @@ -765,19 +767,21 @@ public class VpnTest extends InstrumentationTestCase { checkTrafficOnVpn(); - expectVpnTransportInfo(mCM.getActiveNetwork()); + maybeExpectVpnTransportInfo(mCM.getActiveNetwork()); - // Check that system default network callback has not seen any network changes, even though - // the app's default network changed. This needs to be done before testing private - // DNS because checkStrictModePrivateDns will set the private DNS server to a nonexistent - // name, which will cause validation to fail and cause the default network to switch (e.g., - // from wifi to cellular). - assertEquals(defaultNetwork, neverChangeCallback.getFirstNetwork()); assertNotEqual(defaultNetwork, mCM.getActiveNetwork()); - neverChangeCallback.assertNeverChanged(); - runWithShellPermissionIdentity( - () -> mCM.unregisterNetworkCallback(neverChangeCallback), - NETWORK_SETTINGS); + if (SdkLevel.isAtLeastS()) { + // Check that system default network callback has not seen any network changes, even + // though the app's default network changed. This needs to be done before testing + // private DNS because checkStrictModePrivateDns will set the private DNS server to + // a nonexistent name, which will cause validation to fail and cause the default + // network to switch (e.g., from wifi to cellular). + assertEquals(defaultNetwork, neverChangeCallback.getFirstNetwork()); + neverChangeCallback.assertNeverChanged(); + runWithShellPermissionIdentity( + () -> mCM.unregisterNetworkCallback(neverChangeCallback), + NETWORK_SETTINGS); + } checkStrictModePrivateDns(); @@ -799,7 +803,7 @@ public class VpnTest extends InstrumentationTestCase { checkTrafficOnVpn(); - expectVpnTransportInfo(mCM.getActiveNetwork()); + maybeExpectVpnTransportInfo(mCM.getActiveNetwork()); checkStrictModePrivateDns(); } @@ -988,7 +992,7 @@ public class VpnTest extends InstrumentationTestCase { assertTrue(isNetworkMetered(mNetwork)); assertTrue(mCM.isActiveNetworkMetered()); - expectVpnTransportInfo(mCM.getActiveNetwork()); + maybeExpectVpnTransportInfo(mCM.getActiveNetwork()); } public void testVpnMeterednessWithNullUnderlyingNetwork() throws Exception { @@ -1016,7 +1020,7 @@ public class VpnTest extends InstrumentationTestCase { // Meteredness based on VPN capabilities and CM#isActiveNetworkMetered should be in sync. assertEquals(isNetworkMetered(mNetwork), mCM.isActiveNetworkMetered()); - expectVpnTransportInfo(mCM.getActiveNetwork()); + maybeExpectVpnTransportInfo(mCM.getActiveNetwork()); } public void testVpnMeterednessWithNonNullUnderlyingNetwork() throws Exception { @@ -1045,7 +1049,7 @@ public class VpnTest extends InstrumentationTestCase { // Meteredness based on VPN capabilities and CM#isActiveNetworkMetered should be in sync. assertEquals(isNetworkMetered(mNetwork), mCM.isActiveNetworkMetered()); - expectVpnTransportInfo(mCM.getActiveNetwork()); + maybeExpectVpnTransportInfo(mCM.getActiveNetwork()); } public void testAlwaysMeteredVpnWithNullUnderlyingNetwork() throws Exception { @@ -1071,7 +1075,7 @@ public class VpnTest extends InstrumentationTestCase { assertTrue(isNetworkMetered(mNetwork)); assertTrue(mCM.isActiveNetworkMetered()); - expectVpnTransportInfo(mCM.getActiveNetwork()); + maybeExpectVpnTransportInfo(mCM.getActiveNetwork()); } public void testAlwaysMeteredVpnWithNonNullUnderlyingNetwork() throws Exception { @@ -1098,7 +1102,7 @@ public class VpnTest extends InstrumentationTestCase { assertTrue(isNetworkMetered(mNetwork)); assertTrue(mCM.isActiveNetworkMetered()); - expectVpnTransportInfo(mCM.getActiveNetwork()); + maybeExpectVpnTransportInfo(mCM.getActiveNetwork()); } public void testB141603906() throws Exception { @@ -1148,7 +1152,8 @@ public class VpnTest extends InstrumentationTestCase { } } - private void expectVpnTransportInfo(Network network) { + private void maybeExpectVpnTransportInfo(Network network) { + if (!SdkLevel.isAtLeastS()) return; final NetworkCapabilities vpnNc = mCM.getNetworkCapabilities(network); assertTrue(vpnNc.hasTransport(TRANSPORT_VPN)); final TransportInfo ti = vpnNc.getTransportInfo();