Avoid multiple inheritance in ResolverTest
This is better modeled by an HAS-A relationship, and multiple
inheritance can cause a good deal of confusion. For instance, it wasn't
clear why GTest wouldn't call DnsResponderClient::SetUp() after deleting
ResolverTest::SetUp().
Test: atest resolv_integration_test
Change-Id: I69f5e53917a491f9d7035c0ff2399077f46e380c
diff --git a/resolv/resolver_test.cpp b/resolv/resolver_test.cpp
index 0f32fb9..89da17d 100644
--- a/resolv/resolver_test.cpp
+++ b/resolv/resolver_test.cpp
@@ -109,10 +109,10 @@
return true;
}
-class ResolverTest : public ::testing::Test, public DnsResponderClient {
+class ResolverTest : public ::testing::Test {
protected:
- void SetUp() { DnsResponderClient::SetUp(); }
- void TearDown() { DnsResponderClient::TearDown(); }
+ void SetUp() { mDnsClient.SetUp(); }
+ void TearDown() { mDnsClient.TearDown(); }
bool GetResolverInfo(std::vector<std::string>* servers, std::vector<std::string>* domains,
std::vector<std::string>* tlsServers, __res_params* params,
@@ -120,8 +120,8 @@
using android::net::INetd;
std::vector<int32_t> params32;
std::vector<int32_t> stats32;
- auto rv = mNetdSrv->getResolverInfo(TEST_NETID, servers, domains, tlsServers, ¶ms32,
- &stats32);
+ auto rv = mDnsClient.netdService()->getResolverInfo(TEST_NETID, servers, domains,
+ tlsServers, ¶ms32, &stats32);
if (!rv.isOk() || params32.size() != static_cast<size_t>(INetd::RESOLVER_PARAMS_COUNT)) {
return false;
}
@@ -218,7 +218,7 @@
const int limit = timeoutMs / intervalMs;
for (int count = 0; count <= limit; ++count) {
std::string prefix;
- auto rv = mNetdSrv->getPrefix64(netId, &prefix);
+ auto rv = mDnsClient.netdService()->getPrefix64(netId, &prefix);
if (rv.isOk()) {
return true;
}
@@ -232,11 +232,11 @@
std::vector<std::string> domains = { "example.com" };
std::vector<std::unique_ptr<test::DNSResponder>> dns;
std::vector<std::string> servers;
- std::vector<DnsResponderClient::Mapping> mappings;
- ASSERT_NO_FATAL_FAILURE(SetupMappings(num_hosts, domains, &mappings));
- ASSERT_NO_FATAL_FAILURE(SetupDNSServers(MAXNS, mappings, &dns, &servers));
+ std::vector<DnsResponderClient::DnsResponderClient::Mapping> mappings;
+ ASSERT_NO_FATAL_FAILURE(mDnsClient.SetupMappings(num_hosts, domains, &mappings));
+ ASSERT_NO_FATAL_FAILURE(mDnsClient.SetupDNSServers(MAXNS, mappings, &dns, &servers));
- ASSERT_TRUE(SetResolversForNetwork(servers, domains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, domains, mDefaultParams));
auto t0 = std::chrono::steady_clock::now();
std::vector<std::thread> threads(num_threads);
@@ -268,17 +268,19 @@
auto t1 = std::chrono::steady_clock::now();
ALOGI("%u hosts, %u threads, %u queries, %Es", num_hosts, num_threads, num_queries,
std::chrono::duration<double>(t1 - t0).count());
- ASSERT_NO_FATAL_FAILURE(ShutdownDNSServers(&dns));
+ ASSERT_NO_FATAL_FAILURE(mDnsClient.ShutdownDNSServers(&dns));
}
const std::vector<std::string> mDefaultSearchDomains = { "example.com" };
// <sample validity in s> <success threshold in percent> <min samples> <max samples>
- const std::vector<int> mDefaultParams_Binder = {
+ const std::vector<int> mDefaultParams = {
300, // SAMPLE_VALIDITY
25, // SUCCESS_THRESHOLD
8, 8, // {MIN,MAX}_SAMPLES
100, // BASE_TIMEOUT_MSEC
};
+
+ DnsResponderClient mDnsClient;
};
TEST_F(ResolverTest, GetHostByName) {
@@ -290,7 +292,7 @@
dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.3");
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = { listen_addr };
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
const hostent* result;
@@ -327,7 +329,7 @@
test::DNSResponder dns(listen_addr, listen_srv, 250, ns_rcode::ns_r_servfail);
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Expect no DNS queries; localhost is resolved via /etc/hosts
@@ -381,8 +383,8 @@
constexpr char listen_srv[] = "53";
test::DNSResponder dns(listen_addr, listen_srv, 250, ns_rcode::ns_r_servfail);
ASSERT_TRUE(dns.startServer());
- ASSERT_TRUE(
- SetResolversForNetwork({listen_addr}, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork({listen_addr}, mDefaultSearchDomains,
+ mDefaultParams));
// Numeric v4 address: expect no DNS queries
constexpr char numeric_v4[] = "192.168.0.1";
@@ -449,13 +451,13 @@
std::vector<std::string> domains = { "example.com" };
std::vector<std::unique_ptr<test::DNSResponder>> dns;
std::vector<std::string> servers;
- std::vector<Mapping> mappings;
- ASSERT_NO_FATAL_FAILURE(SetupMappings(1, domains, &mappings));
- ASSERT_NO_FATAL_FAILURE(SetupDNSServers(4, mappings, &dns, &servers));
+ std::vector<DnsResponderClient::Mapping> mappings;
+ ASSERT_NO_FATAL_FAILURE(mDnsClient.SetupMappings(1, domains, &mappings));
+ ASSERT_NO_FATAL_FAILURE(mDnsClient.SetupDNSServers(4, mappings, &dns, &servers));
ASSERT_EQ(1U, mappings.size());
- const Mapping& mapping = mappings[0];
+ const DnsResponderClient::Mapping& mapping = mappings[0];
- ASSERT_TRUE(SetResolversForNetwork(servers, domains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, domains, mDefaultParams));
const hostent* result = gethostbyname(mapping.host.c_str());
const size_t total_queries =
@@ -480,21 +482,20 @@
EXPECT_EQ(servers.size(), res_servers.size());
EXPECT_EQ(domains.size(), res_domains.size());
EXPECT_EQ(0U, res_tls_servers.size());
- ASSERT_EQ(static_cast<size_t>(INetd::RESOLVER_PARAMS_COUNT), mDefaultParams_Binder.size());
- EXPECT_EQ(mDefaultParams_Binder[INetd::RESOLVER_PARAMS_SAMPLE_VALIDITY],
- res_params.sample_validity);
- EXPECT_EQ(mDefaultParams_Binder[INetd::RESOLVER_PARAMS_SUCCESS_THRESHOLD],
- res_params.success_threshold);
- EXPECT_EQ(mDefaultParams_Binder[INetd::RESOLVER_PARAMS_MIN_SAMPLES], res_params.min_samples);
- EXPECT_EQ(mDefaultParams_Binder[INetd::RESOLVER_PARAMS_MAX_SAMPLES], res_params.max_samples);
- EXPECT_EQ(mDefaultParams_Binder[INetd::RESOLVER_PARAMS_BASE_TIMEOUT_MSEC],
+ ASSERT_EQ(static_cast<size_t>(INetd::RESOLVER_PARAMS_COUNT), mDefaultParams.size());
+ EXPECT_EQ(mDefaultParams[INetd::RESOLVER_PARAMS_SAMPLE_VALIDITY], res_params.sample_validity);
+ EXPECT_EQ(mDefaultParams[INetd::RESOLVER_PARAMS_SUCCESS_THRESHOLD],
+ res_params.success_threshold);
+ EXPECT_EQ(mDefaultParams[INetd::RESOLVER_PARAMS_MIN_SAMPLES], res_params.min_samples);
+ EXPECT_EQ(mDefaultParams[INetd::RESOLVER_PARAMS_MAX_SAMPLES], res_params.max_samples);
+ EXPECT_EQ(mDefaultParams[INetd::RESOLVER_PARAMS_BASE_TIMEOUT_MSEC],
res_params.base_timeout_msec);
EXPECT_EQ(servers.size(), res_stats.size());
EXPECT_TRUE(UnorderedCompareArray(res_servers, servers));
EXPECT_TRUE(UnorderedCompareArray(res_domains, domains));
- ASSERT_NO_FATAL_FAILURE(ShutdownDNSServers(&dns));
+ ASSERT_NO_FATAL_FAILURE(mDnsClient.ShutdownDNSServers(&dns));
}
TEST_F(ResolverTest, GetAddrInfo) {
@@ -513,7 +514,7 @@
ASSERT_TRUE(dns2.startServer());
std::vector<std::string> servers = { listen_addr };
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
dns2.clearQueries();
@@ -539,7 +540,7 @@
// Change the DNS resolver, ensure that queries are still cached.
servers = { listen_addr2 };
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
dns2.clearQueries();
@@ -567,7 +568,7 @@
dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.5");
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = { listen_addr };
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
addrinfo hints = {.ai_family = AF_INET};
ScopedAddrinfo result = safe_getaddrinfo("hola", nullptr, &hints);
@@ -588,7 +589,7 @@
test::DNSResponder dns(listen_addr, listen_srv, 250, ns_rcode::ns_r_servfail);
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
ScopedAddrinfo result = safe_getaddrinfo(name, nullptr, nullptr);
EXPECT_TRUE(result != nullptr);
@@ -612,7 +613,7 @@
dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.3");
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = { listen_addr };
- ASSERT_TRUE(SetResolversForNetwork(servers, searchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, searchDomains, mDefaultParams));
dns.clearQueries();
const hostent* result = gethostbyname("nihao");
@@ -636,7 +637,7 @@
dns.addMapping(host_name, ns_type::ns_t_aaaa, "2001:db8::5");
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = {listen_addr0};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
addrinfo hints = {.ai_family = AF_INET6};
ScopedAddrinfo result = safe_getaddrinfo(numeric_addr, nullptr, &hints);
@@ -668,7 +669,7 @@
// <sample validity in s> <success threshold in percent> <min samples> <max samples>
int sample_count = 8;
const std::vector<int> params = { 300, 25, sample_count, sample_count };
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, params));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, params));
// Repeatedly perform resolutions for non-existing domains until MAXNSSAMPLES resolutions have
// reached the dns0, which is set to fail. No more requests should then arrive at that server
@@ -708,7 +709,7 @@
ASSERT_TRUE(dns0.startServer());
ASSERT_TRUE(dns1.startServer());
std::vector<std::string> servers = {listen_addr0, listen_addr1};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
const addrinfo hints = {.ai_family = AF_INET6};
@@ -757,8 +758,8 @@
}
}
if (serverSubset.empty()) serverSubset = servers;
- ASSERT_TRUE(SetResolversForNetwork(serverSubset, mDefaultSearchDomains,
- mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(serverSubset, mDefaultSearchDomains,
+ mDefaultParams));
addrinfo hints = {.ai_family = AF_INET6};
addrinfo* result = nullptr;
int rv = getaddrinfo("konbanha", nullptr, &hints, &result);
@@ -792,7 +793,7 @@
using android::net::INetd;
std::vector<std::string> servers;
std::vector<std::string> domains;
- ASSERT_TRUE(SetResolversForNetwork(servers, domains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, domains, mDefaultParams));
std::vector<std::string> res_servers;
std::vector<std::string> res_domains;
std::vector<std::string> res_tls_servers;
@@ -803,14 +804,13 @@
EXPECT_EQ(0U, res_servers.size());
EXPECT_EQ(0U, res_domains.size());
EXPECT_EQ(0U, res_tls_servers.size());
- ASSERT_EQ(static_cast<size_t>(INetd::RESOLVER_PARAMS_COUNT), mDefaultParams_Binder.size());
- EXPECT_EQ(mDefaultParams_Binder[INetd::RESOLVER_PARAMS_SAMPLE_VALIDITY],
- res_params.sample_validity);
- EXPECT_EQ(mDefaultParams_Binder[INetd::RESOLVER_PARAMS_SUCCESS_THRESHOLD],
- res_params.success_threshold);
- EXPECT_EQ(mDefaultParams_Binder[INetd::RESOLVER_PARAMS_MIN_SAMPLES], res_params.min_samples);
- EXPECT_EQ(mDefaultParams_Binder[INetd::RESOLVER_PARAMS_MAX_SAMPLES], res_params.max_samples);
- EXPECT_EQ(mDefaultParams_Binder[INetd::RESOLVER_PARAMS_BASE_TIMEOUT_MSEC],
+ ASSERT_EQ(static_cast<size_t>(INetd::RESOLVER_PARAMS_COUNT), mDefaultParams.size());
+ EXPECT_EQ(mDefaultParams[INetd::RESOLVER_PARAMS_SAMPLE_VALIDITY], res_params.sample_validity);
+ EXPECT_EQ(mDefaultParams[INetd::RESOLVER_PARAMS_SUCCESS_THRESHOLD],
+ res_params.success_threshold);
+ EXPECT_EQ(mDefaultParams[INetd::RESOLVER_PARAMS_MIN_SAMPLES], res_params.min_samples);
+ EXPECT_EQ(mDefaultParams[INetd::RESOLVER_PARAMS_MAX_SAMPLES], res_params.max_samples);
+ EXPECT_EQ(mDefaultParams[INetd::RESOLVER_PARAMS_BASE_TIMEOUT_MSEC],
res_params.base_timeout_msec);
}
@@ -825,7 +825,7 @@
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = { listen_addr };
std::vector<std::string> domains = { "domain1.org" };
- ASSERT_TRUE(SetResolversForNetwork(servers, domains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, domains, mDefaultParams));
const addrinfo hints = {.ai_family = AF_INET6};
ScopedAddrinfo result = safe_getaddrinfo("test13", nullptr, &hints);
@@ -836,7 +836,7 @@
// Test that changing the domain search path on its own works.
domains = { "domain2.org" };
- ASSERT_TRUE(SetResolversForNetwork(servers, domains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, domains, mDefaultParams));
dns.clearQueries();
result = safe_getaddrinfo("test13", nullptr, &hints);
@@ -887,16 +887,16 @@
std::vector<std::unique_ptr<test::DnsTlsFrontend>> tls;
std::vector<std::string> servers;
std::vector<std::string> fingerprints;
- std::vector<Mapping> mappings;
+ std::vector<DnsResponderClient::Mapping> mappings;
for (unsigned i = 0; i < MAXDNSRCH + 1; i++) {
domains.push_back(StringPrintf("example%u.com", i));
}
- ASSERT_NO_FATAL_FAILURE(SetupMappings(1, domains, &mappings));
- ASSERT_NO_FATAL_FAILURE(SetupDNSServers(MAXNS + 1, mappings, &dns, &servers));
+ ASSERT_NO_FATAL_FAILURE(mDnsClient.SetupMappings(1, domains, &mappings));
+ ASSERT_NO_FATAL_FAILURE(mDnsClient.SetupDNSServers(MAXNS + 1, mappings, &dns, &servers));
ASSERT_NO_FATAL_FAILURE(setupTlsServers(servers, &tls, &fingerprints));
- ASSERT_TRUE(SetResolversWithTls(servers, domains, mDefaultParams_Binder, "", fingerprints));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, domains, mDefaultParams, "", fingerprints));
std::vector<std::string> res_servers;
std::vector<std::string> res_domains;
@@ -914,7 +914,7 @@
EXPECT_TRUE(std::equal(servers.begin(), servers.begin() + MAXNS, res_tls_servers.begin()));
EXPECT_TRUE(std::equal(domains.begin(), domains.begin() + MAXDNSRCH, res_domains.begin()));
- ASSERT_NO_FATAL_FAILURE(ShutdownDNSServers(&dns));
+ ASSERT_NO_FATAL_FAILURE(mDnsClient.ShutdownDNSServers(&dns));
ASSERT_NO_FATAL_FAILURE(shutdownTlsServers(&tls));
}
@@ -941,7 +941,7 @@
ASSERT_TRUE(dns3.startServer());
std::vector<std::string> servers = {listen_addr1, listen_addr2, listen_addr3};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns3.clearQueries();
addrinfo hints = {.ai_family = AF_INET, .ai_socktype = SOCK_DGRAM};
@@ -980,7 +980,8 @@
// There's nothing listening on this address, so validation will either fail or
/// hang. Either way, queries will continue to flow to the DNSResponder.
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder, "", {}));
+ ASSERT_TRUE(
+ mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams, "", {}));
const hostent* result;
@@ -989,7 +990,7 @@
EXPECT_EQ("1.2.3.3", ToString(result));
// Clear TLS bit.
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.stopServer();
}
@@ -1019,7 +1020,8 @@
ASSERT_FALSE(listen(s, 1));
// Trigger TLS validation.
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder, "", {}));
+ ASSERT_TRUE(
+ mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams, "", {}));
struct sockaddr_storage cliaddr;
socklen_t sin_size = sizeof(cliaddr);
@@ -1046,7 +1048,7 @@
EXPECT_EQ("1.2.3.2", ToString(result));
// Clear TLS bit.
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.stopServer();
close(s);
}
@@ -1067,7 +1069,8 @@
test::DnsTlsFrontend tls(listen_addr, listen_tls, listen_addr, listen_udp);
ASSERT_TRUE(tls.startServer());
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder, "", {}));
+ ASSERT_TRUE(
+ mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams, "", {}));
const hostent* result;
@@ -1096,7 +1099,7 @@
// Reset the resolvers without enabling TLS. Queries should still be routed
// to the UDP endpoint.
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
result = gethostbyname("tls3");
ASSERT_FALSE(result == nullptr);
@@ -1119,8 +1122,8 @@
test::DnsTlsFrontend tls(listen_addr, listen_tls, listen_addr, listen_udp);
tls.set_chain_length(chain_length);
ASSERT_TRUE(tls.startServer());
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder, "",
- { base64Encode(tls.fingerprint()) }));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams,
+ "", {base64Encode(tls.fingerprint())}));
const hostent* result;
@@ -1137,7 +1140,8 @@
}
// Clear TLS bit to ensure revalidation.
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(
+ mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
tls.stopServer();
}
dns.stopServer();
@@ -1157,8 +1161,8 @@
ASSERT_TRUE(tls.startServer());
std::vector<uint8_t> bad_fingerprint = tls.fingerprint();
bad_fingerprint[5] += 1; // Corrupt the fingerprint.
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder, "",
- { base64Encode(bad_fingerprint) }));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams, "",
+ {base64Encode(bad_fingerprint)}));
// The initial validation should fail at the fingerprint check before
// issuing a query.
@@ -1168,7 +1172,7 @@
EXPECT_EQ(nullptr, gethostbyname("badtlsfingerprint"));
// Clear TLS bit.
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
tls.stopServer();
dns.stopServer();
}
@@ -1189,8 +1193,9 @@
ASSERT_TRUE(tls.startServer());
std::vector<uint8_t> bad_fingerprint = tls.fingerprint();
bad_fingerprint[5] += 1; // Corrupt the fingerprint.
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder, "",
- { base64Encode(bad_fingerprint), base64Encode(tls.fingerprint()) }));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(
+ servers, mDefaultSearchDomains, mDefaultParams, "",
+ {base64Encode(bad_fingerprint), base64Encode(tls.fingerprint())}));
const hostent* result;
@@ -1205,7 +1210,7 @@
EXPECT_TRUE(tls.waitForQueries(2, 5000));
// Clear TLS bit.
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
tls.stopServer();
dns.stopServer();
}
@@ -1224,8 +1229,8 @@
test::DnsTlsFrontend tls(listen_addr, listen_tls, listen_addr, listen_udp);
ASSERT_TRUE(tls.startServer());
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder, "",
- { base64Encode(tls.fingerprint()) }));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams, "",
+ {base64Encode(tls.fingerprint())}));
const hostent* result;
@@ -1249,7 +1254,7 @@
EXPECT_EQ(HOST_NOT_FOUND, h_errno);
// Clear TLS bit.
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
tls.stopServer();
dns.stopServer();
}
@@ -1275,8 +1280,9 @@
test::DnsTlsFrontend tls2(listen_addr2, listen_tls, listen_addr2, listen_udp);
ASSERT_TRUE(tls1.startServer());
ASSERT_TRUE(tls2.startServer());
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder, "",
- { base64Encode(tls1.fingerprint()), base64Encode(tls2.fingerprint()) }));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(
+ servers, mDefaultSearchDomains, mDefaultParams, "",
+ {base64Encode(tls1.fingerprint()), base64Encode(tls2.fingerprint())}));
const hostent* result;
@@ -1307,7 +1313,7 @@
EXPECT_EQ(2U, dns2.queries().size());
// Clear TLS bit.
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
tls2.stopServer();
dns1.stopServer();
dns2.stopServer();
@@ -1325,8 +1331,8 @@
test::DnsTlsFrontend tls(listen_addr, listen_tls, listen_addr, listen_udp);
ASSERT_TRUE(tls.startServer());
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder,
- "www.example.com", {}));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams,
+ "www.example.com", {}));
// The TLS server's certificate doesn't chain to a known CA, and a nonempty name was specified,
// so the client should fail the TLS handshake before ever issuing a query.
@@ -1336,7 +1342,7 @@
EXPECT_EQ(nullptr, gethostbyname("badtlsname"));
// Clear TLS bit.
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
tls.stopServer();
dns.stopServer();
}
@@ -1354,8 +1360,8 @@
test::DnsTlsFrontend tls(listen_addr, listen_tls, listen_addr, listen_udp);
ASSERT_TRUE(tls.startServer());
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder, "",
- { base64Encode(tls.fingerprint()) }));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams, "",
+ {base64Encode(tls.fingerprint())}));
// Wait for validation to complete.
EXPECT_TRUE(tls.waitForQueries(1, 5000));
@@ -1373,7 +1379,7 @@
EXPECT_TRUE(tls.waitForQueries(3, 5000));
// Clear TLS bit.
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
tls.stopServer();
dns.stopServer();
}
@@ -1448,11 +1454,11 @@
if (config.withWorkingTLS) ASSERT_TRUE(tls.startServer());
if (config.mode == OFF) {
- ASSERT_TRUE(SetResolversForNetwork(
- servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains,
+ mDefaultParams));
} else if (config.mode == OPPORTUNISTIC) {
- ASSERT_TRUE(SetResolversWithTls(
- servers, mDefaultSearchDomains, mDefaultParams_Binder, "", {}));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains,
+ mDefaultParams, "", {}));
// Wait for validation to complete.
if (config.withWorkingTLS) EXPECT_TRUE(tls.waitForQueries(1, 5000));
} else if (config.mode == STRICT) {
@@ -1460,9 +1466,9 @@
// rather than hostname validation.
const auto& fingerprint =
(config.withWorkingTLS) ? tls.fingerprint() : NOOP_FINGERPRINT;
- ASSERT_TRUE(SetResolversWithTls(
- servers, mDefaultSearchDomains, mDefaultParams_Binder, "",
- { base64Encode(fingerprint) }));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains,
+ mDefaultParams, "",
+ {base64Encode(fingerprint)}));
// Wait for validation to complete.
if (config.withWorkingTLS) EXPECT_TRUE(tls.waitForQueries(1, 5000));
} else {
@@ -1534,9 +1540,8 @@
dns.addMapping(host_name, ns_type::ns_t_aaaa, "::1.2.3.4");
ASSERT_TRUE(dns.startServer());
- ASSERT_TRUE(SetResolversWithTls(
- servers, mDefaultSearchDomains, mDefaultParams_Binder,
- {}, "", { base64Encode(NOOP_FINGERPRINT) }));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams, {},
+ "", {base64Encode(NOOP_FINGERPRINT)}));
addrinfo* ai_result = nullptr;
EXPECT_NE(0, getaddrinfo(host_name, nullptr, nullptr, &ai_result));
@@ -1633,7 +1638,7 @@
dns.addMapping(host_name, ns_type::ns_t_aaaa, "::1.2.3.4");
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
int fd1 = resNetworkQuery(TEST_NETID, "howdy.example.com", ns_c_in, ns_t_a, 0);
@@ -1680,7 +1685,7 @@
dns.addMapping(host_name, ns_type::ns_t_aaaa, "::1.2.3.4");
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
static struct {
@@ -1722,7 +1727,7 @@
dns.addMapping(host_name, ns_type::ns_t_aaaa, "::1.2.3.4");
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// TODO: Disable retry to make this test explicit.
@@ -1782,7 +1787,7 @@
dns.addMapping(host_name, ns_type::ns_t_aaaa, "::1.2.3.4");
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
int fd = dns_open_proxy();
@@ -1843,7 +1848,7 @@
dns.addMapping(host_name, ns_type::ns_t_aaaa, "::1.2.3.4");
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// ANDROID_RESOLV_NO_CACHE_STORE
@@ -1908,7 +1913,7 @@
dns.addMapping(host_name, ns_type::ns_t_aaaa, "::1.2.3.4");
ASSERT_TRUE(dns.startServer());
std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
dns.setResponseProbability(0.0);
@@ -2035,21 +2040,22 @@
dns.setEdns(config.edns);
if (config.mode == OFF) {
- ASSERT_TRUE(
- SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains,
+ mDefaultParams));
} else if (config.mode == OPPORTUNISTIC_UDP) {
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder,
- "", {}));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains,
+ mDefaultParams, "", {}));
} else if (config.mode == OPPORTUNISTIC_TLS) {
ASSERT_TRUE(tls.startServer());
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder,
- "", {}));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains,
+ mDefaultParams, "", {}));
// Wait for validation to complete.
EXPECT_TRUE(tls.waitForQueries(1, 5000));
} else if (config.mode == STRICT) {
ASSERT_TRUE(tls.startServer());
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder,
- "", {base64Encode(tls.fingerprint())}));
+ ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains,
+ mDefaultParams, "",
+ {base64Encode(tls.fingerprint())}));
// Wait for validation to complete.
EXPECT_TRUE(tls.waitForQueries(1, 5000));
}
@@ -2109,7 +2115,8 @@
dns.setEdns(test::DNSResponder::Edns::FORMERR_ON_EDNS);
test::DnsTlsFrontend tls(CLEARTEXT_ADDR, TLS_PORT, CLEARTEXT_ADDR, CLEARTEXT_PORT);
ASSERT_TRUE(tls.startServer());
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder, "", {}));
+ ASSERT_TRUE(
+ mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams, "", {}));
// Wait for validation complete.
EXPECT_TRUE(tls.waitForQueries(1, 5000));
// Shutdown TLS server to get an error. It's similar to no response case but without waiting.
@@ -2140,7 +2147,8 @@
ASSERT_TRUE(dns.startServer());
test::DnsTlsFrontend tls(CLEARTEXT_ADDR, TLS_PORT, CLEARTEXT_ADDR, CLEARTEXT_PORT);
ASSERT_TRUE(tls.startServer());
- ASSERT_TRUE(SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams_Binder, "", {}));
+ ASSERT_TRUE(
+ mDnsClient.SetResolversWithTls(servers, mDefaultSearchDomains, mDefaultParams, "", {}));
// Wait for validation complete.
EXPECT_TRUE(tls.waitForQueries(1, 5000));
// Shutdown TLS server to get an error. It's similar to no response case but without waiting.
@@ -2175,7 +2183,7 @@
ASSERT_TRUE(dns2.startServer());
std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2195,7 +2203,7 @@
// Let's test the case when there's an IPv4 resolver.
servers = {listen_addr, listen_addr2};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
dns2.clearQueries();
@@ -2222,7 +2230,7 @@
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2259,7 +2267,7 @@
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2292,7 +2300,7 @@
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2332,7 +2340,7 @@
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2395,7 +2403,7 @@
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2439,7 +2447,7 @@
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2519,7 +2527,7 @@
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2563,7 +2571,7 @@
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2611,7 +2619,7 @@
dns.addMapping(dns64_name, ns_type::ns_t_aaaa, "64:ff9b::192.0.0.170");
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2653,7 +2661,7 @@
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2732,7 +2740,7 @@
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2804,7 +2812,7 @@
dns.addMapping(dns64_name, ns_type::ns_t_aaaa, "64:ff9b::192.0.0.170");
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2839,7 +2847,7 @@
dns.addMapping(host_name, ns_type::ns_t_a, "1.2.3.4");
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2865,7 +2873,7 @@
dns.addMapping(host_name, ns_type::ns_t_aaaa, "2001:db8::1.2.3.4");
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.
@@ -2909,7 +2917,7 @@
ASSERT_TRUE(dns.startServer());
const std::vector<std::string> servers = {listen_addr};
- ASSERT_TRUE(SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams_Binder));
+ ASSERT_TRUE(mDnsClient.SetResolversForNetwork(servers, mDefaultSearchDomains, mDefaultParams));
dns.clearQueries();
// Wait for detecting prefix to complete.