Loading resolv_cache_unit_test.cpp +72 −4 Original line number Original line Diff line number Diff line Loading @@ -104,9 +104,20 @@ time_t currentTime() { return std::time(nullptr); return std::time(nullptr); } } // Comparison for res_stats. Simply check the count in the cache test. // Comparison for res_sample. bool operator==(const res_sample& a, const res_sample& b) { return std::tie(a.at, a.rtt, a.rcode) == std::tie(b.at, b.rtt, b.rcode); } // Comparison for res_stats. bool operator==(const res_stats& a, const res_stats& b) { bool operator==(const res_stats& a, const res_stats& b) { return std::tie(a.sample_count, a.sample_next) == std::tie(b.sample_count, b.sample_next); if (std::tie(a.sample_count, a.sample_next) != std::tie(b.sample_count, b.sample_next)) { return false; } for (int i = 0; i < a.sample_count; i++) { if (a.samples[i] != b.samples[i]) return false; } return true; } } // Comparison for res_params. // Comparison for res_params. Loading Loading @@ -837,6 +848,65 @@ TEST_F(ResolvCacheTest, GetHostByAddrFromCache) { EXPECT_STREQ(answer, domain_name); EXPECT_STREQ(answer, domain_name); } } TEST_F(ResolvCacheTest, GetResolverStats) { const res_sample sample1 = {.at = time(nullptr), .rtt = 100, .rcode = ns_r_noerror}; const res_sample sample2 = {.at = time(nullptr), .rtt = 200, .rcode = ns_r_noerror}; const res_sample sample3 = {.at = time(nullptr), .rtt = 300, .rcode = ns_r_noerror}; const res_stats expectedStats[MAXNS] = { {{sample1}, 1 /*sample_count*/, 1 /*sample_next*/}, {{sample2}, 1, 1}, {{sample3}, 1, 1}, }; std::vector<IPSockAddr> nameserverSockAddrs = { IPSockAddr::toIPSockAddr("127.0.0.1", DNS_PORT), IPSockAddr::toIPSockAddr("::127.0.0.2", DNS_PORT), IPSockAddr::toIPSockAddr("fe80::3", DNS_PORT), }; const SetupParams setup = { .servers = {"127.0.0.1", "::127.0.0.2", "fe80::3"}, .domains = {"domain1.com", "domain2.com"}, .params = kParams, }; EXPECT_EQ(0, cacheCreate(TEST_NETID)); EXPECT_EQ(0, cacheSetupResolver(TEST_NETID, setup)); int revision_id = 1; cacheAddStats(TEST_NETID, revision_id, nameserverSockAddrs[0], sample1, setup.params.max_samples); cacheAddStats(TEST_NETID, revision_id, nameserverSockAddrs[1], sample2, setup.params.max_samples); cacheAddStats(TEST_NETID, revision_id, nameserverSockAddrs[2], sample3, setup.params.max_samples); res_stats cacheStats[MAXNS]{}; res_params params; EXPECT_EQ(resolv_cache_get_resolver_stats(TEST_NETID, ¶ms, cacheStats, nameserverSockAddrs), revision_id); EXPECT_TRUE(params == kParams); for (size_t i = 0; i < MAXNS; i++) { EXPECT_TRUE(cacheStats[i] == expectedStats[i]); } // pass another list of IPSockAddr const res_stats expectedStats2[MAXNS] = { {{sample3, sample2}, 2, 2}, {{sample2}, 1, 1}, {{sample1}, 1, 1}, }; nameserverSockAddrs = { IPSockAddr::toIPSockAddr("fe80::3", DNS_PORT), IPSockAddr::toIPSockAddr("::127.0.0.2", DNS_PORT), IPSockAddr::toIPSockAddr("127.0.0.1", DNS_PORT), }; cacheAddStats(TEST_NETID, revision_id, nameserverSockAddrs[0], sample2, setup.params.max_samples); EXPECT_EQ(resolv_cache_get_resolver_stats(TEST_NETID, ¶ms, cacheStats, nameserverSockAddrs), revision_id); EXPECT_TRUE(params == kParams); for (size_t i = 0; i < MAXNS; i++) { EXPECT_TRUE(cacheStats[i] == expectedStats2[i]); } } namespace { namespace { constexpr int EAI_OK = 0; constexpr int EAI_OK = 0; Loading Loading @@ -907,8 +977,6 @@ TEST_F(ResolvCacheTest, DnsEventSubsampling) { } } // TODO: Tests for NetConfig, including: // TODO: Tests for NetConfig, including: // - res_params // -- resolv_cache_get_resolver_stats() // - res_stats // - res_stats // -- _resolv_cache_add_resolver_stats_sample() // -- _resolv_cache_add_resolver_stats_sample() // -- android_net_res_stats_get_info_for_net() // -- android_net_res_stats_get_info_for_net() Loading Loading
resolv_cache_unit_test.cpp +72 −4 Original line number Original line Diff line number Diff line Loading @@ -104,9 +104,20 @@ time_t currentTime() { return std::time(nullptr); return std::time(nullptr); } } // Comparison for res_stats. Simply check the count in the cache test. // Comparison for res_sample. bool operator==(const res_sample& a, const res_sample& b) { return std::tie(a.at, a.rtt, a.rcode) == std::tie(b.at, b.rtt, b.rcode); } // Comparison for res_stats. bool operator==(const res_stats& a, const res_stats& b) { bool operator==(const res_stats& a, const res_stats& b) { return std::tie(a.sample_count, a.sample_next) == std::tie(b.sample_count, b.sample_next); if (std::tie(a.sample_count, a.sample_next) != std::tie(b.sample_count, b.sample_next)) { return false; } for (int i = 0; i < a.sample_count; i++) { if (a.samples[i] != b.samples[i]) return false; } return true; } } // Comparison for res_params. // Comparison for res_params. Loading Loading @@ -837,6 +848,65 @@ TEST_F(ResolvCacheTest, GetHostByAddrFromCache) { EXPECT_STREQ(answer, domain_name); EXPECT_STREQ(answer, domain_name); } } TEST_F(ResolvCacheTest, GetResolverStats) { const res_sample sample1 = {.at = time(nullptr), .rtt = 100, .rcode = ns_r_noerror}; const res_sample sample2 = {.at = time(nullptr), .rtt = 200, .rcode = ns_r_noerror}; const res_sample sample3 = {.at = time(nullptr), .rtt = 300, .rcode = ns_r_noerror}; const res_stats expectedStats[MAXNS] = { {{sample1}, 1 /*sample_count*/, 1 /*sample_next*/}, {{sample2}, 1, 1}, {{sample3}, 1, 1}, }; std::vector<IPSockAddr> nameserverSockAddrs = { IPSockAddr::toIPSockAddr("127.0.0.1", DNS_PORT), IPSockAddr::toIPSockAddr("::127.0.0.2", DNS_PORT), IPSockAddr::toIPSockAddr("fe80::3", DNS_PORT), }; const SetupParams setup = { .servers = {"127.0.0.1", "::127.0.0.2", "fe80::3"}, .domains = {"domain1.com", "domain2.com"}, .params = kParams, }; EXPECT_EQ(0, cacheCreate(TEST_NETID)); EXPECT_EQ(0, cacheSetupResolver(TEST_NETID, setup)); int revision_id = 1; cacheAddStats(TEST_NETID, revision_id, nameserverSockAddrs[0], sample1, setup.params.max_samples); cacheAddStats(TEST_NETID, revision_id, nameserverSockAddrs[1], sample2, setup.params.max_samples); cacheAddStats(TEST_NETID, revision_id, nameserverSockAddrs[2], sample3, setup.params.max_samples); res_stats cacheStats[MAXNS]{}; res_params params; EXPECT_EQ(resolv_cache_get_resolver_stats(TEST_NETID, ¶ms, cacheStats, nameserverSockAddrs), revision_id); EXPECT_TRUE(params == kParams); for (size_t i = 0; i < MAXNS; i++) { EXPECT_TRUE(cacheStats[i] == expectedStats[i]); } // pass another list of IPSockAddr const res_stats expectedStats2[MAXNS] = { {{sample3, sample2}, 2, 2}, {{sample2}, 1, 1}, {{sample1}, 1, 1}, }; nameserverSockAddrs = { IPSockAddr::toIPSockAddr("fe80::3", DNS_PORT), IPSockAddr::toIPSockAddr("::127.0.0.2", DNS_PORT), IPSockAddr::toIPSockAddr("127.0.0.1", DNS_PORT), }; cacheAddStats(TEST_NETID, revision_id, nameserverSockAddrs[0], sample2, setup.params.max_samples); EXPECT_EQ(resolv_cache_get_resolver_stats(TEST_NETID, ¶ms, cacheStats, nameserverSockAddrs), revision_id); EXPECT_TRUE(params == kParams); for (size_t i = 0; i < MAXNS; i++) { EXPECT_TRUE(cacheStats[i] == expectedStats2[i]); } } namespace { namespace { constexpr int EAI_OK = 0; constexpr int EAI_OK = 0; Loading Loading @@ -907,8 +977,6 @@ TEST_F(ResolvCacheTest, DnsEventSubsampling) { } } // TODO: Tests for NetConfig, including: // TODO: Tests for NetConfig, including: // - res_params // -- resolv_cache_get_resolver_stats() // - res_stats // - res_stats // -- _resolv_cache_add_resolver_stats_sample() // -- _resolv_cache_add_resolver_stats_sample() // -- android_net_res_stats_get_info_for_net() // -- android_net_res_stats_get_info_for_net() Loading