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

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

Issue 1629005: Revert 43826 - HostResolver now adds AI_CANONNAME to the hint flags if a requ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 8 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_cache.h ('k') | net/base/host_resolver.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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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_cache.h" 5 #include "net/base/host_cache.h"
6 6
7 #include "base/format_macros.h" 7 #include "base/format_macros.h"
8 #include "base/stl_util-inl.h" 8 #include "base/stl_util-inl.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 namespace net { 13 namespace net {
14 14
15 namespace { 15 namespace {
16 const int kMaxCacheEntries = 10; 16 const int kMaxCacheEntries = 10;
17 17
18 const base::TimeDelta kSuccessEntryTTL = base::TimeDelta::FromSeconds(10); 18 const base::TimeDelta kSuccessEntryTTL = base::TimeDelta::FromSeconds(10);
19 const base::TimeDelta kFailureEntryTTL = base::TimeDelta::FromSeconds(0); 19 const base::TimeDelta kFailureEntryTTL = base::TimeDelta::FromSeconds(0);
20 20
21 // Builds a key for |hostname|, defaulting the address family to unspecified. 21 // Builds a key for |hostname|, defaulting the address family to unspecified.
22 HostCache::Key Key(const std::string& hostname) { 22 HostCache::Key Key(const std::string& hostname) {
23 return HostCache::Key(hostname, ADDRESS_FAMILY_UNSPECIFIED, 0); 23 return HostCache::Key(hostname, ADDRESS_FAMILY_UNSPECIFIED);
24 } 24 }
25 25
26 } // namespace 26 } // namespace
27 27
28 TEST(HostCacheTest, Basic) { 28 TEST(HostCacheTest, Basic) {
29 HostCache cache(kMaxCacheEntries, kSuccessEntryTTL, kFailureEntryTTL); 29 HostCache cache(kMaxCacheEntries, kSuccessEntryTTL, kFailureEntryTTL);
30 30
31 // Start at t=0. 31 // Start at t=0.
32 base::TimeTicks now; 32 base::TimeTicks now;
33 33
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 } 269 }
270 270
271 // Tests that the same hostname can be duplicated in the cache, so long as 271 // Tests that the same hostname can be duplicated in the cache, so long as
272 // the address family differs. 272 // the address family differs.
273 TEST(HostCacheTest, AddressFamilyIsPartOfKey) { 273 TEST(HostCacheTest, AddressFamilyIsPartOfKey) {
274 HostCache cache(kMaxCacheEntries, kSuccessEntryTTL, kFailureEntryTTL); 274 HostCache cache(kMaxCacheEntries, kSuccessEntryTTL, kFailureEntryTTL);
275 275
276 // t=0. 276 // t=0.
277 base::TimeTicks now; 277 base::TimeTicks now;
278 278
279 HostCache::Key key1("foobar.com", ADDRESS_FAMILY_UNSPECIFIED, 0); 279 HostCache::Key key1("foobar.com", ADDRESS_FAMILY_UNSPECIFIED);
280 HostCache::Key key2("foobar.com", ADDRESS_FAMILY_IPV4, 0); 280 HostCache::Key key2("foobar.com", ADDRESS_FAMILY_IPV4);
281 281
282 const HostCache::Entry* entry1 = NULL; // Entry for key1 282 const HostCache::Entry* entry1 = NULL; // Entry for key1
283 const HostCache::Entry* entry2 = NULL; // Entry for key2 283 const HostCache::Entry* entry2 = NULL; // Entry for key2
284 284
285 EXPECT_EQ(0U, cache.size()); 285 EXPECT_EQ(0U, cache.size());
286 286
287 // Add an entry for ("foobar.com", UNSPECIFIED) at t=0. 287 // Add an entry for ("foobar.com", UNSPECIFIED) at t=0.
288 EXPECT_TRUE(cache.Lookup(key1, base::TimeTicks()) == NULL); 288 EXPECT_TRUE(cache.Lookup(key1, base::TimeTicks()) == NULL);
289 cache.Set(key1, OK, AddressList(), now); 289 cache.Set(key1, OK, AddressList(), now);
290 entry1 = cache.Lookup(key1, base::TimeTicks()); 290 entry1 = cache.Lookup(key1, base::TimeTicks());
291 EXPECT_FALSE(entry1 == NULL); 291 EXPECT_FALSE(entry1 == NULL);
292 EXPECT_EQ(1U, cache.size()); 292 EXPECT_EQ(1U, cache.size());
293 293
294 // Add an entry for ("foobar.com", IPV4_ONLY) at t=0. 294 // Add an entry for ("foobar.com", IPV4_ONLY) at t=0.
295 EXPECT_TRUE(cache.Lookup(key2, base::TimeTicks()) == NULL); 295 EXPECT_TRUE(cache.Lookup(key2, base::TimeTicks()) == NULL);
296 cache.Set(key2, OK, AddressList(), now); 296 cache.Set(key2, OK, AddressList(), now);
297 entry2 = cache.Lookup(key2, base::TimeTicks()); 297 entry2 = cache.Lookup(key2, base::TimeTicks());
298 EXPECT_FALSE(entry2 == NULL); 298 EXPECT_FALSE(entry2 == NULL);
299 EXPECT_EQ(2U, cache.size()); 299 EXPECT_EQ(2U, cache.size());
300 300
301 // Even though the hostnames were the same, we should have two unique 301 // Even though the hostnames were the same, we should have two unique
302 // entries (because the address families differ). 302 // entries (because the address families differ).
303 EXPECT_NE(entry1, entry2); 303 EXPECT_NE(entry1, entry2);
304 } 304 }
305 305
306 // Tests that the same hostname can be duplicated in the cache, so long as
307 // the HostResolverFlags differ.
308 TEST(HostCacheTest, HostResolverFlagsArePartOfKey) {
309 HostCache cache(kMaxCacheEntries, kSuccessEntryTTL, kFailureEntryTTL);
310
311 // t=0.
312 base::TimeTicks now;
313
314 HostCache::Key key1("foobar.com", ADDRESS_FAMILY_IPV4, 0);
315 HostCache::Key key2("foobar.com", ADDRESS_FAMILY_IPV4,
316 HOST_RESOLVER_FLAGS_CANONNAME);
317
318 const HostCache::Entry* entry1 = NULL; // Entry for key1
319 const HostCache::Entry* entry2 = NULL; // Entry for key2
320
321 EXPECT_EQ(0U, cache.size());
322
323 // Add an entry for ("foobar.com", IPV4, NONE) at t=0.
324 EXPECT_TRUE(cache.Lookup(key1, base::TimeTicks()) == NULL);
325 cache.Set(key1, OK, AddressList(), now);
326 entry1 = cache.Lookup(key1, base::TimeTicks());
327 EXPECT_FALSE(entry1 == NULL);
328 EXPECT_EQ(1U, cache.size());
329
330 // Add an entry for ("foobar.com", IPV4, CANONNAME) at t=0.
331 EXPECT_TRUE(cache.Lookup(key2, base::TimeTicks()) == NULL);
332 cache.Set(key2, OK, AddressList(), now);
333 entry2 = cache.Lookup(key2, base::TimeTicks());
334 EXPECT_FALSE(entry2 == NULL);
335 EXPECT_EQ(2U, cache.size());
336
337 // Even though the hostnames were the same, we should have two unique
338 // entries (because the HostResolverFlags differ).
339 EXPECT_NE(entry1, entry2);
340 }
341
342 TEST(HostCacheTest, NoCache) { 306 TEST(HostCacheTest, NoCache) {
343 // Disable caching. 307 // Disable caching.
344 HostCache cache(0, kSuccessEntryTTL, kFailureEntryTTL); 308 HostCache cache(0, kSuccessEntryTTL, kFailureEntryTTL);
345 EXPECT_TRUE(cache.caching_is_disabled()); 309 EXPECT_TRUE(cache.caching_is_disabled());
346 310
347 // Set t=0. 311 // Set t=0.
348 base::TimeTicks now; 312 base::TimeTicks now;
349 313
350 // Lookup and Set should have no effect. 314 // Lookup and Set should have no effect.
351 EXPECT_TRUE(cache.Lookup(Key("foobar.com"), base::TimeTicks()) == NULL); 315 EXPECT_TRUE(cache.Lookup(Key("foobar.com"), base::TimeTicks()) == NULL);
(...skipping 30 matching lines...) Expand all
382 HostCache::Key key1; 346 HostCache::Key key1;
383 HostCache::Key key2; 347 HostCache::Key key2;
384 348
385 // Expectation. 349 // Expectation.
386 // -1 means key1 is less than key2 350 // -1 means key1 is less than key2
387 // 0 means key1 equals key2 351 // 0 means key1 equals key2
388 // 1 means key1 is greater than key2 352 // 1 means key1 is greater than key2
389 int expected_comparison; 353 int expected_comparison;
390 } tests[] = { 354 } tests[] = {
391 { 355 {
392 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED, 0), 356 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED),
393 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED, 0), 357 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED),
394 0 358 0
395 }, 359 },
396 { 360 {
397 HostCache::Key("host1", ADDRESS_FAMILY_IPV4, 0), 361 HostCache::Key("host1", ADDRESS_FAMILY_IPV4),
398 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED, 0), 362 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED),
399 1 363 1
400 }, 364 },
401 { 365 {
402 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED, 0), 366 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED),
403 HostCache::Key("host1", ADDRESS_FAMILY_IPV4, 0), 367 HostCache::Key("host1", ADDRESS_FAMILY_IPV4),
404 -1 368 -1
405 }, 369 },
406 { 370 {
407 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED, 0), 371 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED),
408 HostCache::Key("host2", ADDRESS_FAMILY_UNSPECIFIED, 0), 372 HostCache::Key("host2", ADDRESS_FAMILY_UNSPECIFIED),
409 -1 373 -1
410 }, 374 },
411 { 375 {
412 HostCache::Key("host1", ADDRESS_FAMILY_IPV4, 0), 376 HostCache::Key("host1", ADDRESS_FAMILY_IPV4),
413 HostCache::Key("host2", ADDRESS_FAMILY_UNSPECIFIED, 0), 377 HostCache::Key("host2", ADDRESS_FAMILY_UNSPECIFIED),
414 1 378 1
415 }, 379 },
416 { 380 {
417 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED, 0), 381 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED),
418 HostCache::Key("host2", ADDRESS_FAMILY_IPV4, 0), 382 HostCache::Key("host2", ADDRESS_FAMILY_IPV4),
419 -1
420 },
421 {
422 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED, 0),
423 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED,
424 HOST_RESOLVER_FLAGS_CANONNAME),
425 -1
426 },
427 {
428 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED,
429 HOST_RESOLVER_FLAGS_CANONNAME),
430 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED, 0),
431 1
432 },
433 {
434 HostCache::Key("host1", ADDRESS_FAMILY_UNSPECIFIED,
435 HOST_RESOLVER_FLAGS_CANONNAME),
436 HostCache::Key("host2", ADDRESS_FAMILY_UNSPECIFIED,
437 HOST_RESOLVER_FLAGS_CANONNAME),
438 -1 383 -1
439 }, 384 },
440 }; 385 };
441 386
442 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 387 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
443 SCOPED_TRACE(StringPrintf("Test[%" PRIuS "]", i)); 388 SCOPED_TRACE(StringPrintf("Test[%" PRIuS "]", i));
444 389
445 const HostCache::Key& key1 = tests[i].key1; 390 const HostCache::Key& key1 = tests[i].key1;
446 const HostCache::Key& key2 = tests[i].key2; 391 const HostCache::Key& key2 = tests[i].key2;
447 392
(...skipping 13 matching lines...) Expand all
461 EXPECT_TRUE(key2 < key1); 406 EXPECT_TRUE(key2 < key1);
462 EXPECT_FALSE(key2 == key1); 407 EXPECT_FALSE(key2 == key1);
463 break; 408 break;
464 default: 409 default:
465 FAIL() << "Invalid expectation. Can be only -1, 0, 1"; 410 FAIL() << "Invalid expectation. Can be only -1, 0, 1";
466 } 411 }
467 } 412 }
468 } 413 }
469 414
470 } // namespace net 415 } // namespace net
OLDNEW
« no previous file with comments | « net/base/host_cache.h ('k') | net/base/host_resolver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698