Loading tests/resolv_integration_test.cpp +39 −0 Original line number Diff line number Diff line Loading @@ -7585,6 +7585,45 @@ TEST_F(ResolverMultinetworkTest, IPv6LinkLocalWithDefaultRoute) { EXPECT_EQ(GetNumQueriesForType(*dnsPair->dnsServer, ns_type::ns_t_aaaa, host_name), 0U); } // v6 mdns is expected to be sent when the IPv6 address is a link-local with a default route. TEST_F(ResolverMultinetworkTest, MdnsIPv6LinkLocalWithDefaultRoute) { constexpr char v6addr[] = "::127.0.0.3"; constexpr char v4addr[] = "127.0.0.3"; constexpr char host_name[] = "hello.local."; ScopedPhysicalNetwork network = CreateScopedPhysicalNetwork(ConnectivityType::V4); ASSERT_RESULT_OK(network.init()); // Add IPv6 default route ASSERT_TRUE(mDnsClient.netdService() ->networkAddRoute(network.netId(), network.ifname(), "::/0", "") .isOk()); const Result<DnsServerPair> dnsPair = network.addIpv4Dns(); ASSERT_RESULT_OK(dnsPair); StartDns(*dnsPair->dnsServer, {}); ASSERT_TRUE(network.setDnsConfiguration()); ASSERT_TRUE(network.startTunForwarder()); test::DNSResponder mdnsv4("127.0.0.3", test::kDefaultMdnsListenService); test::DNSResponder mdnsv6("::1", test::kDefaultMdnsListenService); mdnsv4.setNetwork(network.netId()); mdnsv6.setNetwork(network.netId()); StartDns(mdnsv4, {{host_name, ns_type::ns_t_a, v4addr}}); StartDns(mdnsv6, {{host_name, ns_type::ns_t_aaaa, v6addr}}); auto result = android_getaddrinfofornet_wrapper("hello.local", network.netId()); ASSERT_RESULT_OK(result); ScopedAddrinfo ai_result(std::move(result.value())); EXPECT_THAT(ToStrings(ai_result), testing::UnorderedElementsAreArray({v4addr, v6addr})); // make sure queries were sent & received via mdns. EXPECT_EQ(GetNumQueries(mdnsv4, host_name), 1U); EXPECT_EQ(GetNumQueries(mdnsv6, host_name), 1U); EXPECT_EQ(GetNumQueriesForType(*dnsPair->dnsServer, ns_type::ns_t_a, host_name), 0U); EXPECT_EQ(GetNumQueriesForType(*dnsPair->dnsServer, ns_type::ns_t_aaaa, host_name), 0U); } TEST_F(ResolverTest, NegativeValueInExperimentFlag) { // Test setting up different retry count and BASE_TIMEOUT_MSEC in DNS server. const struct TestConfig { Loading Loading
tests/resolv_integration_test.cpp +39 −0 Original line number Diff line number Diff line Loading @@ -7585,6 +7585,45 @@ TEST_F(ResolverMultinetworkTest, IPv6LinkLocalWithDefaultRoute) { EXPECT_EQ(GetNumQueriesForType(*dnsPair->dnsServer, ns_type::ns_t_aaaa, host_name), 0U); } // v6 mdns is expected to be sent when the IPv6 address is a link-local with a default route. TEST_F(ResolverMultinetworkTest, MdnsIPv6LinkLocalWithDefaultRoute) { constexpr char v6addr[] = "::127.0.0.3"; constexpr char v4addr[] = "127.0.0.3"; constexpr char host_name[] = "hello.local."; ScopedPhysicalNetwork network = CreateScopedPhysicalNetwork(ConnectivityType::V4); ASSERT_RESULT_OK(network.init()); // Add IPv6 default route ASSERT_TRUE(mDnsClient.netdService() ->networkAddRoute(network.netId(), network.ifname(), "::/0", "") .isOk()); const Result<DnsServerPair> dnsPair = network.addIpv4Dns(); ASSERT_RESULT_OK(dnsPair); StartDns(*dnsPair->dnsServer, {}); ASSERT_TRUE(network.setDnsConfiguration()); ASSERT_TRUE(network.startTunForwarder()); test::DNSResponder mdnsv4("127.0.0.3", test::kDefaultMdnsListenService); test::DNSResponder mdnsv6("::1", test::kDefaultMdnsListenService); mdnsv4.setNetwork(network.netId()); mdnsv6.setNetwork(network.netId()); StartDns(mdnsv4, {{host_name, ns_type::ns_t_a, v4addr}}); StartDns(mdnsv6, {{host_name, ns_type::ns_t_aaaa, v6addr}}); auto result = android_getaddrinfofornet_wrapper("hello.local", network.netId()); ASSERT_RESULT_OK(result); ScopedAddrinfo ai_result(std::move(result.value())); EXPECT_THAT(ToStrings(ai_result), testing::UnorderedElementsAreArray({v4addr, v6addr})); // make sure queries were sent & received via mdns. EXPECT_EQ(GetNumQueries(mdnsv4, host_name), 1U); EXPECT_EQ(GetNumQueries(mdnsv6, host_name), 1U); EXPECT_EQ(GetNumQueriesForType(*dnsPair->dnsServer, ns_type::ns_t_a, host_name), 0U); EXPECT_EQ(GetNumQueriesForType(*dnsPair->dnsServer, ns_type::ns_t_aaaa, host_name), 0U); } TEST_F(ResolverTest, NegativeValueInExperimentFlag) { // Test setting up different retry count and BASE_TIMEOUT_MSEC in DNS server. const struct TestConfig { Loading