Loading Android.bp +16 −36 Original line number Diff line number Diff line Loading @@ -326,24 +326,26 @@ filegroup { ], } rust_ffi_static { name: "libdoh_ffi", crate_name: "doh", srcs: ["doh/doh.rs"], edition: "2018", rlibs: [ doh_rust_deps = [ "libandroid_logger", "libanyhow", "libbase64_rust", "libfutures", "liblibc", "liblog_rust", "libquiche", "libring", "libthiserror", "libtokio", "liburl", ], ] rust_ffi_static { name: "libdoh_ffi", crate_name: "doh", srcs: ["doh/doh.rs"], edition: "2018", rlibs: doh_rust_deps + ["libquiche"], prefer_rlib: true, shared_libs: [ Loading @@ -368,18 +370,7 @@ rust_test { // Used to enable root permission for the test. // TODO: remove after 'require_root' is supported in rust_test. test_config_template: ":resolv_rust_test_config_template", rustlibs: [ "libandroid_logger", "libanyhow", "libbase64_rust", "libfutures", "liblibc", "liblog_rust", "libquiche_static", "libring", "libtokio", "liburl", ], rustlibs: doh_rust_deps + ["libquiche_static"], min_sdk_version: "29", } Loading @@ -390,18 +381,7 @@ rust_ffi_static { srcs: ["doh/doh.rs"], edition: "2018", rlibs: [ "libandroid_logger", "libanyhow", "libbase64_rust", "libfutures", "liblibc", "liblog_rust", "libquiche_static", "libring", "libtokio", "liburl", ], rlibs: doh_rust_deps + ["libquiche_static"], prefer_rlib: true, // TODO(b/194022174), for unit tests to run on the Android 10 platform, // libunwind must be statically linked. Loading DnsResolver.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ * limitations under the License. */ #define LOG_TAG "resolv" #include "DnsResolver.h" #include <android-base/logging.h> Loading @@ -28,12 +30,11 @@ bool resolv_init(const ResolverNetdCallbacks* callbacks) { android::base::InitLogging(/*argv=*/nullptr); android::base::SetDefaultTag("libnetd_resolv"); LOG(INFO) << __func__ << ": Initializing resolver"; // TODO(b/170539625): restore log level to WARNING after clarifying flaky tests. const bool isDebug = isUserDebugBuild(); resolv_set_log_severity(isDebug ? android::base::DEBUG : android::base::WARNING); doh_init_logger(isDebug ? LOG_LEVEL_DEBUG : LOG_LEVEL_WARN); doh_init_logger(isDebug ? DOH_LOG_LEVEL_DEBUG : DOH_LOG_LEVEL_WARN); using android::net::gApiLevel; gApiLevel = getApiLevel(); using android::net::gResNetdCallbacks; Loading DnsStats.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -81,7 +81,7 @@ int StatsData::averageLatencyMs() const { } std::string StatsData::toString() const { if (total == 0) return fmt::format("{} <no data>", sockAddr.ip().toString()); if (total == 0) return fmt::format("{} <no data>", sockAddr.toString()); const auto now = std::chrono::steady_clock::now(); const int lastUpdateSec = duration_cast<seconds>(now - lastUpdate).count(); Loading @@ -91,8 +91,8 @@ std::string StatsData::toString() const { buf += fmt::format("{}:{} ", rcodeToName(rcode), counts); } } return fmt::format("{} ({}, {}ms, [{}], {}s)", sockAddr.ip().toString(), total, averageLatencyMs(), buf, lastUpdateSec); return fmt::format("{} ({}, {}ms, [{}], {}s)", sockAddr.toString(), total, averageLatencyMs(), buf, lastUpdateSec); } StatsRecords::StatsRecords(const IPSockAddr& ipSockAddr, size_t size) Loading DnsStatsTest.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -121,7 +121,7 @@ class DnsStatsTest : public ::testing::Test { const std::vector<StatsData>& dohData) { // A pattern to capture three matches: // server address (empty allowed), the statistics, and the score. const std::regex pattern(R"(\s{4,}([0-9a-fA-F:\.]*)[ ]?([<(].*[>)])[ ]?(\S*))"); const std::regex pattern(R"(\s{4,}([0-9a-fA-F:\.\]\[]*)[ ]?([<(].*[>)])[ ]?(\S*))"); std::string dumpString = captureDumpOutput(); const auto check = [&](const std::vector<StatsData>& statsData, const std::string& protocol, Loading @@ -142,7 +142,7 @@ class DnsStatsTest : public ::testing::Test { for (const auto& stats : statsData) { ASSERT_TRUE(std::regex_search(*dumpString, sm, pattern)); EXPECT_EQ(sm[1], stats.sockAddr.ip().toString()); EXPECT_EQ(sm[1], stats.sockAddr.toString()); EXPECT_FALSE(sm[2].str().empty()); EXPECT_FALSE(sm[3].str().empty()); *dumpString = sm.suffix(); Loading Loading @@ -238,9 +238,9 @@ TEST_F(DnsStatsTest, SetAddrs) { TEST_F(DnsStatsTest, SetServersDifferentPorts) { const std::vector<IPSockAddr> servers = { IPSockAddr::toIPSockAddr("127.0.0.1", 0), IPSockAddr::toIPSockAddr("fe80::1", 0), IPSockAddr::toIPSockAddr("127.0.0.1", 53), IPSockAddr::toIPSockAddr("127.0.0.1", 5353), IPSockAddr::toIPSockAddr("127.0.0.1", 853), IPSockAddr::toIPSockAddr("fe80::1", 53), IPSockAddr::toIPSockAddr("fe80::1", 5353), IPSockAddr::toIPSockAddr("fe80::1", 853), IPSockAddr::toIPSockAddr("127.0.0.1", 53), IPSockAddr::toIPSockAddr("127.0.0.1", 853), IPSockAddr::toIPSockAddr("127.0.0.1", 5353), IPSockAddr::toIPSockAddr("fe80::1", 53), IPSockAddr::toIPSockAddr("fe80::1", 853), IPSockAddr::toIPSockAddr("fe80::1", 5353), }; // Servers setup fails due to port unset. Loading Experiments.h +3 −2 Original line number Diff line number Diff line Loading @@ -17,10 +17,10 @@ #pragma once #include <climits> #include <map> #include <mutex> #include <string> #include <string_view> #include <unordered_map> #include <android-base/thread_annotations.h> #include <netdutils/DumpWriter.h> Loading @@ -45,7 +45,7 @@ class Experiments { Experiments() = delete; void updateInternal() EXCLUDES(mMutex); mutable std::mutex mMutex; std::unordered_map<std::string_view, int> mFlagsMapInt GUARDED_BY(mMutex); std::map<std::string_view, int> mFlagsMapInt GUARDED_BY(mMutex); // TODO: Migrate other experiment flags to here. // (retry_count, retransmission_time_interval) static constexpr const char* const kExperimentFlagKeyList[] = { Loading @@ -64,6 +64,7 @@ class Experiments { "doh", "doh_query_timeout_ms", "doh_probe_timeout_ms", "doh_idle_timeout_ms", "mdns_resolution", }; // This value is used in updateInternal as the default value if any flags can't be found. Loading Loading
Android.bp +16 −36 Original line number Diff line number Diff line Loading @@ -326,24 +326,26 @@ filegroup { ], } rust_ffi_static { name: "libdoh_ffi", crate_name: "doh", srcs: ["doh/doh.rs"], edition: "2018", rlibs: [ doh_rust_deps = [ "libandroid_logger", "libanyhow", "libbase64_rust", "libfutures", "liblibc", "liblog_rust", "libquiche", "libring", "libthiserror", "libtokio", "liburl", ], ] rust_ffi_static { name: "libdoh_ffi", crate_name: "doh", srcs: ["doh/doh.rs"], edition: "2018", rlibs: doh_rust_deps + ["libquiche"], prefer_rlib: true, shared_libs: [ Loading @@ -368,18 +370,7 @@ rust_test { // Used to enable root permission for the test. // TODO: remove after 'require_root' is supported in rust_test. test_config_template: ":resolv_rust_test_config_template", rustlibs: [ "libandroid_logger", "libanyhow", "libbase64_rust", "libfutures", "liblibc", "liblog_rust", "libquiche_static", "libring", "libtokio", "liburl", ], rustlibs: doh_rust_deps + ["libquiche_static"], min_sdk_version: "29", } Loading @@ -390,18 +381,7 @@ rust_ffi_static { srcs: ["doh/doh.rs"], edition: "2018", rlibs: [ "libandroid_logger", "libanyhow", "libbase64_rust", "libfutures", "liblibc", "liblog_rust", "libquiche_static", "libring", "libtokio", "liburl", ], rlibs: doh_rust_deps + ["libquiche_static"], prefer_rlib: true, // TODO(b/194022174), for unit tests to run on the Android 10 platform, // libunwind must be statically linked. Loading
DnsResolver.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ * limitations under the License. */ #define LOG_TAG "resolv" #include "DnsResolver.h" #include <android-base/logging.h> Loading @@ -28,12 +30,11 @@ bool resolv_init(const ResolverNetdCallbacks* callbacks) { android::base::InitLogging(/*argv=*/nullptr); android::base::SetDefaultTag("libnetd_resolv"); LOG(INFO) << __func__ << ": Initializing resolver"; // TODO(b/170539625): restore log level to WARNING after clarifying flaky tests. const bool isDebug = isUserDebugBuild(); resolv_set_log_severity(isDebug ? android::base::DEBUG : android::base::WARNING); doh_init_logger(isDebug ? LOG_LEVEL_DEBUG : LOG_LEVEL_WARN); doh_init_logger(isDebug ? DOH_LOG_LEVEL_DEBUG : DOH_LOG_LEVEL_WARN); using android::net::gApiLevel; gApiLevel = getApiLevel(); using android::net::gResNetdCallbacks; Loading
DnsStats.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -81,7 +81,7 @@ int StatsData::averageLatencyMs() const { } std::string StatsData::toString() const { if (total == 0) return fmt::format("{} <no data>", sockAddr.ip().toString()); if (total == 0) return fmt::format("{} <no data>", sockAddr.toString()); const auto now = std::chrono::steady_clock::now(); const int lastUpdateSec = duration_cast<seconds>(now - lastUpdate).count(); Loading @@ -91,8 +91,8 @@ std::string StatsData::toString() const { buf += fmt::format("{}:{} ", rcodeToName(rcode), counts); } } return fmt::format("{} ({}, {}ms, [{}], {}s)", sockAddr.ip().toString(), total, averageLatencyMs(), buf, lastUpdateSec); return fmt::format("{} ({}, {}ms, [{}], {}s)", sockAddr.toString(), total, averageLatencyMs(), buf, lastUpdateSec); } StatsRecords::StatsRecords(const IPSockAddr& ipSockAddr, size_t size) Loading
DnsStatsTest.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -121,7 +121,7 @@ class DnsStatsTest : public ::testing::Test { const std::vector<StatsData>& dohData) { // A pattern to capture three matches: // server address (empty allowed), the statistics, and the score. const std::regex pattern(R"(\s{4,}([0-9a-fA-F:\.]*)[ ]?([<(].*[>)])[ ]?(\S*))"); const std::regex pattern(R"(\s{4,}([0-9a-fA-F:\.\]\[]*)[ ]?([<(].*[>)])[ ]?(\S*))"); std::string dumpString = captureDumpOutput(); const auto check = [&](const std::vector<StatsData>& statsData, const std::string& protocol, Loading @@ -142,7 +142,7 @@ class DnsStatsTest : public ::testing::Test { for (const auto& stats : statsData) { ASSERT_TRUE(std::regex_search(*dumpString, sm, pattern)); EXPECT_EQ(sm[1], stats.sockAddr.ip().toString()); EXPECT_EQ(sm[1], stats.sockAddr.toString()); EXPECT_FALSE(sm[2].str().empty()); EXPECT_FALSE(sm[3].str().empty()); *dumpString = sm.suffix(); Loading Loading @@ -238,9 +238,9 @@ TEST_F(DnsStatsTest, SetAddrs) { TEST_F(DnsStatsTest, SetServersDifferentPorts) { const std::vector<IPSockAddr> servers = { IPSockAddr::toIPSockAddr("127.0.0.1", 0), IPSockAddr::toIPSockAddr("fe80::1", 0), IPSockAddr::toIPSockAddr("127.0.0.1", 53), IPSockAddr::toIPSockAddr("127.0.0.1", 5353), IPSockAddr::toIPSockAddr("127.0.0.1", 853), IPSockAddr::toIPSockAddr("fe80::1", 53), IPSockAddr::toIPSockAddr("fe80::1", 5353), IPSockAddr::toIPSockAddr("fe80::1", 853), IPSockAddr::toIPSockAddr("127.0.0.1", 53), IPSockAddr::toIPSockAddr("127.0.0.1", 853), IPSockAddr::toIPSockAddr("127.0.0.1", 5353), IPSockAddr::toIPSockAddr("fe80::1", 53), IPSockAddr::toIPSockAddr("fe80::1", 853), IPSockAddr::toIPSockAddr("fe80::1", 5353), }; // Servers setup fails due to port unset. Loading
Experiments.h +3 −2 Original line number Diff line number Diff line Loading @@ -17,10 +17,10 @@ #pragma once #include <climits> #include <map> #include <mutex> #include <string> #include <string_view> #include <unordered_map> #include <android-base/thread_annotations.h> #include <netdutils/DumpWriter.h> Loading @@ -45,7 +45,7 @@ class Experiments { Experiments() = delete; void updateInternal() EXCLUDES(mMutex); mutable std::mutex mMutex; std::unordered_map<std::string_view, int> mFlagsMapInt GUARDED_BY(mMutex); std::map<std::string_view, int> mFlagsMapInt GUARDED_BY(mMutex); // TODO: Migrate other experiment flags to here. // (retry_count, retransmission_time_interval) static constexpr const char* const kExperimentFlagKeyList[] = { Loading @@ -64,6 +64,7 @@ class Experiments { "doh", "doh_query_timeout_ms", "doh_probe_timeout_ms", "doh_idle_timeout_ms", "mdns_resolution", }; // This value is used in updateInternal as the default value if any flags can't be found. Loading