From 3a48843e49640cc3b3d13c93e56c9fe34a3f2a5f Mon Sep 17 00:00:00 2001 From: Frank Li Date: Sat, 12 Jun 2021 13:14:36 +0000 Subject: [PATCH] Add test for ConnectivityService API isPrivateDnsBroken Bug: 189161363 Test: atest android.net.cts.ConnectivityManagerTest atest CtsNetTestCasesLatestSdk:ConnectivityManagerTest Original-Change: https://android-review.googlesource.com/1719395 Merged-In: Ib45aa439683d48360652a91d7a0609dc82adda33 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 acec9a416d..ae59dc442d 100644 --- a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java +++ b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java @@ -152,6 +152,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; @@ -674,6 +675,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.