summaryrefslogtreecommitdiffstats
path: root/net/base/host_resolver_impl_unittest.cc
diff options
context:
space:
mode:
authoragayev@chromium.org <agayev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-21 12:54:37 +0000
committeragayev@chromium.org <agayev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-21 12:54:37 +0000
commitd987cca5eac5c840027698fa49a4712d84057e68 (patch)
treed92552852fdb7e6c387c9d2f46357beb753ee6d5 /net/base/host_resolver_impl_unittest.cc
parent357b5202da8b573ef3239e722bc18d93fc90fbd9 (diff)
downloadchromium_src-d987cca5eac5c840027698fa49a4712d84057e68.zip
chromium_src-d987cca5eac5c840027698fa49a4712d84057e68.tar.gz
chromium_src-d987cca5eac5c840027698fa49a4712d84057e68.tar.bz2
Implemented AsyncHostResolver -- asynchronous HostResolver!
BUG=60149 TEST=net_unittests --gtest_filter="AsyncHostResolverTest*" Review URL: http://codereview.chromium.org/7472025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@93380 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/host_resolver_impl_unittest.cc')
-rw-r--r--net/base/host_resolver_impl_unittest.cc94
1 files changed, 14 insertions, 80 deletions
diff --git a/net/base/host_resolver_impl_unittest.cc b/net/base/host_resolver_impl_unittest.cc
index 52b7f89..a833599 100644
--- a/net/base/host_resolver_impl_unittest.cc
+++ b/net/base/host_resolver_impl_unittest.cc
@@ -16,6 +16,7 @@
#include "base/time.h"
#include "net/base/address_list.h"
#include "net/base/completion_callback.h"
+#include "net/base/dns_test_util.h"
#include "net/base/mock_host_resolver.h"
#include "net/base/net_errors.h"
#include "net/base/net_log_unittest.h"
@@ -979,73 +980,6 @@ TEST_F(HostResolverImplTest, BypassCache) {
MessageLoop::current()->Run();
}
-bool operator==(const HostResolver::RequestInfo& a,
- const HostResolver::RequestInfo& b) {
- return a.hostname() == b.hostname() &&
- a.port() == b.port() &&
- a.allow_cached_response() == b.allow_cached_response() &&
- a.priority() == b.priority() &&
- a.is_speculative() == b.is_speculative() &&
- a.referrer() == b.referrer();
-}
-
-// Observer that just makes note of how it was called. The test code can then
-// inspect to make sure it was called with the right parameters.
-class CapturingObserver : public HostResolver::Observer {
- public:
- // DnsResolutionObserver methods:
- virtual void OnStartResolution(int id,
- const HostResolver::RequestInfo& info) {
- start_log.push_back(StartOrCancelEntry(id, info));
- }
-
- virtual void OnFinishResolutionWithStatus(
- int id,
- bool was_resolved,
- const HostResolver::RequestInfo& info) {
- finish_log.push_back(FinishEntry(id, was_resolved, info));
- }
-
- virtual void OnCancelResolution(int id,
- const HostResolver::RequestInfo& info) {
- cancel_log.push_back(StartOrCancelEntry(id, info));
- }
-
- // Tuple (id, info).
- struct StartOrCancelEntry {
- StartOrCancelEntry(int id, const HostResolver::RequestInfo& info)
- : id(id), info(info) {}
-
- bool operator==(const StartOrCancelEntry& other) const {
- return id == other.id && info == other.info;
- }
-
- int id;
- HostResolver::RequestInfo info;
- };
-
- // Tuple (id, was_resolved, info).
- struct FinishEntry {
- FinishEntry(int id, bool was_resolved,
- const HostResolver::RequestInfo& info)
- : id(id), was_resolved(was_resolved), info(info) {}
-
- bool operator==(const FinishEntry& other) const {
- return id == other.id &&
- was_resolved == other.was_resolved &&
- info == other.info;
- }
-
- int id;
- bool was_resolved;
- HostResolver::RequestInfo info;
- };
-
- std::vector<StartOrCancelEntry> start_log;
- std::vector<FinishEntry> finish_log;
- std::vector<StartOrCancelEntry> cancel_log;
-};
-
// Test that registering, unregistering, and notifying of observers works.
// Does not test the cancellation notification since all resolves are
// synchronous.
@@ -1053,7 +987,7 @@ TEST_F(HostResolverImplTest, Observers) {
scoped_ptr<HostResolver> host_resolver(
CreateHostResolverImpl(NULL));
- CapturingObserver observer;
+ TestHostResolverObserver observer;
host_resolver->AddObserver(&observer);
@@ -1078,9 +1012,9 @@ TEST_F(HostResolverImplTest, Observers) {
EXPECT_EQ(1U, observer.finish_log.size());
EXPECT_EQ(0U, observer.cancel_log.size());
EXPECT_TRUE(observer.start_log[0] ==
- CapturingObserver::StartOrCancelEntry(0, info1));
+ TestHostResolverObserver::StartOrCancelEntry(0, info1));
EXPECT_TRUE(observer.finish_log[0] ==
- CapturingObserver::FinishEntry(0, true, info1));
+ TestHostResolverObserver::FinishEntry(0, true, info1));
// Resolve "host1" again -- this time it will be served from cache, but it
// should still notify of completion.
@@ -1092,9 +1026,9 @@ TEST_F(HostResolverImplTest, Observers) {
EXPECT_EQ(2U, observer.finish_log.size());
EXPECT_EQ(0U, observer.cancel_log.size());
EXPECT_TRUE(observer.start_log[1] ==
- CapturingObserver::StartOrCancelEntry(1, info1));
+ TestHostResolverObserver::StartOrCancelEntry(1, info1));
EXPECT_TRUE(observer.finish_log[1] ==
- CapturingObserver::FinishEntry(1, true, info1));
+ TestHostResolverObserver::FinishEntry(1, true, info1));
// Resolve "host2", setting referrer to "http://foobar.com"
HostResolver::RequestInfo info2(HostPortPair("host2", 70));
@@ -1106,9 +1040,9 @@ TEST_F(HostResolverImplTest, Observers) {
EXPECT_EQ(3U, observer.finish_log.size());
EXPECT_EQ(0U, observer.cancel_log.size());
EXPECT_TRUE(observer.start_log[2] ==
- CapturingObserver::StartOrCancelEntry(2, info2));
+ TestHostResolverObserver::StartOrCancelEntry(2, info2));
EXPECT_TRUE(observer.finish_log[2] ==
- CapturingObserver::FinishEntry(2, true, info2));
+ TestHostResolverObserver::FinishEntry(2, true, info2));
// Unregister the observer.
host_resolver->RemoveObserver(&observer);
@@ -1128,7 +1062,7 @@ TEST_F(HostResolverImplTest, Observers) {
// (1) Delete the HostResolver while job is outstanding.
// (2) Call HostResolver::CancelRequest() while a request is outstanding.
TEST_F(HostResolverImplTest, CancellationObserver) {
- CapturingObserver observer;
+ TestHostResolverObserver observer;
{
// Create a host resolver and attach an observer.
scoped_ptr<HostResolver> host_resolver(
@@ -1155,7 +1089,7 @@ TEST_F(HostResolverImplTest, CancellationObserver) {
EXPECT_EQ(0U, observer.cancel_log.size());
EXPECT_TRUE(observer.start_log[0] ==
- CapturingObserver::StartOrCancelEntry(0, info1));
+ TestHostResolverObserver::StartOrCancelEntry(0, info1));
// Cancel the request.
host_resolver->CancelRequest(req);
@@ -1165,7 +1099,7 @@ TEST_F(HostResolverImplTest, CancellationObserver) {
EXPECT_EQ(1U, observer.cancel_log.size());
EXPECT_TRUE(observer.cancel_log[0] ==
- CapturingObserver::StartOrCancelEntry(0, info1));
+ TestHostResolverObserver::StartOrCancelEntry(0, info1));
// Start an async request for (host2:60)
HostResolver::RequestInfo info2(HostPortPair("host2", 60));
@@ -1179,7 +1113,7 @@ TEST_F(HostResolverImplTest, CancellationObserver) {
EXPECT_EQ(1U, observer.cancel_log.size());
EXPECT_TRUE(observer.start_log[1] ==
- CapturingObserver::StartOrCancelEntry(1, info2));
+ TestHostResolverObserver::StartOrCancelEntry(1, info2));
// Upon exiting this scope, HostResolver is destroyed, so all requests are
// implicitly cancelled.
@@ -1194,7 +1128,7 @@ TEST_F(HostResolverImplTest, CancellationObserver) {
HostResolver::RequestInfo info(HostPortPair("host2", 60));
EXPECT_TRUE(observer.cancel_log[1] ==
- CapturingObserver::StartOrCancelEntry(1, info));
+ TestHostResolverObserver::StartOrCancelEntry(1, info));
}
// Test that IP address changes flush the cache.
@@ -1364,7 +1298,7 @@ TEST_F(HostResolverImplTest, HigherPriorityRequestsStartedFirst) {
new HostResolverImpl(resolver_proc, CreateDefaultCache(), kMaxJobs,
kRetryAttempts, NULL));
- CapturingObserver observer;
+ TestHostResolverObserver observer;
host_resolver->AddObserver(&observer);
// Note that at this point the CapturingHostResolverProc is blocked, so any