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

Side by Side Diff: net/http/http_server_properties_impl_unittest.cc

Issue 2901093004: Add and persist a new field in AlternativeServiceInfo to list QUIC verisons advertised (Closed)
Patch Set: self review Created 3 years, 6 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
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/http/http_server_properties_impl.h" 5 #include "net/http/http_server_properties_impl.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "net/base/host_port_pair.h" 13 #include "net/base/host_port_pair.h"
14 #include "net/base/ip_address.h" 14 #include "net/base/ip_address.h"
15 #include "net/http/http_network_session.h"
15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
16 #include "url/gurl.h" 17 #include "url/gurl.h"
17 18
18 namespace base { 19 namespace base {
19 class ListValue; 20 class ListValue;
20 } 21 }
21 22
22 namespace net { 23 namespace net {
23 24
24 class HttpServerPropertiesImplPeer { 25 class HttpServerPropertiesImplPeer {
(...skipping 28 matching lines...) Expand all
53 bool HasAlternativeService(const url::SchemeHostPort& origin) { 54 bool HasAlternativeService(const url::SchemeHostPort& origin) {
54 const AlternativeServiceInfoVector alternative_service_info_vector = 55 const AlternativeServiceInfoVector alternative_service_info_vector =
55 impl_.GetAlternativeServiceInfos(origin); 56 impl_.GetAlternativeServiceInfos(origin);
56 return !alternative_service_info_vector.empty(); 57 return !alternative_service_info_vector.empty();
57 } 58 }
58 59
59 bool SetAlternativeService(const url::SchemeHostPort& origin, 60 bool SetAlternativeService(const url::SchemeHostPort& origin,
60 const AlternativeService& alternative_service) { 61 const AlternativeService& alternative_service) {
61 const base::Time expiration = 62 const base::Time expiration =
62 base::Time::Now() + base::TimeDelta::FromDays(1); 63 base::Time::Now() + base::TimeDelta::FromDays(1);
63 return impl_.SetAlternativeService(origin, alternative_service, expiration); 64 return impl_.SetAlternativeService(
65 origin, alternative_service, expiration,
66 HttpNetworkSession::Params().quic_supported_versions);
64 } 67 }
65 68
66 HttpServerPropertiesImpl impl_; 69 HttpServerPropertiesImpl impl_;
67 }; 70 };
68 71
69 typedef HttpServerPropertiesImplTest SpdyServerPropertiesTest; 72 typedef HttpServerPropertiesImplTest SpdyServerPropertiesTest;
70 73
71 TEST_F(SpdyServerPropertiesTest, SetWithSchemeHostPort) { 74 TEST_F(SpdyServerPropertiesTest, SetWithSchemeHostPort) {
72 // Check spdy servers are correctly set with SchemeHostPort key. 75 // Check spdy servers are correctly set with SchemeHostPort key.
73 url::SchemeHostPort https_www_server("https", "www.google.com", 443); 76 url::SchemeHostPort https_www_server("https", "www.google.com", 443);
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 alternative_service_info_vector[0].alternative_service); 360 alternative_service_info_vector[0].alternative_service);
358 361
359 impl_.Clear(); 362 impl_.Clear();
360 EXPECT_FALSE(HasAlternativeService(test_server)); 363 EXPECT_FALSE(HasAlternativeService(test_server));
361 } 364 }
362 365
363 TEST_F(AlternateProtocolServerPropertiesTest, ExcludeOrigin) { 366 TEST_F(AlternateProtocolServerPropertiesTest, ExcludeOrigin) {
364 AlternativeServiceInfoVector alternative_service_info_vector; 367 AlternativeServiceInfoVector alternative_service_info_vector;
365 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 368 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
366 // Same hostname, same port, TCP: should be ignored. 369 // Same hostname, same port, TCP: should be ignored.
367 AlternativeServiceInfo alternative_service_info1(kProtoHTTP2, "foo", 443, 370 AlternativeServiceInfo alternative_service_info1(
368 expiration); 371 AlternativeService(kProtoHTTP2, "foo", 443), expiration,
372 HttpNetworkSession::Params().quic_supported_versions);
369 alternative_service_info_vector.push_back(alternative_service_info1); 373 alternative_service_info_vector.push_back(alternative_service_info1);
370 // Different hostname: GetAlternativeServiceInfos should return this one. 374 // Different hostname: GetAlternativeServiceInfos should return this one.
371 AlternativeServiceInfo alternative_service_info2(kProtoHTTP2, "bar", 443, 375 AlternativeServiceInfo alternative_service_info2(
372 expiration); 376 AlternativeService(kProtoHTTP2, "bar", 443), expiration,
377 HttpNetworkSession::Params().quic_supported_versions);
373 alternative_service_info_vector.push_back(alternative_service_info2); 378 alternative_service_info_vector.push_back(alternative_service_info2);
374 // Different port: GetAlternativeServiceInfos should return this one too. 379 // Different port: GetAlternativeServiceInfos should return this one too.
375 AlternativeServiceInfo alternative_service_info3(kProtoHTTP2, "foo", 80, 380 AlternativeServiceInfo alternative_service_info3(
376 expiration); 381 AlternativeService(kProtoHTTP2, "foo", 80), expiration,
382 HttpNetworkSession::Params().quic_supported_versions);
377 alternative_service_info_vector.push_back(alternative_service_info3); 383 alternative_service_info_vector.push_back(alternative_service_info3);
378 // QUIC: GetAlternativeServices should return this one too. 384 // QUIC: GetAlternativeServices should return this one too.
379 AlternativeServiceInfo alternative_service_info4(kProtoQUIC, "foo", 443, 385 AlternativeServiceInfo alternative_service_info4(
380 expiration); 386 AlternativeService(kProtoQUIC, "foo", 443), expiration,
387 HttpNetworkSession::Params().quic_supported_versions);
381 alternative_service_info_vector.push_back(alternative_service_info4); 388 alternative_service_info_vector.push_back(alternative_service_info4);
382 389
383 url::SchemeHostPort test_server("https", "foo", 443); 390 url::SchemeHostPort test_server("https", "foo", 443);
384 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); 391 impl_.SetAlternativeServices(test_server, alternative_service_info_vector);
385 392
386 const AlternativeServiceInfoVector alternative_service_info_vector2 = 393 const AlternativeServiceInfoVector alternative_service_info_vector2 =
387 impl_.GetAlternativeServiceInfos(test_server); 394 impl_.GetAlternativeServiceInfos(test_server);
388 ASSERT_EQ(3u, alternative_service_info_vector2.size()); 395 ASSERT_EQ(3u, alternative_service_info_vector2.size());
389 EXPECT_EQ(alternative_service_info2, alternative_service_info_vector2[0]); 396 EXPECT_EQ(alternative_service_info2, alternative_service_info_vector2[0]);
390 EXPECT_EQ(alternative_service_info3, alternative_service_info_vector2[1]); 397 EXPECT_EQ(alternative_service_info3, alternative_service_info_vector2[1]);
391 EXPECT_EQ(alternative_service_info4, alternative_service_info_vector2[2]); 398 EXPECT_EQ(alternative_service_info4, alternative_service_info_vector2[2]);
392 } 399 }
393 400
394 TEST_F(AlternateProtocolServerPropertiesTest, Set) { 401 TEST_F(AlternateProtocolServerPropertiesTest, Set) {
395 // |test_server1| has an alternative service, which will not be 402 // |test_server1| has an alternative service, which will not be
396 // affected by SetAlternativeServiceServers(), because 403 // affected by SetAlternativeServiceServers(), because
397 // |alternative_service_map| does not have an entry for 404 // |alternative_service_map| does not have an entry for
398 // |test_server1|. 405 // |test_server1|.
399 url::SchemeHostPort test_server1("http", "foo1", 80); 406 url::SchemeHostPort test_server1("http", "foo1", 80);
400 const AlternativeService alternative_service1(kProtoHTTP2, "bar1", 443); 407 const AlternativeService alternative_service1(kProtoHTTP2, "bar1", 443);
401 const base::Time now = base::Time::Now(); 408 const base::Time now = base::Time::Now();
402 base::Time expiration1 = now + base::TimeDelta::FromDays(1); 409 base::Time expiration1 = now + base::TimeDelta::FromDays(1);
403 // 1st entry in the memory. 410 // 1st entry in the memory.
404 impl_.SetAlternativeService(test_server1, alternative_service1, expiration1); 411 impl_.SetAlternativeService(
412 test_server1, alternative_service1, expiration1,
413 HttpNetworkSession::Params().quic_supported_versions);
405 414
406 // |test_server2| has an alternative service, which will be 415 // |test_server2| has an alternative service, which will be
407 // overwritten by SetAlternativeServiceServers(), because 416 // overwritten by SetAlternativeServiceServers(), because
408 // |alternative_service_map| has an entry for 417 // |alternative_service_map| has an entry for
409 // |test_server2|. 418 // |test_server2|.
410 AlternativeServiceInfoVector alternative_service_info_vector; 419 AlternativeServiceInfoVector alternative_service_info_vector;
411 const AlternativeService alternative_service2(kProtoHTTP2, "bar2", 443); 420 const AlternativeService alternative_service2(kProtoHTTP2, "bar2", 443);
412 base::Time expiration2 = now + base::TimeDelta::FromDays(2); 421 base::Time expiration2 = now + base::TimeDelta::FromDays(2);
413 alternative_service_info_vector.push_back( 422 alternative_service_info_vector.push_back(AlternativeServiceInfo(
414 AlternativeServiceInfo(alternative_service2, expiration2)); 423 alternative_service2, expiration2,
424 HttpNetworkSession::Params().quic_supported_versions));
415 url::SchemeHostPort test_server2("http", "foo2", 80); 425 url::SchemeHostPort test_server2("http", "foo2", 80);
416 // 0th entry in the memory. 426 // 0th entry in the memory.
417 impl_.SetAlternativeServices(test_server2, alternative_service_info_vector); 427 impl_.SetAlternativeServices(test_server2, alternative_service_info_vector);
418 428
419 // Prepare |alternative_service_map| to be loaded by 429 // Prepare |alternative_service_map| to be loaded by
420 // SetAlternativeServiceServers(). 430 // SetAlternativeServiceServers().
421 AlternativeServiceMap alternative_service_map( 431 AlternativeServiceMap alternative_service_map(
422 AlternativeServiceMap::NO_AUTO_EVICT); 432 AlternativeServiceMap::NO_AUTO_EVICT);
423 const AlternativeService alternative_service3(kProtoHTTP2, "bar3", 123); 433 const AlternativeService alternative_service3(kProtoHTTP2, "bar3", 123);
424 base::Time expiration3 = now + base::TimeDelta::FromDays(3); 434 base::Time expiration3 = now + base::TimeDelta::FromDays(3);
425 const AlternativeServiceInfo alternative_service_info1(alternative_service3, 435 const AlternativeServiceInfo alternative_service_info1(
426 expiration3); 436 alternative_service3, expiration3,
437 HttpNetworkSession::Params().quic_supported_versions);
427 // Simulate updating data for 0th entry with data from Preferences. 438 // Simulate updating data for 0th entry with data from Preferences.
428 alternative_service_map.Put( 439 alternative_service_map.Put(
429 test_server2, 440 test_server2,
430 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info1)); 441 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info1));
431 442
432 url::SchemeHostPort test_server3("http", "foo3", 80); 443 url::SchemeHostPort test_server3("http", "foo3", 80);
433 const AlternativeService alternative_service4(kProtoHTTP2, "bar4", 1234); 444 const AlternativeService alternative_service4(kProtoHTTP2, "bar4", 1234);
434 base::Time expiration4 = now + base::TimeDelta::FromDays(4); 445 base::Time expiration4 = now + base::TimeDelta::FromDays(4);
435 const AlternativeServiceInfo alternative_service_info2(alternative_service4, 446 const AlternativeServiceInfo alternative_service_info2(
436 expiration4); 447 alternative_service4, expiration4,
448 HttpNetworkSession::Params().quic_supported_versions);
437 // Add an old entry from Preferences, this will be added to end of recency 449 // Add an old entry from Preferences, this will be added to end of recency
438 // list. 450 // list.
439 alternative_service_map.Put( 451 alternative_service_map.Put(
440 test_server3, 452 test_server3,
441 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info2)); 453 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info2));
442 454
443 // MRU list will be test_server2, test_server1, test_server3. 455 // MRU list will be test_server2, test_server1, test_server3.
444 impl_.SetAlternativeServiceServers(&alternative_service_map); 456 impl_.SetAlternativeServiceServers(&alternative_service_map);
445 457
446 // Verify alternative_service_map. 458 // Verify alternative_service_map.
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 alternative_service_info_vector[0].alternative_service); 501 alternative_service_info_vector[0].alternative_service);
490 } 502 }
491 503
492 // Regression test for https://crbug.com/516486: 504 // Regression test for https://crbug.com/516486:
493 // GetAlternativeServiceInfos() should remove |alternative_service_map_| 505 // GetAlternativeServiceInfos() should remove |alternative_service_map_|
494 // elements with empty value. 506 // elements with empty value.
495 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVector) { 507 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVector) {
496 url::SchemeHostPort server("https", "foo", 443); 508 url::SchemeHostPort server("https", "foo", 443);
497 const AlternativeService alternative_service(kProtoHTTP2, "bar", 443); 509 const AlternativeService alternative_service(kProtoHTTP2, "bar", 443);
498 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); 510 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1);
499 const AlternativeServiceInfo alternative_service_info(alternative_service, 511 const AlternativeServiceInfo alternative_service_info(
500 expiration); 512 alternative_service, expiration,
513 HttpNetworkSession::Params().quic_supported_versions);
501 AlternativeServiceMap alternative_service_map( 514 AlternativeServiceMap alternative_service_map(
502 AlternativeServiceMap::NO_AUTO_EVICT); 515 AlternativeServiceMap::NO_AUTO_EVICT);
503 alternative_service_map.Put( 516 alternative_service_map.Put(
504 server, 517 server,
505 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); 518 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info));
506 519
507 // Prepare |alternative_service_map_| with a single key that has a single 520 // Prepare |alternative_service_map_| with a single key that has a single
508 // AlternativeServiceInfo with identical hostname and port. 521 // AlternativeServiceInfo with identical hostname and port.
509 impl_.SetAlternativeServiceServers(&alternative_service_map); 522 impl_.SetAlternativeServiceServers(&alternative_service_map);
510 523
(...skipping 11 matching lines...) Expand all
522 // There should still be no alternative service assigned to |server|. 535 // There should still be no alternative service assigned to |server|.
523 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(server).empty()); 536 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(server).empty());
524 } 537 }
525 538
526 // Regression test for https://crbug.com/516486 for the canonical host case. 539 // Regression test for https://crbug.com/516486 for the canonical host case.
527 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVectorForCanonical) { 540 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVectorForCanonical) {
528 url::SchemeHostPort server("https", "foo.c.youtube.com", 443); 541 url::SchemeHostPort server("https", "foo.c.youtube.com", 443);
529 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); 542 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443);
530 const AlternativeService alternative_service(kProtoHTTP2, "", 443); 543 const AlternativeService alternative_service(kProtoHTTP2, "", 443);
531 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); 544 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1);
532 const AlternativeServiceInfo alternative_service_info(alternative_service, 545 const AlternativeServiceInfo alternative_service_info(
533 expiration); 546 alternative_service, expiration,
547 HttpNetworkSession::Params().quic_supported_versions);
534 AlternativeServiceMap alternative_service_map( 548 AlternativeServiceMap alternative_service_map(
535 AlternativeServiceMap::NO_AUTO_EVICT); 549 AlternativeServiceMap::NO_AUTO_EVICT);
536 alternative_service_map.Put( 550 alternative_service_map.Put(
537 canonical_server, 551 canonical_server,
538 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); 552 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info));
539 553
540 // Prepare |alternative_service_map_| with a single key that has a single 554 // Prepare |alternative_service_map_| with a single key that has a single
541 // AlternativeServiceInfo with identical hostname and port. 555 // AlternativeServiceInfo with identical hostname and port.
542 impl_.SetAlternativeServiceServers(&alternative_service_map); 556 impl_.SetAlternativeServiceServers(&alternative_service_map);
543 557
(...skipping 12 matching lines...) Expand all
556 // There should still be no alternative service assigned to 570 // There should still be no alternative service assigned to
557 // |canonical_server|. 571 // |canonical_server|.
558 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(canonical_server).empty()); 572 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(canonical_server).empty());
559 } 573 }
560 574
561 TEST_F(AlternateProtocolServerPropertiesTest, ClearServerWithCanonical) { 575 TEST_F(AlternateProtocolServerPropertiesTest, ClearServerWithCanonical) {
562 url::SchemeHostPort server("https", "foo.c.youtube.com", 443); 576 url::SchemeHostPort server("https", "foo.c.youtube.com", 443);
563 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); 577 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443);
564 const AlternativeService alternative_service(kProtoQUIC, "", 443); 578 const AlternativeService alternative_service(kProtoQUIC, "", 443);
565 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 579 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
566 const AlternativeServiceInfo alternative_service_info(alternative_service, 580 const AlternativeServiceInfo alternative_service_info(
567 expiration); 581 alternative_service, expiration,
582 HttpNetworkSession::Params().quic_supported_versions);
568 583
569 impl_.SetAlternativeServices( 584 impl_.SetAlternativeServices(
570 canonical_server, 585 canonical_server,
571 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); 586 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info));
572 587
573 // Make sure the canonical service is returned for the other server. 588 // Make sure the canonical service is returned for the other server.
574 const AlternativeServiceInfoVector alternative_service_info_vector = 589 const AlternativeServiceInfoVector alternative_service_info_vector =
575 impl_.GetAlternativeServiceInfos(server); 590 impl_.GetAlternativeServiceInfos(server);
576 ASSERT_EQ(1u, alternative_service_info_vector.size()); 591 ASSERT_EQ(1u, alternative_service_info_vector.size());
577 EXPECT_EQ(kProtoQUIC, 592 EXPECT_EQ(kProtoQUIC,
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 alternative_service_info_vector = 645 alternative_service_info_vector =
631 impl_.GetAlternativeServiceInfos(test_server); 646 impl_.GetAlternativeServiceInfos(test_server);
632 ASSERT_EQ(1u, alternative_service_info_vector.size()); 647 ASSERT_EQ(1u, alternative_service_info_vector.size());
633 EXPECT_EQ(alternative_service1, 648 EXPECT_EQ(alternative_service1,
634 alternative_service_info_vector[0].alternative_service); 649 alternative_service_info_vector[0].alternative_service);
635 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); 650 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
636 651
637 // SetAlternativeServices should add a broken alternative service to the map. 652 // SetAlternativeServices should add a broken alternative service to the map.
638 AlternativeServiceInfoVector alternative_service_info_vector2; 653 AlternativeServiceInfoVector alternative_service_info_vector2;
639 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 654 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
640 alternative_service_info_vector2.push_back( 655
641 AlternativeServiceInfo(alternative_service1, expiration)); 656 alternative_service_info_vector2.push_back(AlternativeServiceInfo(
657 alternative_service1, expiration,
658 HttpNetworkSession::Params().quic_supported_versions));
642 const AlternativeService alternative_service2(kProtoHTTP2, "foo", 1234); 659 const AlternativeService alternative_service2(kProtoHTTP2, "foo", 1234);
643 alternative_service_info_vector2.push_back( 660 alternative_service_info_vector2.push_back(AlternativeServiceInfo(
644 AlternativeServiceInfo(alternative_service2, expiration)); 661 alternative_service2, expiration,
662 HttpNetworkSession::Params().quic_supported_versions));
645 impl_.SetAlternativeServices(test_server, alternative_service_info_vector2); 663 impl_.SetAlternativeServices(test_server, alternative_service_info_vector2);
646 alternative_service_info_vector = 664 alternative_service_info_vector =
647 impl_.GetAlternativeServiceInfos(test_server); 665 impl_.GetAlternativeServiceInfos(test_server);
648 ASSERT_EQ(2u, alternative_service_info_vector.size()); 666 ASSERT_EQ(2u, alternative_service_info_vector.size());
649 EXPECT_EQ(alternative_service1, 667 EXPECT_EQ(alternative_service1,
650 alternative_service_info_vector[0].alternative_service); 668 alternative_service_info_vector[0].alternative_service);
651 EXPECT_EQ(alternative_service2, 669 EXPECT_EQ(alternative_service2,
652 alternative_service_info_vector[1].alternative_service); 670 alternative_service_info_vector[1].alternative_service);
653 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); 671 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
654 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2)); 672 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2));
655 673
656 // SetAlternativeService should add a broken alternative service to the map. 674 // SetAlternativeService should add a broken alternative service to the map.
657 SetAlternativeService(test_server, alternative_service1); 675 SetAlternativeService(test_server, alternative_service1);
658 alternative_service_info_vector = 676 alternative_service_info_vector =
659 impl_.GetAlternativeServiceInfos(test_server); 677 impl_.GetAlternativeServiceInfos(test_server);
660 ASSERT_EQ(1u, alternative_service_info_vector.size()); 678 ASSERT_EQ(1u, alternative_service_info_vector.size());
661 EXPECT_EQ(alternative_service1, 679 EXPECT_EQ(alternative_service1,
662 alternative_service_info_vector[0].alternative_service); 680 alternative_service_info_vector[0].alternative_service);
663 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); 681 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
664 } 682 }
665 683
666 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) { 684 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) {
667 AlternativeServiceInfoVector alternative_service_info_vector; 685 AlternativeServiceInfoVector alternative_service_info_vector;
668 base::Time now = base::Time::Now(); 686 base::Time now = base::Time::Now();
669 base::TimeDelta one_day = base::TimeDelta::FromDays(1); 687 base::TimeDelta one_day = base::TimeDelta::FromDays(1);
670 688
671 // First alternative service expired one day ago, should not be returned by 689 // First alternative service expired one day ago, should not be returned by
672 // GetAlternativeServiceInfos(). 690 // GetAlternativeServiceInfos().
673 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); 691 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
674 alternative_service_info_vector.push_back( 692 alternative_service_info_vector.push_back(AlternativeServiceInfo(
675 AlternativeServiceInfo(alternative_service1, now - one_day)); 693 alternative_service1, now - one_day,
694 HttpNetworkSession::Params().quic_supported_versions));
676 695
677 // Second alterrnative service will expire one day from now, should be 696 // Second alterrnative service will expire one day from now, should be
678 // returned by GetAlternativeSerices(). 697 // returned by GetAlternativeSerices().
679 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); 698 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234);
680 alternative_service_info_vector.push_back( 699 alternative_service_info_vector.push_back(AlternativeServiceInfo(
681 AlternativeServiceInfo(alternative_service2, now + one_day)); 700 alternative_service2, now + one_day,
701 HttpNetworkSession::Params().quic_supported_versions));
682 702
683 url::SchemeHostPort test_server("http", "foo", 80); 703 url::SchemeHostPort test_server("http", "foo", 80);
684 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); 704 impl_.SetAlternativeServices(test_server, alternative_service_info_vector);
685 705
686 AlternativeServiceInfoVector alternative_service_info_vector2 = 706 AlternativeServiceInfoVector alternative_service_info_vector2 =
687 impl_.GetAlternativeServiceInfos(test_server); 707 impl_.GetAlternativeServiceInfos(test_server);
688 ASSERT_EQ(1u, alternative_service_info_vector2.size()); 708 ASSERT_EQ(1u, alternative_service_info_vector2.size());
689 EXPECT_EQ(alternative_service2, 709 EXPECT_EQ(alternative_service2,
690 alternative_service_info_vector2[0].alternative_service); 710 alternative_service_info_vector2[0].alternative_service);
691 } 711 }
692 712
693 TEST_F(AlternateProtocolServerPropertiesTest, MaxAgeCanonical) { 713 TEST_F(AlternateProtocolServerPropertiesTest, MaxAgeCanonical) {
694 AlternativeServiceInfoVector alternative_service_info_vector; 714 AlternativeServiceInfoVector alternative_service_info_vector;
695 base::Time now = base::Time::Now(); 715 base::Time now = base::Time::Now();
696 base::TimeDelta one_day = base::TimeDelta::FromDays(1); 716 base::TimeDelta one_day = base::TimeDelta::FromDays(1);
697 717
698 // First alternative service expired one day ago, should not be returned by 718 // First alternative service expired one day ago, should not be returned by
699 // GetAlternativeServiceInfos(). 719 // GetAlternativeServiceInfos().
700 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); 720 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
701 alternative_service_info_vector.push_back( 721 alternative_service_info_vector.push_back(AlternativeServiceInfo(
702 AlternativeServiceInfo(alternative_service1, now - one_day)); 722 alternative_service1, now - one_day,
723 HttpNetworkSession::Params().quic_supported_versions));
703 724
704 // Second alterrnative service will expire one day from now, should be 725 // Second alterrnative service will expire one day from now, should be
705 // returned by GetAlternativeSerices(). 726 // returned by GetAlternativeSerices().
706 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); 727 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234);
707 alternative_service_info_vector.push_back( 728 alternative_service_info_vector.push_back(AlternativeServiceInfo(
708 AlternativeServiceInfo(alternative_service2, now + one_day)); 729 alternative_service2, now + one_day,
730 HttpNetworkSession::Params().quic_supported_versions));
709 731
710 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); 732 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443);
711 impl_.SetAlternativeServices(canonical_server, 733 impl_.SetAlternativeServices(canonical_server,
712 alternative_service_info_vector); 734 alternative_service_info_vector);
713 735
714 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); 736 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443);
715 AlternativeServiceInfoVector alternative_service_info_vector2 = 737 AlternativeServiceInfoVector alternative_service_info_vector2 =
716 impl_.GetAlternativeServiceInfos(test_server); 738 impl_.GetAlternativeServiceInfos(test_server);
717 ASSERT_EQ(1u, alternative_service_info_vector2.size()); 739 ASSERT_EQ(1u, alternative_service_info_vector2.size());
718 EXPECT_EQ(alternative_service2, 740 EXPECT_EQ(alternative_service2,
719 alternative_service_info_vector2[0].alternative_service); 741 alternative_service_info_vector2[0].alternative_service);
720 } 742 }
721 743
722 TEST_F(AlternateProtocolServerPropertiesTest, AlternativeServiceWithScheme) { 744 TEST_F(AlternateProtocolServerPropertiesTest, AlternativeServiceWithScheme) {
723 AlternativeServiceInfoVector alternative_service_info_vector; 745 AlternativeServiceInfoVector alternative_service_info_vector;
724 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); 746 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
725 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 747 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
726 alternative_service_info_vector.push_back( 748 alternative_service_info_vector.push_back(AlternativeServiceInfo(
727 AlternativeServiceInfo(alternative_service1, expiration)); 749 alternative_service1, expiration,
750 HttpNetworkSession::Params().quic_supported_versions));
728 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); 751 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234);
729 alternative_service_info_vector.push_back( 752 alternative_service_info_vector.push_back(AlternativeServiceInfo(
730 AlternativeServiceInfo(alternative_service2, expiration)); 753 alternative_service2, expiration,
754 HttpNetworkSession::Params().quic_supported_versions));
731 // Set Alt-Svc list for |http_server|. 755 // Set Alt-Svc list for |http_server|.
732 url::SchemeHostPort http_server("http", "foo", 80); 756 url::SchemeHostPort http_server("http", "foo", 80);
733 impl_.SetAlternativeServices(http_server, alternative_service_info_vector); 757 impl_.SetAlternativeServices(http_server, alternative_service_info_vector);
734 758
735 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); 759 const net::AlternativeServiceMap& map = impl_.alternative_service_map();
736 net::AlternativeServiceMap::const_iterator it = map.begin(); 760 net::AlternativeServiceMap::const_iterator it = map.begin();
737 EXPECT_TRUE(it->first.Equals(http_server)); 761 EXPECT_TRUE(it->first.Equals(http_server));
738 ASSERT_EQ(2u, it->second.size()); 762 ASSERT_EQ(2u, it->second.size());
739 EXPECT_EQ(alternative_service1, it->second[0].alternative_service); 763 EXPECT_EQ(alternative_service1, it->second[0].alternative_service);
740 EXPECT_EQ(alternative_service2, it->second[1].alternative_service); 764 EXPECT_EQ(alternative_service2, it->second[1].alternative_service);
(...skipping 11 matching lines...) Expand all
752 impl_.SetAlternativeServices(http_server, AlternativeServiceInfoVector()); 776 impl_.SetAlternativeServices(http_server, AlternativeServiceInfoVector());
753 777
754 EXPECT_EQ(0u, impl_.GetAlternativeServiceInfos(http_server).size()); 778 EXPECT_EQ(0u, impl_.GetAlternativeServiceInfos(http_server).size());
755 EXPECT_EQ(2u, impl_.GetAlternativeServiceInfos(https_server).size()); 779 EXPECT_EQ(2u, impl_.GetAlternativeServiceInfos(https_server).size());
756 } 780 }
757 781
758 TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternativeServices) { 782 TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternativeServices) {
759 AlternativeServiceInfoVector alternative_service_info_vector; 783 AlternativeServiceInfoVector alternative_service_info_vector;
760 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); 784 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
761 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 785 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
762 alternative_service_info_vector.push_back( 786 alternative_service_info_vector.push_back(AlternativeServiceInfo(
763 AlternativeServiceInfo(alternative_service1, expiration)); 787 alternative_service1, expiration,
788 HttpNetworkSession::Params().quic_supported_versions));
764 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); 789 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234);
765 alternative_service_info_vector.push_back( 790 alternative_service_info_vector.push_back(AlternativeServiceInfo(
766 AlternativeServiceInfo(alternative_service2, expiration)); 791 alternative_service2, expiration,
792 HttpNetworkSession::Params().quic_supported_versions));
767 url::SchemeHostPort test_server("http", "foo", 80); 793 url::SchemeHostPort test_server("http", "foo", 80);
768 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); 794 impl_.SetAlternativeServices(test_server, alternative_service_info_vector);
769 795
770 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); 796 const net::AlternativeServiceMap& map = impl_.alternative_service_map();
771 net::AlternativeServiceMap::const_iterator it = map.begin(); 797 net::AlternativeServiceMap::const_iterator it = map.begin();
772 EXPECT_TRUE(it->first.Equals(test_server)); 798 EXPECT_TRUE(it->first.Equals(test_server));
773 ASSERT_EQ(2u, it->second.size()); 799 ASSERT_EQ(2u, it->second.size());
774 EXPECT_EQ(alternative_service1, it->second[0].alternative_service); 800 EXPECT_EQ(alternative_service1, it->second[0].alternative_service);
775 EXPECT_EQ(alternative_service2, it->second[1].alternative_service); 801 EXPECT_EQ(alternative_service2, it->second[1].alternative_service);
776 802
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); 867 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443);
842 EXPECT_FALSE(HasAlternativeService(test_server)); 868 EXPECT_FALSE(HasAlternativeService(test_server));
843 869
844 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); 870 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443);
845 EXPECT_FALSE(HasAlternativeService(canonical_server)); 871 EXPECT_FALSE(HasAlternativeService(canonical_server));
846 872
847 AlternativeServiceInfoVector alternative_service_info_vector; 873 AlternativeServiceInfoVector alternative_service_info_vector;
848 const AlternativeService canonical_alternative_service1( 874 const AlternativeService canonical_alternative_service1(
849 kProtoQUIC, "bar.c.youtube.com", 1234); 875 kProtoQUIC, "bar.c.youtube.com", 1234);
850 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 876 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
851 alternative_service_info_vector.push_back( 877 alternative_service_info_vector.push_back(AlternativeServiceInfo(
852 AlternativeServiceInfo(canonical_alternative_service1, expiration)); 878 canonical_alternative_service1, expiration,
879 HttpNetworkSession::Params().quic_supported_versions));
853 const AlternativeService canonical_alternative_service2(kProtoHTTP2, "", 443); 880 const AlternativeService canonical_alternative_service2(kProtoHTTP2, "", 443);
854 alternative_service_info_vector.push_back( 881 alternative_service_info_vector.push_back(AlternativeServiceInfo(
855 AlternativeServiceInfo(canonical_alternative_service2, expiration)); 882 canonical_alternative_service2, expiration,
883 HttpNetworkSession::Params().quic_supported_versions));
856 impl_.SetAlternativeServices(canonical_server, 884 impl_.SetAlternativeServices(canonical_server,
857 alternative_service_info_vector); 885 alternative_service_info_vector);
858 886
859 // Since |test_server| does not have an alternative service itself, 887 // Since |test_server| does not have an alternative service itself,
860 // GetAlternativeServiceInfos should return those of |canonical_server|. 888 // GetAlternativeServiceInfos should return those of |canonical_server|.
861 AlternativeServiceInfoVector alternative_service_info_vector2 = 889 AlternativeServiceInfoVector alternative_service_info_vector2 =
862 impl_.GetAlternativeServiceInfos(test_server); 890 impl_.GetAlternativeServiceInfos(test_server);
863 ASSERT_EQ(2u, alternative_service_info_vector2.size()); 891 ASSERT_EQ(2u, alternative_service_info_vector2.size());
864 EXPECT_EQ(canonical_alternative_service1, 892 EXPECT_EQ(canonical_alternative_service1,
865 alternative_service_info_vector2[0].alternative_service); 893 alternative_service_info_vector2[0].alternative_service);
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
1239 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id))); 1267 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id)));
1240 1268
1241 impl_.Clear(); 1269 impl_.Clear();
1242 EXPECT_EQ(0u, impl_.quic_server_info_map().size()); 1270 EXPECT_EQ(0u, impl_.quic_server_info_map().size());
1243 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id)); 1271 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id));
1244 } 1272 }
1245 1273
1246 } // namespace 1274 } // namespace
1247 1275
1248 } // namespace net 1276 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698