From e39741db1cf3152b2cca6ead5e5de733c3d71922 Mon Sep 17 00:00:00 2001 From: lifr Date: Wed, 26 May 2021 23:09:39 +0800 Subject: [PATCH] Add test for ConnectivityService API isPrivateDnsBroken Bug: 189161363 Test: atest android.net.cts.ConnectivityManagerTest atest CtsNetTestCasesLatestSdk:ConnectivityManagerTest Change-Id: Ib45aa439683d48360652a91d7a0609dc82adda33 --- .../net/cts/ConnectivityManagerTest.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java index 0075b54716..1d84a1b486 100644 --- a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java +++ b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java @@ -151,6 +151,7 @@ import com.android.networkstack.apishim.NetworkInformationShimImpl; import com.android.networkstack.apishim.common.ConnectivityManagerShim; import com.android.testutils.CompatUtil; import com.android.testutils.DevSdkIgnoreRule; +import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo; import com.android.testutils.DevSdkIgnoreRuleKt; import com.android.testutils.RecorderCallback.CallbackEntry; import com.android.testutils.SkipPresubmit; @@ -660,6 +661,31 @@ public class ConnectivityManagerTest { .build(); } + @Test @IgnoreUpTo(Build.VERSION_CODES.Q) + public void testIsPrivateDnsBroken() throws InterruptedException { + final String invalidPrivateDnsServer = "invalidhostname.example.com"; + final String goodPrivateDnsServer = "dns.google"; + mCtsNetUtils.storePrivateDnsSetting(); + final TestableNetworkCallback cb = new TestableNetworkCallback(); + mCm.registerNetworkCallback(makeWifiNetworkRequest(), cb); + try { + // Verifying the good private DNS sever + mCtsNetUtils.setPrivateDnsStrictMode(goodPrivateDnsServer); + final Network networkForPrivateDns = mCtsNetUtils.ensureWifiConnected(); + cb.eventuallyExpect(CallbackEntry.NETWORK_CAPS_UPDATED, NETWORK_CALLBACK_TIMEOUT_MS, + entry -> (!((CallbackEntry.CapabilitiesChanged) entry).getCaps() + .isPrivateDnsBroken()) && networkForPrivateDns.equals(entry.getNetwork())); + + // Verifying the broken private DNS sever + mCtsNetUtils.setPrivateDnsStrictMode(invalidPrivateDnsServer); + cb.eventuallyExpect(CallbackEntry.NETWORK_CAPS_UPDATED, NETWORK_CALLBACK_TIMEOUT_MS, + entry -> (((CallbackEntry.CapabilitiesChanged) entry).getCaps() + .isPrivateDnsBroken()) && networkForPrivateDns.equals(entry.getNetwork())); + } finally { + mCtsNetUtils.restorePrivateDnsSetting(); + } + } + /** * Exercises both registerNetworkCallback and unregisterNetworkCallback. This checks to * see if we get a callback for the TRANSPORT_WIFI transport type being available.