Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Side by Side Diff: net/base/host_resolver_impl_unittest.cc

Issue 10442098: [net/dns] Resolve AF_UNSPEC on dual-stacked systems. Sort addresses according to RFC3484. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Handle ifa_netmnask == NULL and other errors after getifaddrs. Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/base/host_resolver_impl.h" 5 #include "net/base/host_resolver_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 1218 matching lines...) Expand 10 before | Expand all | Expand 10 after
1229 DnsConfig config; 1229 DnsConfig config;
1230 config.nameservers.push_back(IPEndPoint(dns_ip, dns_protocol::kDefaultPort)); 1230 config.nameservers.push_back(IPEndPoint(dns_ip, dns_protocol::kDefaultPort));
1231 EXPECT_TRUE(config.IsValid()); 1231 EXPECT_TRUE(config.IsValid());
1232 return config; 1232 return config;
1233 } 1233 }
1234 1234
1235 // Specialized fixture for tests of DnsTask. 1235 // Specialized fixture for tests of DnsTask.
1236 class HostResolverImplDnsTest : public HostResolverImplTest { 1236 class HostResolverImplDnsTest : public HostResolverImplTest {
1237 protected: 1237 protected:
1238 virtual void SetUp() OVERRIDE { 1238 virtual void SetUp() OVERRIDE {
1239 AddDnsRule("er", dns_protocol::kTypeA, MockDnsClientRule::FAIL_SYNC);
1240 AddDnsRule("er", dns_protocol::kTypeAAAA, MockDnsClientRule::FAIL_SYNC);
1241 AddDnsRule("nx", dns_protocol::kTypeA, MockDnsClientRule::FAIL_ASYNC);
1242 AddDnsRule("nx", dns_protocol::kTypeAAAA, MockDnsClientRule::FAIL_ASYNC);
1243 AddDnsRule("ok", dns_protocol::kTypeA, MockDnsClientRule::OK);
1244 AddDnsRule("ok", dns_protocol::kTypeAAAA, MockDnsClientRule::OK);
1245 AddDnsRule("4ok", dns_protocol::kTypeA, MockDnsClientRule::OK);
1246 AddDnsRule("4ok", dns_protocol::kTypeAAAA, MockDnsClientRule::EMPTY);
1247 AddDnsRule("6ok", dns_protocol::kTypeA, MockDnsClientRule::EMPTY);
1248 AddDnsRule("6ok", dns_protocol::kTypeAAAA, MockDnsClientRule::OK);
1249 CreateResolver();
1250 }
1251
1252 void CreateResolver() {
1239 config_service_ = new MockDnsConfigService(); 1253 config_service_ = new MockDnsConfigService();
1240 resolver_.reset(new HostResolverImpl( 1254 resolver_.reset(new HostResolverImpl(
1241 HostCache::CreateDefaultCache(), 1255 HostCache::CreateDefaultCache(),
1242 DefaultLimits(), 1256 DefaultLimits(),
1243 DefaultParams(proc_), 1257 DefaultParams(proc_),
1244 scoped_ptr<DnsConfigService>(config_service_), 1258 scoped_ptr<DnsConfigService>(config_service_),
1245 CreateMockDnsClient(DnsConfig()), 1259 CreateMockDnsClient(DnsConfig(), dns_rules_),
1246 NULL)); 1260 NULL));
1247 } 1261 }
1248 1262
1263 void AddDnsRule(const std::string& prefix,
1264 uint16 qtype,
1265 MockDnsClientRule::Result result) {
1266 MockDnsClientRule rule = { prefix, qtype, result };
1267 dns_rules_.push_back(rule);
1268 }
1269
1249 void ChangeDnsConfig(const DnsConfig& config) { 1270 void ChangeDnsConfig(const DnsConfig& config) {
1250 config_service_->ChangeConfig(config); 1271 config_service_->ChangeConfig(config);
1251 config_service_->ChangeHosts(config.hosts); 1272 config_service_->ChangeHosts(config.hosts);
1252 } 1273 }
1253 1274
1275 MockDnsClientRuleList dns_rules_;
1254 // Owned by |resolver_|. 1276 // Owned by |resolver_|.
1255 MockDnsConfigService* config_service_; 1277 MockDnsConfigService* config_service_;
1256 }; 1278 };
1257 1279
1258 // TODO(szym): Test AbortAllInProgressJobs due to DnsConfig change. 1280 // TODO(szym): Test AbortAllInProgressJobs due to DnsConfig change.
1259 1281
1260 // TODO(cbentzel): Test a mix of requests with different HostResolverFlags. 1282 // TODO(cbentzel): Test a mix of requests with different HostResolverFlags.
1261 1283
1262 // Test successful and fallback resolutions in HostResolverImpl::DnsTask. 1284 // Test successful and fallback resolutions in HostResolverImpl::DnsTask.
1263 TEST_F(HostResolverImplDnsTest, DnsTask) { 1285 TEST_F(HostResolverImplDnsTest, DnsTask) {
(...skipping 27 matching lines...) Expand all
1291 EXPECT_TRUE(requests_[1]->HasOneAddress("127.0.0.1", 80)); 1313 EXPECT_TRUE(requests_[1]->HasOneAddress("127.0.0.1", 80));
1292 // Fallback to ProcTask. 1314 // Fallback to ProcTask.
1293 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[2]->result()); 1315 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[2]->result());
1294 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[3]->result()); 1316 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[3]->result());
1295 EXPECT_EQ(OK, requests_[4]->result()); 1317 EXPECT_EQ(OK, requests_[4]->result());
1296 EXPECT_TRUE(requests_[4]->HasOneAddress("192.168.1.101", 80)); 1318 EXPECT_TRUE(requests_[4]->HasOneAddress("192.168.1.101", 80));
1297 EXPECT_EQ(OK, requests_[5]->result()); 1319 EXPECT_EQ(OK, requests_[5]->result());
1298 EXPECT_TRUE(requests_[5]->HasOneAddress("192.168.1.102", 80)); 1320 EXPECT_TRUE(requests_[5]->HasOneAddress("192.168.1.102", 80));
1299 } 1321 }
1300 1322
1323 TEST_F(HostResolverImplDnsTest, DnsTaskUnspec) {
1324 ChangeDnsConfig(CreateValidDnsConfig());
1325 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("ok", 80)->Resolve());
1326 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("4ok", 80)->Resolve());
1327 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("6ok", 80)->Resolve());
1328
1329 for (size_t i = 0; i < requests_.size(); ++i)
1330 EXPECT_EQ(OK, requests_[i]->WaitForResult()) << i;
1331
1332 EXPECT_EQ(2u, requests_[0]->NumberOfAddresses());
1333 EXPECT_TRUE(requests_[0]->HasAddress("127.0.0.1", 80));
1334 EXPECT_TRUE(requests_[0]->HasAddress("::1", 80));
1335 EXPECT_EQ(1u, requests_[1]->NumberOfAddresses());
1336 EXPECT_TRUE(requests_[1]->HasAddress("127.0.0.1", 80));
1337 EXPECT_EQ(1u, requests_[2]->NumberOfAddresses());
1338 EXPECT_TRUE(requests_[2]->HasAddress("::1", 80));
1339 }
1340
1301 TEST_F(HostResolverImplDnsTest, ServeFromHosts) { 1341 TEST_F(HostResolverImplDnsTest, ServeFromHosts) {
1302 // Initially, use empty HOSTS file. 1342 // Initially, use empty HOSTS file.
1303 ChangeDnsConfig(CreateValidDnsConfig()); 1343 ChangeDnsConfig(CreateValidDnsConfig());
1304 1344
1305 proc_->AddRuleForAllFamilies("", "0.0.0.0"); // Default to failures. 1345 proc_->AddRuleForAllFamilies("", "0.0.0.0"); // Default to failures.
1306 proc_->SignalMultiple(1u); // For the first request which misses. 1346 proc_->SignalMultiple(1u); // For the first request which misses.
1307 1347
1308 Request* req0 = CreateRequest("er_ipv4", 80); 1348 Request* req0 = CreateRequest("er_ipv4", 80);
1309 EXPECT_EQ(ERR_IO_PENDING, req0->Resolve()); 1349 EXPECT_EQ(ERR_IO_PENDING, req0->Resolve());
1310 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, req0->WaitForResult()); 1350 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, req0->WaitForResult());
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1364 proc_->SignalMultiple(requests_.size()); 1404 proc_->SignalMultiple(requests_.size());
1365 1405
1366 for (size_t i = 0; i < 2; ++i) 1406 for (size_t i = 0; i < 2; ++i)
1367 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[i]->WaitForResult()) << i; 1407 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[i]->WaitForResult()) << i;
1368 1408
1369 for (size_t i = 2; i < requests_.size(); ++i) 1409 for (size_t i = 2; i < requests_.size(); ++i)
1370 EXPECT_EQ(OK, requests_[i]->WaitForResult()) << i; 1410 EXPECT_EQ(OK, requests_[i]->WaitForResult()) << i;
1371 } 1411 }
1372 1412
1373 } // namespace net 1413 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698