Index: net/base/host_resolver_impl_unittest.cc |
diff --git a/net/base/host_resolver_impl_unittest.cc b/net/base/host_resolver_impl_unittest.cc |
index 60d6ed116693621d4031e268851d4e008984de91..14774663448352ffe85debd00efb57107e0e114f 100644 |
--- a/net/base/host_resolver_impl_unittest.cc |
+++ b/net/base/host_resolver_impl_unittest.cc |
@@ -43,46 +43,6 @@ HostResolverImpl::ProcTaskParams DefaultParams( |
return HostResolverImpl::ProcTaskParams(resolver_proc, kMaxRetryAttempts); |
} |
-HostResolverImpl* CreateHostResolverImpl(HostResolverProc* resolver_proc) { |
- return new HostResolverImpl( |
- HostCache::CreateDefaultCache(), |
- DefaultLimits(), |
- DefaultParams(resolver_proc), |
- scoped_ptr<DnsConfigService>(NULL), |
- scoped_ptr<DnsClient>(NULL), |
- NULL); |
-} |
- |
-HostResolverImpl* CreateHostResolverImplWithDnsClient( |
- HostResolverProc* resolver_proc, |
- scoped_ptr<DnsConfigService> dns_config_service) { |
- // Initially with empty DnsConfig. Use |dns_config_service| to update it. |
- return new HostResolverImpl( |
- HostCache::CreateDefaultCache(), |
- DefaultLimits(), |
- DefaultParams(resolver_proc), |
- dns_config_service.Pass(), |
- CreateMockDnsClient(DnsConfig()), |
- NULL); |
-} |
- |
-// This HostResolverImpl will only allow 1 outstanding resolve at a time. |
-HostResolverImpl* CreateSerialHostResolverImpl( |
- HostResolverProc* resolver_proc) { |
- HostResolverImpl::ProcTaskParams params = DefaultParams(resolver_proc); |
- params.max_retry_attempts = 0u; |
- |
- PrioritizedDispatcher::Limits limits(NUM_PRIORITIES, 1); |
- |
- return new HostResolverImpl( |
- HostCache::CreateDefaultCache(), |
- limits, |
- params, |
- scoped_ptr<DnsConfigService>(NULL), |
- scoped_ptr<DnsClient>(NULL), |
- NULL); |
-} |
- |
// A HostResolverProc that pushes each host mapped into a list and allows |
// waiting for a specific number of requests. Unlike RuleBasedHostResolverProc |
// it never calls SystemHostResolverProc. By default resolves all hostnames to |
@@ -447,8 +407,7 @@ class HostResolverImplTest : public testing::Test { |
static const int kDefaultPort = 80; |
HostResolverImplTest() |
- : proc_(new MockHostResolverProc()), |
- resolver_(CreateHostResolverImpl(proc_)) { |
+ : proc_(new MockHostResolverProc()) { |
mmenke
2012/06/07 18:32:34
nit: Think this can all fit on one line now.
|
} |
protected: |
@@ -473,8 +432,29 @@ class HostResolverImplTest : public testing::Test { |
HostResolverImplTest* test; |
}; |
+ void CreateResolver() { |
+ resolver_.reset(new HostResolverImpl( |
+ HostCache::CreateDefaultCache(), |
+ DefaultLimits(), |
+ DefaultParams(proc_), |
+ scoped_ptr<DnsConfigService>(NULL), |
+ scoped_ptr<DnsClient>(NULL), |
+ NULL)); |
+ } |
+ |
+ // This HostResolverImpl will only allow 1 outstanding resolve at a time and |
+ // perform no retries. |
void CreateSerialResolver() { |
- resolver_.reset(CreateSerialHostResolverImpl(proc_)); |
+ HostResolverImpl::ProcTaskParams params = DefaultParams(proc_); |
+ params.max_retry_attempts = 0u; |
+ PrioritizedDispatcher::Limits limits(NUM_PRIORITIES, 1); |
+ resolver_.reset(new HostResolverImpl( |
+ HostCache::CreateDefaultCache(), |
+ limits, |
+ params, |
+ scoped_ptr<DnsConfigService>(NULL), |
+ scoped_ptr<DnsClient>(NULL), |
+ NULL)); |
} |
// The Request will not be made until a call to |Resolve()|, and the Job will |
@@ -510,7 +490,11 @@ class HostResolverImplTest : public testing::Test { |
return CreateRequest(hostname, kDefaultPort); |
} |
- void TearDown() OVERRIDE { |
+ virtual void SetUp() OVERRIDE { |
+ CreateResolver(); |
+ } |
+ |
+ virtual void TearDown() OVERRIDE { |
if (resolver_.get()) |
EXPECT_EQ(0u, resolver_->num_running_jobs_for_tests()); |
EXPECT_FALSE(proc_->HasBlockedRequests()); |
@@ -573,7 +557,7 @@ TEST_F(HostResolverImplTest, AbortedAsynchronousLookup) { |
proc_->SignalAll(); |
// To ensure there was no spurious callback, complete with a new resolver. |
- resolver_.reset(CreateHostResolverImpl(proc_)); |
+ CreateResolver(); |
Request* req1 = CreateRequest("just.testing", 80); |
EXPECT_EQ(ERR_IO_PENDING, req1->Resolve()); |
@@ -1250,19 +1234,36 @@ DnsConfig CreateValidDnsConfig() { |
return config; |
} |
+// Specialized fixture for tests of DnsTask. |
+class HostResolverImplDnsTest : public HostResolverImplTest { |
+ protected: |
+ virtual void SetUp() OVERRIDE { |
+ config_service_ = new MockDnsConfigService(); |
+ resolver_.reset(new HostResolverImpl( |
+ HostCache::CreateDefaultCache(), |
+ DefaultLimits(), |
+ DefaultParams(proc_), |
+ scoped_ptr<DnsConfigService>(config_service_), |
+ CreateMockDnsClient(DnsConfig()), |
+ NULL)); |
+ } |
+ |
+ void ChangeDnsConfig(const DnsConfig& config) { |
+ config_service_->ChangeConfig(config); |
+ config_service_->ChangeHosts(config.hosts); |
+ } |
+ |
+ // Owned by |resolver_|. |
+ MockDnsConfigService* config_service_; |
+}; |
+ |
// TODO(szym): Test AbortAllInProgressJobs due to DnsConfig change. |
// TODO(cbentzel): Test a mix of requests with different HostResolverFlags. |
// Test successful and fallback resolutions in HostResolverImpl::DnsTask. |
-TEST_F(HostResolverImplTest, DnsTask) { |
- // Initially, there's DnsConfigService, but no DnsConfig. |
- // Note, |config_service| will be owned by |resolver_|. |
- MockDnsConfigService* config_service = new MockDnsConfigService(); |
- resolver_.reset( |
- CreateHostResolverImplWithDnsClient( |
- proc_, |
- scoped_ptr<DnsConfigService>(config_service))); |
+TEST_F(HostResolverImplDnsTest, DnsTask) { |
+ resolver_->SetDefaultAddressFamily(ADDRESS_FAMILY_IPV4); |
proc_->AddRuleForAllFamilies("er_succeed", "192.168.1.101"); |
proc_->AddRuleForAllFamilies("nx_succeed", "192.168.1.102"); |
@@ -1274,9 +1275,7 @@ TEST_F(HostResolverImplTest, DnsTask) { |
EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[0]->WaitForResult()); |
- DnsConfig config = CreateValidDnsConfig(); |
- config_service->ChangeHosts(config.hosts); |
- config_service->ChangeConfig(config); |
+ ChangeDnsConfig(CreateValidDnsConfig()); |
EXPECT_EQ(ERR_IO_PENDING, CreateRequest("ok_fail", 80)->Resolve()); |
EXPECT_EQ(ERR_IO_PENDING, CreateRequest("er_fail", 80)->Resolve()); |
@@ -1301,18 +1300,19 @@ TEST_F(HostResolverImplTest, DnsTask) { |
EXPECT_TRUE(requests_[5]->HasOneAddress("192.168.1.102", 80)); |
} |
-TEST_F(HostResolverImplTest, ServeFromHosts) { |
- // Note, |config_service| will be owned by |resolver_|. |
- MockDnsConfigService* config_service = new MockDnsConfigService(); |
- resolver_.reset( |
- CreateHostResolverImplWithDnsClient( |
- proc_, |
- scoped_ptr<DnsConfigService>(config_service))); |
+TEST_F(HostResolverImplDnsTest, DnsTaskDual) { |
+ ChangeDnsConfig(CreateValidDnsConfig()); |
+ EXPECT_EQ(ERR_IO_PENDING, CreateRequest("ok_fail", 80)->Resolve()); |
mmenke
2012/06/07 18:32:34
I think "ok_fail" is a somewhat strange name for a
|
+ |
+ EXPECT_EQ(OK, requests_[0]->WaitForResult()); |
+ EXPECT_TRUE(requests_[0]->HasAddress("127.0.0.1", 80)); |
+ EXPECT_TRUE(requests_[0]->HasAddress("::1", 80)); |
+ EXPECT_EQ(2u, requests_[0]->NumberOfAddresses()); |
+} |
mmenke
2012/06/07 18:32:34
I'd like to see test where the MockDnsTransaction
|
+TEST_F(HostResolverImplDnsTest, ServeFromHosts) { |
// Initially, use empty HOSTS file. |
- DnsConfig config = CreateValidDnsConfig(); |
- config_service->ChangeHosts(DnsHosts()); |
- config_service->ChangeConfig(config); |
+ ChangeDnsConfig(CreateValidDnsConfig()); |
proc_->AddRuleForAllFamilies("", "0.0.0.0"); // Default to failures. |
proc_->SignalMultiple(1u); // For the first request which misses. |
@@ -1332,8 +1332,7 @@ TEST_F(HostResolverImplTest, ServeFromHosts) { |
hosts[DnsHostsKey("er_both", ADDRESS_FAMILY_IPV6)] = local_ipv6; |
// Update HOSTS file. |
- config_service->ChangeConfig(config); |
- config_service->ChangeHosts(hosts); |
+ config_service_->ChangeHosts(hosts); |
Request* req1 = CreateRequest("er_ipv4", 80); |
EXPECT_EQ(OK, req1->Resolve()); |