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

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

Issue 10855163: Revert 151586 - [net/dns] Resolve AF_UNSPEC on dual-stacked systems. Sort addresses according to RF… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: 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
« no previous file with comments | « net/base/host_resolver_impl.cc ('k') | net/base/net_error_list.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 AddDnsRule("4nx", dns_protocol::kTypeA, MockDnsClientRule::OK);
1250 AddDnsRule("4nx", dns_protocol::kTypeAAAA, MockDnsClientRule::FAIL_ASYNC);
1251 CreateResolver();
1252 }
1253
1254 void CreateResolver() {
1255 config_service_ = new MockDnsConfigService(); 1239 config_service_ = new MockDnsConfigService();
1256 resolver_.reset(new HostResolverImpl( 1240 resolver_.reset(new HostResolverImpl(
1257 HostCache::CreateDefaultCache(), 1241 HostCache::CreateDefaultCache(),
1258 DefaultLimits(), 1242 DefaultLimits(),
1259 DefaultParams(proc_), 1243 DefaultParams(proc_),
1260 scoped_ptr<DnsConfigService>(config_service_), 1244 scoped_ptr<DnsConfigService>(config_service_),
1261 CreateMockDnsClient(DnsConfig(), dns_rules_), 1245 CreateMockDnsClient(DnsConfig()),
1262 NULL)); 1246 NULL));
1263 } 1247 }
1264 1248
1265 // Adds a rule to |dns_rules_|. Must be followed by |CreateResolver| to apply.
1266 void AddDnsRule(const std::string& prefix,
1267 uint16 qtype,
1268 MockDnsClientRule::Result result) {
1269 MockDnsClientRule rule = { prefix, qtype, result };
1270 dns_rules_.push_back(rule);
1271 }
1272
1273 void ChangeDnsConfig(const DnsConfig& config) { 1249 void ChangeDnsConfig(const DnsConfig& config) {
1274 config_service_->ChangeConfig(config); 1250 config_service_->ChangeConfig(config);
1275 config_service_->ChangeHosts(config.hosts); 1251 config_service_->ChangeHosts(config.hosts);
1276 } 1252 }
1277 1253
1278 MockDnsClientRuleList dns_rules_;
1279 // Owned by |resolver_|. 1254 // Owned by |resolver_|.
1280 MockDnsConfigService* config_service_; 1255 MockDnsConfigService* config_service_;
1281 }; 1256 };
1282 1257
1283 // TODO(szym): Test AbortAllInProgressJobs due to DnsConfig change. 1258 // TODO(szym): Test AbortAllInProgressJobs due to DnsConfig change.
1284 1259
1285 // TODO(cbentzel): Test a mix of requests with different HostResolverFlags. 1260 // TODO(cbentzel): Test a mix of requests with different HostResolverFlags.
1286 1261
1287 // Test successful and fallback resolutions in HostResolverImpl::DnsTask. 1262 // Test successful and fallback resolutions in HostResolverImpl::DnsTask.
1288 TEST_F(HostResolverImplDnsTest, DnsTask) { 1263 TEST_F(HostResolverImplDnsTest, DnsTask) {
(...skipping 27 matching lines...) Expand all
1316 EXPECT_TRUE(requests_[1]->HasOneAddress("127.0.0.1", 80)); 1291 EXPECT_TRUE(requests_[1]->HasOneAddress("127.0.0.1", 80));
1317 // Fallback to ProcTask. 1292 // Fallback to ProcTask.
1318 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[2]->result()); 1293 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[2]->result());
1319 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[3]->result()); 1294 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[3]->result());
1320 EXPECT_EQ(OK, requests_[4]->result()); 1295 EXPECT_EQ(OK, requests_[4]->result());
1321 EXPECT_TRUE(requests_[4]->HasOneAddress("192.168.1.101", 80)); 1296 EXPECT_TRUE(requests_[4]->HasOneAddress("192.168.1.101", 80));
1322 EXPECT_EQ(OK, requests_[5]->result()); 1297 EXPECT_EQ(OK, requests_[5]->result());
1323 EXPECT_TRUE(requests_[5]->HasOneAddress("192.168.1.102", 80)); 1298 EXPECT_TRUE(requests_[5]->HasOneAddress("192.168.1.102", 80));
1324 } 1299 }
1325 1300
1326 TEST_F(HostResolverImplDnsTest, DnsTaskUnspec) {
1327 ChangeDnsConfig(CreateValidDnsConfig());
1328
1329 proc_->AddRuleForAllFamilies("4nx", "192.168.1.101");
1330 // All other hostnames will fail in proc_.
1331
1332 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("ok", 80)->Resolve());
1333 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("4ok", 80)->Resolve());
1334 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("6ok", 80)->Resolve());
1335 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("4nx", 80)->Resolve());
1336
1337 proc_->SignalMultiple(requests_.size());
1338
1339 for (size_t i = 0; i < requests_.size(); ++i)
1340 EXPECT_EQ(OK, requests_[i]->WaitForResult()) << i;
1341
1342 EXPECT_EQ(2u, requests_[0]->NumberOfAddresses());
1343 EXPECT_TRUE(requests_[0]->HasAddress("127.0.0.1", 80));
1344 EXPECT_TRUE(requests_[0]->HasAddress("::1", 80));
1345 EXPECT_EQ(1u, requests_[1]->NumberOfAddresses());
1346 EXPECT_TRUE(requests_[1]->HasAddress("127.0.0.1", 80));
1347 EXPECT_EQ(1u, requests_[2]->NumberOfAddresses());
1348 EXPECT_TRUE(requests_[2]->HasAddress("::1", 80));
1349 EXPECT_EQ(1u, requests_[3]->NumberOfAddresses());
1350 EXPECT_TRUE(requests_[3]->HasAddress("192.168.1.101", 80));
1351 }
1352
1353 TEST_F(HostResolverImplDnsTest, ServeFromHosts) { 1301 TEST_F(HostResolverImplDnsTest, ServeFromHosts) {
1354 // Initially, use empty HOSTS file. 1302 // Initially, use empty HOSTS file.
1355 ChangeDnsConfig(CreateValidDnsConfig()); 1303 ChangeDnsConfig(CreateValidDnsConfig());
1356 1304
1357 proc_->AddRuleForAllFamilies("", ""); // Default to failures. 1305 proc_->AddRuleForAllFamilies("", "0.0.0.0"); // Default to failures.
1358 proc_->SignalMultiple(1u); // For the first request which misses. 1306 proc_->SignalMultiple(1u); // For the first request which misses.
1359 1307
1360 Request* req0 = CreateRequest("er_ipv4", 80); 1308 Request* req0 = CreateRequest("er_ipv4", 80);
1361 EXPECT_EQ(ERR_IO_PENDING, req0->Resolve()); 1309 EXPECT_EQ(ERR_IO_PENDING, req0->Resolve());
1362 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, req0->WaitForResult()); 1310 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, req0->WaitForResult());
1363 1311
1364 IPAddressNumber local_ipv4, local_ipv6; 1312 IPAddressNumber local_ipv4, local_ipv6;
1365 ASSERT_TRUE(ParseIPLiteralToNumber("127.0.0.1", &local_ipv4)); 1313 ASSERT_TRUE(ParseIPLiteralToNumber("127.0.0.1", &local_ipv4));
1366 ASSERT_TRUE(ParseIPLiteralToNumber("::1", &local_ipv6)); 1314 ASSERT_TRUE(ParseIPLiteralToNumber("::1", &local_ipv6));
1367 1315
(...skipping 30 matching lines...) Expand all
1398 1346
1399 // Request with upper case. 1347 // Request with upper case.
1400 Request* req6 = CreateRequest("er_IPV4", 80); 1348 Request* req6 = CreateRequest("er_IPV4", 80);
1401 EXPECT_EQ(OK, req6->Resolve()); 1349 EXPECT_EQ(OK, req6->Resolve());
1402 EXPECT_TRUE(req6->HasOneAddress("127.0.0.1", 80)); 1350 EXPECT_TRUE(req6->HasOneAddress("127.0.0.1", 80));
1403 } 1351 }
1404 1352
1405 TEST_F(HostResolverImplDnsTest, BypassDnsTask) { 1353 TEST_F(HostResolverImplDnsTest, BypassDnsTask) {
1406 ChangeDnsConfig(CreateValidDnsConfig()); 1354 ChangeDnsConfig(CreateValidDnsConfig());
1407 1355
1408 proc_->AddRuleForAllFamilies("", ""); // Default to failures. 1356 proc_->AddRuleForAllFamilies("", "0.0.0.0"); // Default to failures.
1409 1357
1410 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("ok.local", 80)->Resolve()); 1358 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("ok.local", 80)->Resolve());
1411 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("ok.local.", 80)->Resolve()); 1359 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("ok.local.", 80)->Resolve());
1412 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("oklocal", 80)->Resolve()); 1360 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("oklocal", 80)->Resolve());
1413 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("oklocal.", 80)->Resolve()); 1361 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("oklocal.", 80)->Resolve());
1414 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("ok", 80)->Resolve()); 1362 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("ok", 80)->Resolve());
1415 1363
1416 proc_->SignalMultiple(requests_.size()); 1364 proc_->SignalMultiple(requests_.size());
1417 1365
1418 for (size_t i = 0; i < 2; ++i) 1366 for (size_t i = 0; i < 2; ++i)
1419 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[i]->WaitForResult()) << i; 1367 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, requests_[i]->WaitForResult()) << i;
1420 1368
1421 for (size_t i = 2; i < requests_.size(); ++i) 1369 for (size_t i = 2; i < requests_.size(); ++i)
1422 EXPECT_EQ(OK, requests_[i]->WaitForResult()) << i; 1370 EXPECT_EQ(OK, requests_[i]->WaitForResult()) << i;
1423 } 1371 }
1424 1372
1425 } // namespace net 1373 } // namespace net
OLDNEW
« no previous file with comments | « net/base/host_resolver_impl.cc ('k') | net/base/net_error_list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698