shill: Ignore certan DNS search paths
Add a manager property to provide a list of DNS Search paths
that should be ignored when applying DHCP parameters. This
covers a list of DNS search suffixes that are popularly
provided, but are generally unlikely to provide any useful
results, therefore significantly reducing DNS lookup performance.
BUG=chromium-os:34495
TEST=Unit-tests + Manual: Add a domain to the default search list and make sure it is filtered from the "search" line in resolv.conf.
CQ-DEPENDS: I54bdd33a05bb704d8c3ff05f71e034fe42635e89
Change-Id: Id92b39f1ad0ae64b3ff50c7671cdf388d92a07af
Reviewed-on: https://gerrit.chromium.org/gerrit/33460
Reviewed-by: Christopher Wiley <wiley@chromium.org>
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Commit-Ready: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/resolver_unittest.cc b/resolver_unittest.cc
index 2ede654..5988c12 100644
--- a/resolver_unittest.cc
+++ b/resolver_unittest.cc
@@ -24,6 +24,7 @@
const char kNameServer1[] = "8.8.9.9";
const char kSearchDomain0[] = "chromium.org";
const char kSearchDomain1[] = "google.com";
+const char kSearchDomain2[] = "crosbug.com";
const char kExpectedOutput[] =
"nameserver 8.8.8.8\n"
"nameserver 8.8.9.9\n"
@@ -34,6 +35,11 @@
"nameserver 8.8.9.9\n"
"search chromium.org google.com\n"
"options single-request timeout-ms:300 attempts:15\n";
+const char kExpectedIgnoredSearchOutput[] =
+ "nameserver 8.8.8.8\n"
+ "nameserver 8.8.9.9\n"
+ "search google.com\n"
+ "options single-request timeout:1 attempts:3\n";
} // namespace {}
class ResolverTest : public Test {
@@ -117,4 +123,27 @@
EXPECT_FALSE(file_util::PathExists(path_));
}
+TEST_F(ResolverTest, IgnoredSearchList) {
+ EXPECT_FALSE(file_util::PathExists(path_));
+ EXPECT_TRUE(resolver_->ClearDNS());
+
+ MockControl control;
+ vector<string> dns_servers;
+ vector<string> domain_search;
+ dns_servers.push_back(kNameServer0);
+ dns_servers.push_back(kNameServer1);
+ domain_search.push_back(kSearchDomain0);
+ domain_search.push_back(kSearchDomain1);
+ vector<string> ignored_search;
+ ignored_search.push_back(kSearchDomain0);
+ ignored_search.push_back(kSearchDomain2);
+ resolver_->set_ignored_search_list(ignored_search);
+ EXPECT_TRUE(resolver_->SetDNSFromLists(
+ dns_servers, domain_search, Resolver::kDefaultTimeout));
+ EXPECT_TRUE(file_util::PathExists(path_));
+ EXPECT_EQ(kExpectedIgnoredSearchOutput, ReadFile());
+
+ EXPECT_TRUE(resolver_->ClearDNS());
+}
+
} // namespace shill