diff options
author | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-31 19:52:40 +0000 |
---|---|---|
committer | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-31 19:52:40 +0000 |
commit | bb0e34549798b05741950f793b572e600de0c2cd (patch) | |
tree | d8ec98dc3d9378c3036bfa92493ae9b83ea1b92d /net/dns/dns_config_service_unittest.cc | |
parent | 90c8b9ca6040546b9b08c03188a604a9f348dd89 (diff) | |
download | chromium_src-bb0e34549798b05741950f793b572e600de0c2cd.zip chromium_src-bb0e34549798b05741950f793b572e600de0c2cd.tar.gz chromium_src-bb0e34549798b05741950f793b572e600de0c2cd.tar.bz2 |
[net] Move DnsConfigService to NetworkChangeNotifier.
This merges DnsConfigWatcher back into DnsConfigService and installs
DnsConfigService at NetworkChangeNotifier. It removes |detail| from
OnDNSChanged callback, and exposes NetworkChangeNotifier::GetDnsConfig.
BUG=142142
Review URL: https://chromiumcodereview.appspot.com/10873018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@154485 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/dns/dns_config_service_unittest.cc')
-rw-r--r-- | net/dns/dns_config_service_unittest.cc | 92 |
1 files changed, 71 insertions, 21 deletions
diff --git a/net/dns/dns_config_service_unittest.cc b/net/dns/dns_config_service_unittest.cc index 2533809..c89f35b 100644 --- a/net/dns/dns_config_service_unittest.cc +++ b/net/dns/dns_config_service_unittest.cc @@ -19,8 +19,6 @@ namespace { class DnsConfigServiceTest : public testing::Test { public: void OnConfigChanged(const DnsConfig& config) { - EXPECT_FALSE(config.Equals(last_config_)) << - "Config must be different from last call."; last_config_ = config; if (quit_on_config_) MessageLoop::current()->Quit(); @@ -29,7 +27,8 @@ class DnsConfigServiceTest : public testing::Test { protected: class TestDnsConfigService : public DnsConfigService { public: - virtual void OnDNSChanged(unsigned detail) OVERRIDE {} + virtual void ReadNow() OVERRIDE {} + virtual bool StartWatching() OVERRIDE { return true; } // Expose the protected methods to this test suite. void InvalidateConfig() { @@ -47,6 +46,10 @@ class DnsConfigServiceTest : public testing::Test { void OnHostsRead(const DnsHosts& hosts) { DnsConfigService::OnHostsRead(hosts); } + + void set_watch_failed(bool value) { + DnsConfigService::set_watch_failed(value); + } }; void WaitForConfig(base::TimeDelta timeout) { @@ -64,7 +67,7 @@ class DnsConfigServiceTest : public testing::Test { DnsConfig MakeConfig(unsigned seed) { DnsConfig config; IPAddressNumber ip; - EXPECT_TRUE(ParseIPLiteralToNumber("1.2.3.4", &ip)); + CHECK(ParseIPLiteralToNumber("1.2.3.4", &ip)); config.nameservers.push_back(IPEndPoint(ip, seed & 0xFFFF)); EXPECT_TRUE(config.IsValid()); return config; @@ -84,8 +87,8 @@ class DnsConfigServiceTest : public testing::Test { quit_on_config_ = false; service_.reset(new TestDnsConfigService()); - service_->Watch(base::Bind(&DnsConfigServiceTest::OnConfigChanged, - base::Unretained(this))); + service_->WatchConfig(base::Bind(&DnsConfigServiceTest::OnConfigChanged, + base::Unretained(this))); EXPECT_FALSE(last_config_.IsValid()); } @@ -103,11 +106,9 @@ TEST_F(DnsConfigServiceTest, FirstConfig) { service_->OnConfigRead(config); // No hosts yet, so no config. - EXPECT_FALSE(last_config_.IsValid()); + EXPECT_TRUE(last_config_.Equals(DnsConfig())); service_->OnHostsRead(config.hosts); - // Empty hosts is acceptable. - EXPECT_TRUE(last_config_.IsValid()); EXPECT_TRUE(last_config_.Equals(config)); } @@ -118,29 +119,34 @@ TEST_F(DnsConfigServiceTest, Timeout) { service_->OnConfigRead(config); service_->OnHostsRead(config.hosts); - EXPECT_TRUE(last_config_.IsValid()); + EXPECT_FALSE(last_config_.Equals(DnsConfig())); EXPECT_TRUE(last_config_.Equals(config)); service_->InvalidateConfig(); WaitForConfig(TestTimeouts::action_timeout()); - EXPECT_FALSE(last_config_.IsValid()); + EXPECT_FALSE(last_config_.Equals(config)); + EXPECT_TRUE(last_config_.Equals(DnsConfig())); service_->OnConfigRead(config); + EXPECT_FALSE(last_config_.Equals(DnsConfig())); EXPECT_TRUE(last_config_.Equals(config)); service_->InvalidateHosts(); WaitForConfig(TestTimeouts::action_timeout()); - EXPECT_FALSE(last_config_.IsValid()); + EXPECT_FALSE(last_config_.Equals(config)); + EXPECT_TRUE(last_config_.Equals(DnsConfig())); + DnsConfig bad_config = last_config_ = MakeConfig(0xBAD); service_->InvalidateConfig(); - // We don't expect an update. This should time out. If we get an update, - // we'll detect unchanged config. + // We don't expect an update. This should time out. WaitForConfig(base::TimeDelta::FromMilliseconds(100) + TestTimeouts::tiny_timeout()); - EXPECT_FALSE(last_config_.IsValid()); + EXPECT_TRUE(last_config_.Equals(bad_config)) << "Unexpected change"; + last_config_ = DnsConfig(); service_->OnConfigRead(config); service_->OnHostsRead(config.hosts); + EXPECT_FALSE(last_config_.Equals(DnsConfig())); EXPECT_TRUE(last_config_.Equals(config)); } @@ -150,14 +156,15 @@ TEST_F(DnsConfigServiceTest, SameConfig) { service_->OnConfigRead(config); service_->OnHostsRead(config.hosts); + EXPECT_FALSE(last_config_.Equals(DnsConfig())); EXPECT_TRUE(last_config_.Equals(config)); - // OnConfigChanged will catch if there was no change. + last_config_ = DnsConfig(); service_->OnConfigRead(config); - EXPECT_TRUE(last_config_.Equals(config)); + EXPECT_TRUE(last_config_.Equals(DnsConfig())) << "Unexpected change"; service_->OnHostsRead(config.hosts); - EXPECT_TRUE(last_config_.Equals(config)); + EXPECT_TRUE(last_config_.Equals(DnsConfig())) << "Unexpected change"; } TEST_F(DnsConfigServiceTest, DifferentConfig) { @@ -174,6 +181,7 @@ TEST_F(DnsConfigServiceTest, DifferentConfig) { service_->OnConfigRead(config1); service_->OnHostsRead(config1.hosts); + EXPECT_FALSE(last_config_.Equals(DnsConfig())); EXPECT_TRUE(last_config_.Equals(config1)); // It doesn't matter for this tests, but increases coverage. @@ -181,14 +189,56 @@ TEST_F(DnsConfigServiceTest, DifferentConfig) { service_->InvalidateHosts(); service_->OnConfigRead(config2); - service_->OnHostsRead(config2.hosts); + EXPECT_TRUE(last_config_.Equals(config1)) << "Unexpected change"; + service_->OnHostsRead(config2.hosts); // Not an actual change. + EXPECT_FALSE(last_config_.Equals(config1)); EXPECT_TRUE(last_config_.Equals(config2)); service_->OnConfigRead(config3); + EXPECT_TRUE(last_config_.EqualsIgnoreHosts(config3)); service_->OnHostsRead(config3.hosts); + EXPECT_FALSE(last_config_.Equals(config2)); EXPECT_TRUE(last_config_.Equals(config3)); } +TEST_F(DnsConfigServiceTest, WatchFailure) { + DnsConfig config1 = MakeConfig(1); + DnsConfig config2 = MakeConfig(2); + config1.hosts = MakeHosts(1); + config2.hosts = MakeHosts(2); + + service_->OnConfigRead(config1); + service_->OnHostsRead(config1.hosts); + EXPECT_FALSE(last_config_.Equals(DnsConfig())); + EXPECT_TRUE(last_config_.Equals(config1)); + + // Simulate watch failure. + service_->set_watch_failed(true); + service_->InvalidateConfig(); + WaitForConfig(TestTimeouts::action_timeout()); + EXPECT_FALSE(last_config_.Equals(config1)); + EXPECT_TRUE(last_config_.Equals(DnsConfig())); + + DnsConfig bad_config = last_config_ = MakeConfig(0xBAD); + // Actual change in config, so expect an update, but it should be empty. + service_->OnConfigRead(config1); + EXPECT_FALSE(last_config_.Equals(bad_config)); + EXPECT_TRUE(last_config_.Equals(DnsConfig())); + + last_config_ = bad_config; + // Actual change in config, so expect an update, but it should be empty. + service_->InvalidateConfig(); + service_->OnConfigRead(config2); + EXPECT_FALSE(last_config_.Equals(bad_config)); + EXPECT_TRUE(last_config_.Equals(DnsConfig())); + + last_config_ = bad_config; + // No change, so no update. + service_->InvalidateConfig(); + service_->OnConfigRead(config2); + EXPECT_TRUE(last_config_.Equals(bad_config)); +} + #if (defined(OS_POSIX) && !defined(OS_ANDROID)) || defined(OS_WIN) // TODO(szym): This is really an integration test and can time out if HOSTS is // huge. http://crbug.com/107810 @@ -196,8 +246,8 @@ TEST_F(DnsConfigServiceTest, FLAKY_GetSystemConfig) { service_.reset(); scoped_ptr<DnsConfigService> service(DnsConfigService::CreateSystemService()); - service->Read(base::Bind(&DnsConfigServiceTest::OnConfigChanged, - base::Unretained(this))); + service->ReadConfig(base::Bind(&DnsConfigServiceTest::OnConfigChanged, + base::Unretained(this))); base::TimeDelta kTimeout = TestTimeouts::action_max_timeout(); WaitForConfig(kTimeout); ASSERT_TRUE(last_config_.IsValid()) << "Did not receive DnsConfig in " << |