Add Experiments to handle experiment flags logic
update experiment flags everytime when a resolver network is created or
destroyed.
Bug: 135717624
Bug: 151698212
Test: atest
Merged-In: I5375e78831c5994af74b9ecaca991f18db03eca6
Change-Id: I6288c1d47085cdb70ab5e6e19f183c289af56815
(cherry picked from commit fe85ad8052e0faaac88b0a14a9e78b2463507dd7)
diff --git a/tests/resolv_integration_test.cpp b/tests/resolv_integration_test.cpp
index 7a53bc6..e5850fd 100644
--- a/tests/resolv_integration_test.cpp
+++ b/tests/resolv_integration_test.cpp
@@ -193,6 +193,11 @@
mDnsClient.TearDown();
}
+ void resetNetwork() {
+ mDnsClient.TearDown();
+ mDnsClient.SetupOemNetwork();
+ }
+
void StartDns(test::DNSResponder& dns, const std::vector<DnsRecord>& records) {
for (const auto& r : records) {
dns.addMapping(r.host_name, r.type, r.addr);
@@ -4730,6 +4735,10 @@
test::DNSResponder neverRespondDns(listen_addr2, "53", static_cast<ns_rcode>(-1));
neverRespondDns.setResponseProbability(0.0);
StartDns(neverRespondDns, records);
+ ScopedSystemProperties scopedSystemProperties(
+ "persist.device_config.netd_native.keep_listening_udp", "1");
+ // Re-setup test network to make experiment flag take effect.
+ resetNetwork();
ASSERT_TRUE(mDnsClient.SetResolversForNetwork({listen_addr1, listen_addr2},
kDefaultSearchDomains, params));
@@ -4740,9 +4749,7 @@
// because |delayTimeMs| > DNS timeout.
// Then it's the second try, resolver will send query to |neverRespondDns| and
// listen on both servers. Resolver will receive the answer coming from |delayedDns|.
- const std::string udpKeepListeningFlag("persist.device_config.netd_native.keep_listening_udp");
- ScopedSystemProperties scopedSystemProperties(udpKeepListeningFlag, "1");
test::DNSResponder delayedDns(listen_addr1);
delayedDns.setResponseDelayMs(delayTimeMs);
StartDns(delayedDns, records);
@@ -4770,13 +4777,14 @@
test::DNSResponder neverRespondDns(listen_addr, "53", static_cast<ns_rcode>(-1));
neverRespondDns.setResponseProbability(0.0);
StartDns(neverRespondDns, records);
+ ScopedSystemProperties scopedSystemProperties(
+ "persist.device_config.netd_native.parallel_lookup", "1");
+ // Re-setup test network to make experiment flag take effect.
+ resetNetwork();
ASSERT_TRUE(mDnsClient.SetResolversForNetwork({listen_addr}, kDefaultSearchDomains, params));
neverRespondDns.clearQueries();
- const std::string udpKeepListeningFlag("persist.device_config.netd_native.parallel_lookup");
- ScopedSystemProperties scopedSystemProperties(udpKeepListeningFlag, "1");
-
// Use a never respond DNS server to verify if the A/AAAA queries are sent in parallel.
// The resolver parameters are set to timeout 1s and retry 1 times.
// So we expect the safe_getaddrinfo_time_taken() might take ~1s to