Merge "Fix restorePrivateDnsSetting with null hostnames"

This commit is contained in:
Treehugger Robot
2021-06-09 05:45:24 +00:00
committed by Gerrit Code Review

View File

@@ -87,6 +87,7 @@ public final class CtsNetUtils {
private static final int PRIVATE_DNS_SETTING_TIMEOUT_MS = 10_000;
private static final int CONNECTIVITY_CHANGE_TIMEOUT_SECS = 30;
private static final String PRIVATE_DNS_MODE_OPPORTUNISTIC = "opportunistic";
private static final String PRIVATE_DNS_MODE_STRICT = "hostname";
public static final int HTTP_PORT = 80;
public static final String TEST_HOST = "connectivitycheck.gstatic.com";
public static final String HTTP_REQUEST =
@@ -523,12 +524,17 @@ public final class CtsNetUtils {
}
public void restorePrivateDnsSetting() throws InterruptedException {
if (mOldPrivateDnsMode == null || mOldPrivateDnsSpecifier == null) {
return;
if (mOldPrivateDnsMode == null) {
fail("restorePrivateDnsSetting without storing settings first");
}
// restore private DNS setting
if ("hostname".equals(mOldPrivateDnsMode)) {
if (PRIVATE_DNS_MODE_STRICT.equals(mOldPrivateDnsMode)) {
setPrivateDnsStrictMode(mOldPrivateDnsSpecifier);
// In case of invalid setting, still restore it but fail the test
if (mOldPrivateDnsSpecifier == null) {
fail("Invalid private DNS setting: no hostname specified in strict mode");
}
awaitPrivateDnsSetting("restorePrivateDnsSetting timeout",
mCm.getActiveNetwork(),
mOldPrivateDnsSpecifier, true);
@@ -539,13 +545,14 @@ public final class CtsNetUtils {
public void setPrivateDnsStrictMode(String server) {
// To reduce flake rate, set PRIVATE_DNS_SPECIFIER before PRIVATE_DNS_MODE. This ensures
// that if the previous private DNS mode was not "hostname", the system only sees one
// that if the previous private DNS mode was not strict, the system only sees one
// EVENT_PRIVATE_DNS_SETTINGS_CHANGED event instead of two.
Settings.Global.putString(mCR, Settings.Global.PRIVATE_DNS_SPECIFIER, server);
final String mode = Settings.Global.getString(mCR, Settings.Global.PRIVATE_DNS_MODE);
// If current private DNS mode is "hostname", we only need to set PRIVATE_DNS_SPECIFIER.
if (!"hostname".equals(mode)) {
Settings.Global.putString(mCR, Settings.Global.PRIVATE_DNS_MODE, "hostname");
// If current private DNS mode is strict, we only need to set PRIVATE_DNS_SPECIFIER.
if (!PRIVATE_DNS_MODE_STRICT.equals(mode)) {
Settings.Global.putString(mCR, Settings.Global.PRIVATE_DNS_MODE,
PRIVATE_DNS_MODE_STRICT);
}
}