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

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

Issue 2932503005: Change AlternativeServiceInfo to a class (Closed)
Patch Set: 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
« no previous file with comments | « net/http/http_server_properties_impl.cc ('k') | net/http/http_server_properties_manager.cc » ('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/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
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 TEST_F(AlternateProtocolServerPropertiesTest, Basic) { 372 TEST_F(AlternateProtocolServerPropertiesTest, Basic) {
373 url::SchemeHostPort test_server("http", "foo", 80); 373 url::SchemeHostPort test_server("http", "foo", 80);
374 EXPECT_FALSE(HasAlternativeService(test_server)); 374 EXPECT_FALSE(HasAlternativeService(test_server));
375 375
376 AlternativeService alternative_service(kProtoHTTP2, "foo", 443); 376 AlternativeService alternative_service(kProtoHTTP2, "foo", 443);
377 SetAlternativeService(test_server, alternative_service); 377 SetAlternativeService(test_server, alternative_service);
378 const AlternativeServiceInfoVector alternative_service_info_vector = 378 const AlternativeServiceInfoVector alternative_service_info_vector =
379 impl_.GetAlternativeServiceInfos(test_server); 379 impl_.GetAlternativeServiceInfos(test_server);
380 ASSERT_EQ(1u, alternative_service_info_vector.size()); 380 ASSERT_EQ(1u, alternative_service_info_vector.size());
381 EXPECT_EQ(alternative_service, 381 EXPECT_EQ(alternative_service,
382 alternative_service_info_vector[0].alternative_service); 382 alternative_service_info_vector[0].alternative_service());
383 383
384 impl_.Clear(); 384 impl_.Clear();
385 EXPECT_FALSE(HasAlternativeService(test_server)); 385 EXPECT_FALSE(HasAlternativeService(test_server));
386 } 386 }
387 387
388 TEST_F(AlternateProtocolServerPropertiesTest, ExcludeOrigin) { 388 TEST_F(AlternateProtocolServerPropertiesTest, ExcludeOrigin) {
389 AlternativeServiceInfoVector alternative_service_info_vector; 389 AlternativeServiceInfoVector alternative_service_info_vector;
390 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 390 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
391 // Same hostname, same port, TCP: should be ignored. 391 // Same hostname, same port, TCP: should be ignored.
392 AlternativeServiceInfo alternative_service_info1(kProtoHTTP2, "foo", 443, 392 AlternativeServiceInfo alternative_service_info1(kProtoHTTP2, "foo", 443,
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 // MRU list will be test_server2, test_server1, test_server3. 468 // MRU list will be test_server2, test_server1, test_server3.
469 impl_.SetAlternativeServiceServers(&alternative_service_map); 469 impl_.SetAlternativeServiceServers(&alternative_service_map);
470 470
471 // Verify alternative_service_map. 471 // Verify alternative_service_map.
472 const AlternativeServiceMap& map = impl_.alternative_service_map(); 472 const AlternativeServiceMap& map = impl_.alternative_service_map();
473 ASSERT_EQ(3u, map.size()); 473 ASSERT_EQ(3u, map.size());
474 AlternativeServiceMap::const_iterator map_it = map.begin(); 474 AlternativeServiceMap::const_iterator map_it = map.begin();
475 475
476 EXPECT_TRUE(map_it->first.Equals(test_server2)); 476 EXPECT_TRUE(map_it->first.Equals(test_server2));
477 ASSERT_EQ(1u, map_it->second.size()); 477 ASSERT_EQ(1u, map_it->second.size());
478 EXPECT_EQ(alternative_service3, map_it->second[0].alternative_service); 478 EXPECT_EQ(alternative_service3, map_it->second[0].alternative_service());
479 EXPECT_EQ(expiration3, map_it->second[0].expiration); 479 EXPECT_EQ(expiration3, map_it->second[0].expiration());
480 ++map_it; 480 ++map_it;
481 EXPECT_TRUE(map_it->first.Equals(test_server1)); 481 EXPECT_TRUE(map_it->first.Equals(test_server1));
482 ASSERT_EQ(1u, map_it->second.size()); 482 ASSERT_EQ(1u, map_it->second.size());
483 EXPECT_EQ(alternative_service1, map_it->second[0].alternative_service); 483 EXPECT_EQ(alternative_service1, map_it->second[0].alternative_service());
484 EXPECT_EQ(expiration1, map_it->second[0].expiration); 484 EXPECT_EQ(expiration1, map_it->second[0].expiration());
485 ++map_it; 485 ++map_it;
486 EXPECT_TRUE(map_it->first.Equals(test_server3)); 486 EXPECT_TRUE(map_it->first.Equals(test_server3));
487 ASSERT_EQ(1u, map_it->second.size()); 487 ASSERT_EQ(1u, map_it->second.size());
488 EXPECT_EQ(alternative_service4, map_it->second[0].alternative_service); 488 EXPECT_EQ(alternative_service4, map_it->second[0].alternative_service());
489 EXPECT_EQ(expiration4, map_it->second[0].expiration); 489 EXPECT_EQ(expiration4, map_it->second[0].expiration());
490 } 490 }
491 491
492 // Regression test for https://crbug.com/504032: 492 // Regression test for https://crbug.com/504032:
493 // SetAlternativeServiceServers() should not crash if there is an empty 493 // SetAlternativeServiceServers() should not crash if there is an empty
494 // hostname is the mapping. 494 // hostname is the mapping.
495 TEST_F(AlternateProtocolServerPropertiesTest, SetWithEmptyHostname) { 495 TEST_F(AlternateProtocolServerPropertiesTest, SetWithEmptyHostname) {
496 url::SchemeHostPort server("https", "foo", 443); 496 url::SchemeHostPort server("https", "foo", 443);
497 const AlternativeService alternative_service_with_empty_hostname(kProtoHTTP2, 497 const AlternativeService alternative_service_with_empty_hostname(kProtoHTTP2,
498 "", 1234); 498 "", 1234);
499 const AlternativeService alternative_service_with_foo_hostname(kProtoHTTP2, 499 const AlternativeService alternative_service_with_foo_hostname(kProtoHTTP2,
500 "foo", 1234); 500 "foo", 1234);
501 SetAlternativeService(server, alternative_service_with_empty_hostname); 501 SetAlternativeService(server, alternative_service_with_empty_hostname);
502 impl_.MarkAlternativeServiceBroken(alternative_service_with_foo_hostname); 502 impl_.MarkAlternativeServiceBroken(alternative_service_with_foo_hostname);
503 503
504 AlternativeServiceMap alternative_service_map( 504 AlternativeServiceMap alternative_service_map(
505 AlternativeServiceMap::NO_AUTO_EVICT); 505 AlternativeServiceMap::NO_AUTO_EVICT);
506 impl_.SetAlternativeServiceServers(&alternative_service_map); 506 impl_.SetAlternativeServiceServers(&alternative_service_map);
507 507
508 EXPECT_TRUE( 508 EXPECT_TRUE(
509 impl_.IsAlternativeServiceBroken(alternative_service_with_foo_hostname)); 509 impl_.IsAlternativeServiceBroken(alternative_service_with_foo_hostname));
510 const AlternativeServiceInfoVector alternative_service_info_vector = 510 const AlternativeServiceInfoVector alternative_service_info_vector =
511 impl_.GetAlternativeServiceInfos(server); 511 impl_.GetAlternativeServiceInfos(server);
512 ASSERT_EQ(1u, alternative_service_info_vector.size()); 512 ASSERT_EQ(1u, alternative_service_info_vector.size());
513 EXPECT_EQ(alternative_service_with_foo_hostname, 513 EXPECT_EQ(alternative_service_with_foo_hostname,
514 alternative_service_info_vector[0].alternative_service); 514 alternative_service_info_vector[0].alternative_service());
515 } 515 }
516 516
517 // Regression test for https://crbug.com/516486: 517 // Regression test for https://crbug.com/516486:
518 // GetAlternativeServiceInfos() should remove |alternative_service_map_| 518 // GetAlternativeServiceInfos() should remove |alternative_service_map_|
519 // elements with empty value. 519 // elements with empty value.
520 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVector) { 520 TEST_F(AlternateProtocolServerPropertiesTest, EmptyVector) {
521 url::SchemeHostPort server("https", "foo", 443); 521 url::SchemeHostPort server("https", "foo", 443);
522 const AlternativeService alternative_service(kProtoHTTP2, "bar", 443); 522 const AlternativeService alternative_service(kProtoHTTP2, "bar", 443);
523 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1); 523 base::Time expiration = base::Time::Now() - base::TimeDelta::FromDays(1);
524 const AlternativeServiceInfo alternative_service_info(alternative_service, 524 const AlternativeServiceInfo alternative_service_info(alternative_service,
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 593
594 impl_.SetAlternativeServices( 594 impl_.SetAlternativeServices(
595 canonical_server, 595 canonical_server,
596 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info)); 596 AlternativeServiceInfoVector(/*size=*/1, alternative_service_info));
597 597
598 // Make sure the canonical service is returned for the other server. 598 // Make sure the canonical service is returned for the other server.
599 const AlternativeServiceInfoVector alternative_service_info_vector = 599 const AlternativeServiceInfoVector alternative_service_info_vector =
600 impl_.GetAlternativeServiceInfos(server); 600 impl_.GetAlternativeServiceInfos(server);
601 ASSERT_EQ(1u, alternative_service_info_vector.size()); 601 ASSERT_EQ(1u, alternative_service_info_vector.size());
602 EXPECT_EQ(kProtoQUIC, 602 EXPECT_EQ(kProtoQUIC,
603 alternative_service_info_vector[0].alternative_service.protocol); 603 alternative_service_info_vector[0].alternative_service().protocol);
604 EXPECT_EQ(443, alternative_service_info_vector[0].alternative_service.port); 604 EXPECT_EQ(443, alternative_service_info_vector[0].alternative_service().port);
605 605
606 // Now clear the alternatives for the other server and make sure it stays 606 // Now clear the alternatives for the other server and make sure it stays
607 // cleared. 607 // cleared.
608 // GetAlternativeServices() should remove this key from 608 // GetAlternativeServices() should remove this key from
609 // |alternative_service_map_|, and SetAlternativeServices() should not crash. 609 // |alternative_service_map_|, and SetAlternativeServices() should not crash.
610 impl_.SetAlternativeServices(server, AlternativeServiceInfoVector()); 610 impl_.SetAlternativeServices(server, AlternativeServiceInfoVector());
611 611
612 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(server).empty()); 612 ASSERT_TRUE(impl_.GetAlternativeServiceInfos(server).empty());
613 } 613 }
614 614
615 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfGetAlternativeServiceInfos) { 615 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfGetAlternativeServiceInfos) {
616 url::SchemeHostPort test_server1("http", "foo1", 80); 616 url::SchemeHostPort test_server1("http", "foo1", 80);
617 const AlternativeService alternative_service1(kProtoHTTP2, "foo1", 443); 617 const AlternativeService alternative_service1(kProtoHTTP2, "foo1", 443);
618 SetAlternativeService(test_server1, alternative_service1); 618 SetAlternativeService(test_server1, alternative_service1);
619 url::SchemeHostPort test_server2("http", "foo2", 80); 619 url::SchemeHostPort test_server2("http", "foo2", 80);
620 const AlternativeService alternative_service2(kProtoHTTP2, "foo2", 1234); 620 const AlternativeService alternative_service2(kProtoHTTP2, "foo2", 1234);
621 SetAlternativeService(test_server2, alternative_service2); 621 SetAlternativeService(test_server2, alternative_service2);
622 622
623 const AlternativeServiceMap& map = impl_.alternative_service_map(); 623 const AlternativeServiceMap& map = impl_.alternative_service_map();
624 AlternativeServiceMap::const_iterator it = map.begin(); 624 AlternativeServiceMap::const_iterator it = map.begin();
625 EXPECT_TRUE(it->first.Equals(test_server2)); 625 EXPECT_TRUE(it->first.Equals(test_server2));
626 ASSERT_EQ(1u, it->second.size()); 626 ASSERT_EQ(1u, it->second.size());
627 EXPECT_EQ(alternative_service2, it->second[0].alternative_service); 627 EXPECT_EQ(alternative_service2, it->second[0].alternative_service());
628 628
629 const AlternativeServiceInfoVector alternative_service_info_vector = 629 const AlternativeServiceInfoVector alternative_service_info_vector =
630 impl_.GetAlternativeServiceInfos(test_server1); 630 impl_.GetAlternativeServiceInfos(test_server1);
631 ASSERT_EQ(1u, alternative_service_info_vector.size()); 631 ASSERT_EQ(1u, alternative_service_info_vector.size());
632 EXPECT_EQ(alternative_service1, 632 EXPECT_EQ(alternative_service1,
633 alternative_service_info_vector[0].alternative_service); 633 alternative_service_info_vector[0].alternative_service());
634 634
635 // GetAlternativeServices should reorder the AlternateProtocol map. 635 // GetAlternativeServices should reorder the AlternateProtocol map.
636 it = map.begin(); 636 it = map.begin();
637 EXPECT_TRUE(it->first.Equals(test_server1)); 637 EXPECT_TRUE(it->first.Equals(test_server1));
638 ASSERT_EQ(1u, it->second.size()); 638 ASSERT_EQ(1u, it->second.size());
639 EXPECT_EQ(alternative_service1, it->second[0].alternative_service); 639 EXPECT_EQ(alternative_service1, it->second[0].alternative_service());
640 } 640 }
641 641
642 TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) { 642 TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) {
643 url::SchemeHostPort test_server("http", "foo", 80); 643 url::SchemeHostPort test_server("http", "foo", 80);
644 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); 644 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
645 SetAlternativeService(test_server, alternative_service1); 645 SetAlternativeService(test_server, alternative_service1);
646 AlternativeServiceInfoVector alternative_service_info_vector = 646 AlternativeServiceInfoVector alternative_service_info_vector =
647 impl_.GetAlternativeServiceInfos(test_server); 647 impl_.GetAlternativeServiceInfos(test_server);
648 ASSERT_EQ(1u, alternative_service_info_vector.size()); 648 ASSERT_EQ(1u, alternative_service_info_vector.size());
649 EXPECT_EQ(alternative_service1, 649 EXPECT_EQ(alternative_service1,
650 alternative_service_info_vector[0].alternative_service); 650 alternative_service_info_vector[0].alternative_service());
651 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1)); 651 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service1));
652 652
653 // GetAlternativeServiceInfos should return the broken alternative service. 653 // GetAlternativeServiceInfos should return the broken alternative service.
654 impl_.MarkAlternativeServiceBroken(alternative_service1); 654 impl_.MarkAlternativeServiceBroken(alternative_service1);
655 alternative_service_info_vector = 655 alternative_service_info_vector =
656 impl_.GetAlternativeServiceInfos(test_server); 656 impl_.GetAlternativeServiceInfos(test_server);
657 ASSERT_EQ(1u, alternative_service_info_vector.size()); 657 ASSERT_EQ(1u, alternative_service_info_vector.size());
658 EXPECT_EQ(alternative_service1, 658 EXPECT_EQ(alternative_service1,
659 alternative_service_info_vector[0].alternative_service); 659 alternative_service_info_vector[0].alternative_service());
660 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); 660 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
661 661
662 // SetAlternativeServices should add a broken alternative service to the map. 662 // SetAlternativeServices should add a broken alternative service to the map.
663 AlternativeServiceInfoVector alternative_service_info_vector2; 663 AlternativeServiceInfoVector alternative_service_info_vector2;
664 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 664 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
665 alternative_service_info_vector2.push_back( 665 alternative_service_info_vector2.push_back(
666 AlternativeServiceInfo(alternative_service1, expiration)); 666 AlternativeServiceInfo(alternative_service1, expiration));
667 const AlternativeService alternative_service2(kProtoHTTP2, "foo", 1234); 667 const AlternativeService alternative_service2(kProtoHTTP2, "foo", 1234);
668 alternative_service_info_vector2.push_back( 668 alternative_service_info_vector2.push_back(
669 AlternativeServiceInfo(alternative_service2, expiration)); 669 AlternativeServiceInfo(alternative_service2, expiration));
670 impl_.SetAlternativeServices(test_server, alternative_service_info_vector2); 670 impl_.SetAlternativeServices(test_server, alternative_service_info_vector2);
671 alternative_service_info_vector = 671 alternative_service_info_vector =
672 impl_.GetAlternativeServiceInfos(test_server); 672 impl_.GetAlternativeServiceInfos(test_server);
673 ASSERT_EQ(2u, alternative_service_info_vector.size()); 673 ASSERT_EQ(2u, alternative_service_info_vector.size());
674 EXPECT_EQ(alternative_service1, 674 EXPECT_EQ(alternative_service1,
675 alternative_service_info_vector[0].alternative_service); 675 alternative_service_info_vector[0].alternative_service());
676 EXPECT_EQ(alternative_service2, 676 EXPECT_EQ(alternative_service2,
677 alternative_service_info_vector[1].alternative_service); 677 alternative_service_info_vector[1].alternative_service());
678 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); 678 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
679 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2)); 679 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2));
680 680
681 // SetAlternativeService should add a broken alternative service to the map. 681 // SetAlternativeService should add a broken alternative service to the map.
682 SetAlternativeService(test_server, alternative_service1); 682 SetAlternativeService(test_server, alternative_service1);
683 alternative_service_info_vector = 683 alternative_service_info_vector =
684 impl_.GetAlternativeServiceInfos(test_server); 684 impl_.GetAlternativeServiceInfos(test_server);
685 ASSERT_EQ(1u, alternative_service_info_vector.size()); 685 ASSERT_EQ(1u, alternative_service_info_vector.size());
686 EXPECT_EQ(alternative_service1, 686 EXPECT_EQ(alternative_service1,
687 alternative_service_info_vector[0].alternative_service); 687 alternative_service_info_vector[0].alternative_service());
688 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); 688 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1));
689 } 689 }
690 690
691 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) { 691 TEST_F(AlternateProtocolServerPropertiesTest, MaxAge) {
692 AlternativeServiceInfoVector alternative_service_info_vector; 692 AlternativeServiceInfoVector alternative_service_info_vector;
693 base::Time now = base::Time::Now(); 693 base::Time now = base::Time::Now();
694 base::TimeDelta one_day = base::TimeDelta::FromDays(1); 694 base::TimeDelta one_day = base::TimeDelta::FromDays(1);
695 695
696 // First alternative service expired one day ago, should not be returned by 696 // First alternative service expired one day ago, should not be returned by
697 // GetAlternativeServiceInfos(). 697 // GetAlternativeServiceInfos().
698 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); 698 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
699 alternative_service_info_vector.push_back( 699 alternative_service_info_vector.push_back(
700 AlternativeServiceInfo(alternative_service1, now - one_day)); 700 AlternativeServiceInfo(alternative_service1, now - one_day));
701 701
702 // Second alterrnative service will expire one day from now, should be 702 // Second alterrnative service will expire one day from now, should be
703 // returned by GetAlternativeSerices(). 703 // returned by GetAlternativeSerices().
704 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); 704 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234);
705 alternative_service_info_vector.push_back( 705 alternative_service_info_vector.push_back(
706 AlternativeServiceInfo(alternative_service2, now + one_day)); 706 AlternativeServiceInfo(alternative_service2, now + one_day));
707 707
708 url::SchemeHostPort test_server("http", "foo", 80); 708 url::SchemeHostPort test_server("http", "foo", 80);
709 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); 709 impl_.SetAlternativeServices(test_server, alternative_service_info_vector);
710 710
711 AlternativeServiceInfoVector alternative_service_info_vector2 = 711 AlternativeServiceInfoVector alternative_service_info_vector2 =
712 impl_.GetAlternativeServiceInfos(test_server); 712 impl_.GetAlternativeServiceInfos(test_server);
713 ASSERT_EQ(1u, alternative_service_info_vector2.size()); 713 ASSERT_EQ(1u, alternative_service_info_vector2.size());
714 EXPECT_EQ(alternative_service2, 714 EXPECT_EQ(alternative_service2,
715 alternative_service_info_vector2[0].alternative_service); 715 alternative_service_info_vector2[0].alternative_service());
716 } 716 }
717 717
718 TEST_F(AlternateProtocolServerPropertiesTest, MaxAgeCanonical) { 718 TEST_F(AlternateProtocolServerPropertiesTest, MaxAgeCanonical) {
719 AlternativeServiceInfoVector alternative_service_info_vector; 719 AlternativeServiceInfoVector alternative_service_info_vector;
720 base::Time now = base::Time::Now(); 720 base::Time now = base::Time::Now();
721 base::TimeDelta one_day = base::TimeDelta::FromDays(1); 721 base::TimeDelta one_day = base::TimeDelta::FromDays(1);
722 722
723 // First alternative service expired one day ago, should not be returned by 723 // First alternative service expired one day ago, should not be returned by
724 // GetAlternativeServiceInfos(). 724 // GetAlternativeServiceInfos().
725 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); 725 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
726 alternative_service_info_vector.push_back( 726 alternative_service_info_vector.push_back(
727 AlternativeServiceInfo(alternative_service1, now - one_day)); 727 AlternativeServiceInfo(alternative_service1, now - one_day));
728 728
729 // Second alterrnative service will expire one day from now, should be 729 // Second alterrnative service will expire one day from now, should be
730 // returned by GetAlternativeSerices(). 730 // returned by GetAlternativeSerices().
731 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); 731 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234);
732 alternative_service_info_vector.push_back( 732 alternative_service_info_vector.push_back(
733 AlternativeServiceInfo(alternative_service2, now + one_day)); 733 AlternativeServiceInfo(alternative_service2, now + one_day));
734 734
735 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); 735 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443);
736 impl_.SetAlternativeServices(canonical_server, 736 impl_.SetAlternativeServices(canonical_server,
737 alternative_service_info_vector); 737 alternative_service_info_vector);
738 738
739 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); 739 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443);
740 AlternativeServiceInfoVector alternative_service_info_vector2 = 740 AlternativeServiceInfoVector alternative_service_info_vector2 =
741 impl_.GetAlternativeServiceInfos(test_server); 741 impl_.GetAlternativeServiceInfos(test_server);
742 ASSERT_EQ(1u, alternative_service_info_vector2.size()); 742 ASSERT_EQ(1u, alternative_service_info_vector2.size());
743 EXPECT_EQ(alternative_service2, 743 EXPECT_EQ(alternative_service2,
744 alternative_service_info_vector2[0].alternative_service); 744 alternative_service_info_vector2[0].alternative_service());
745 } 745 }
746 746
747 TEST_F(AlternateProtocolServerPropertiesTest, AlternativeServiceWithScheme) { 747 TEST_F(AlternateProtocolServerPropertiesTest, AlternativeServiceWithScheme) {
748 AlternativeServiceInfoVector alternative_service_info_vector; 748 AlternativeServiceInfoVector alternative_service_info_vector;
749 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443); 749 const AlternativeService alternative_service1(kProtoHTTP2, "foo", 443);
750 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 750 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
751 alternative_service_info_vector.push_back( 751 alternative_service_info_vector.push_back(
752 AlternativeServiceInfo(alternative_service1, expiration)); 752 AlternativeServiceInfo(alternative_service1, expiration));
753 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); 753 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234);
754 alternative_service_info_vector.push_back( 754 alternative_service_info_vector.push_back(
755 AlternativeServiceInfo(alternative_service2, expiration)); 755 AlternativeServiceInfo(alternative_service2, expiration));
756 // Set Alt-Svc list for |http_server|. 756 // Set Alt-Svc list for |http_server|.
757 url::SchemeHostPort http_server("http", "foo", 80); 757 url::SchemeHostPort http_server("http", "foo", 80);
758 impl_.SetAlternativeServices(http_server, alternative_service_info_vector); 758 impl_.SetAlternativeServices(http_server, alternative_service_info_vector);
759 759
760 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); 760 const net::AlternativeServiceMap& map = impl_.alternative_service_map();
761 net::AlternativeServiceMap::const_iterator it = map.begin(); 761 net::AlternativeServiceMap::const_iterator it = map.begin();
762 EXPECT_TRUE(it->first.Equals(http_server)); 762 EXPECT_TRUE(it->first.Equals(http_server));
763 ASSERT_EQ(2u, it->second.size()); 763 ASSERT_EQ(2u, it->second.size());
764 EXPECT_EQ(alternative_service1, it->second[0].alternative_service); 764 EXPECT_EQ(alternative_service1, it->second[0].alternative_service());
765 EXPECT_EQ(alternative_service2, it->second[1].alternative_service); 765 EXPECT_EQ(alternative_service2, it->second[1].alternative_service());
766 766
767 // Check Alt-Svc list should not be set for |https_server|. 767 // Check Alt-Svc list should not be set for |https_server|.
768 url::SchemeHostPort https_server("https", "foo", 80); 768 url::SchemeHostPort https_server("https", "foo", 80);
769 EXPECT_EQ(0u, impl_.GetAlternativeServiceInfos(https_server).size()); 769 EXPECT_EQ(0u, impl_.GetAlternativeServiceInfos(https_server).size());
770 770
771 // Set Alt-Svc list for |https_server|. 771 // Set Alt-Svc list for |https_server|.
772 impl_.SetAlternativeServices(https_server, alternative_service_info_vector); 772 impl_.SetAlternativeServices(https_server, alternative_service_info_vector);
773 EXPECT_EQ(2u, impl_.GetAlternativeServiceInfos(https_server).size()); 773 EXPECT_EQ(2u, impl_.GetAlternativeServiceInfos(https_server).size());
774 EXPECT_EQ(2u, impl_.GetAlternativeServiceInfos(http_server).size()); 774 EXPECT_EQ(2u, impl_.GetAlternativeServiceInfos(http_server).size());
775 775
(...skipping 13 matching lines...) Expand all
789 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234); 789 const AlternativeService alternative_service2(kProtoHTTP2, "bar", 1234);
790 alternative_service_info_vector.push_back( 790 alternative_service_info_vector.push_back(
791 AlternativeServiceInfo(alternative_service2, expiration)); 791 AlternativeServiceInfo(alternative_service2, expiration));
792 url::SchemeHostPort test_server("http", "foo", 80); 792 url::SchemeHostPort test_server("http", "foo", 80);
793 impl_.SetAlternativeServices(test_server, alternative_service_info_vector); 793 impl_.SetAlternativeServices(test_server, alternative_service_info_vector);
794 794
795 const net::AlternativeServiceMap& map = impl_.alternative_service_map(); 795 const net::AlternativeServiceMap& map = impl_.alternative_service_map();
796 net::AlternativeServiceMap::const_iterator it = map.begin(); 796 net::AlternativeServiceMap::const_iterator it = map.begin();
797 EXPECT_TRUE(it->first.Equals(test_server)); 797 EXPECT_TRUE(it->first.Equals(test_server));
798 ASSERT_EQ(2u, it->second.size()); 798 ASSERT_EQ(2u, it->second.size());
799 EXPECT_EQ(alternative_service1, it->second[0].alternative_service); 799 EXPECT_EQ(alternative_service1, it->second[0].alternative_service());
800 EXPECT_EQ(alternative_service2, it->second[1].alternative_service); 800 EXPECT_EQ(alternative_service2, it->second[1].alternative_service());
801 801
802 impl_.SetAlternativeServices(test_server, AlternativeServiceInfoVector()); 802 impl_.SetAlternativeServices(test_server, AlternativeServiceInfoVector());
803 EXPECT_TRUE(map.empty()); 803 EXPECT_TRUE(map.empty());
804 } 804 }
805 805
806 // A broken alternative service in the mapping carries meaningful information, 806 // A broken alternative service in the mapping carries meaningful information,
807 // therefore it should not be ignored by SetAlternativeService(). In 807 // therefore it should not be ignored by SetAlternativeService(). In
808 // particular, an alternative service mapped to an origin shadows alternative 808 // particular, an alternative service mapped to an origin shadows alternative
809 // services of canonical hosts. 809 // services of canonical hosts.
810 TEST_F(AlternateProtocolServerPropertiesTest, BrokenShadowsCanonical) { 810 TEST_F(AlternateProtocolServerPropertiesTest, BrokenShadowsCanonical) {
811 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); 811 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443);
812 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); 812 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443);
813 AlternativeService canonical_alternative_service(kProtoQUIC, 813 AlternativeService canonical_alternative_service(kProtoQUIC,
814 "bar.c.youtube.com", 1234); 814 "bar.c.youtube.com", 1234);
815 SetAlternativeService(canonical_server, canonical_alternative_service); 815 SetAlternativeService(canonical_server, canonical_alternative_service);
816 AlternativeServiceInfoVector alternative_service_info_vector = 816 AlternativeServiceInfoVector alternative_service_info_vector =
817 impl_.GetAlternativeServiceInfos(test_server); 817 impl_.GetAlternativeServiceInfos(test_server);
818 ASSERT_EQ(1u, alternative_service_info_vector.size()); 818 ASSERT_EQ(1u, alternative_service_info_vector.size());
819 EXPECT_EQ(canonical_alternative_service, 819 EXPECT_EQ(canonical_alternative_service,
820 alternative_service_info_vector[0].alternative_service); 820 alternative_service_info_vector[0].alternative_service());
821 821
822 const AlternativeService broken_alternative_service(kProtoHTTP2, "foo", 443); 822 const AlternativeService broken_alternative_service(kProtoHTTP2, "foo", 443);
823 impl_.MarkAlternativeServiceBroken(broken_alternative_service); 823 impl_.MarkAlternativeServiceBroken(broken_alternative_service);
824 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service)); 824 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service));
825 825
826 SetAlternativeService(test_server, broken_alternative_service); 826 SetAlternativeService(test_server, broken_alternative_service);
827 alternative_service_info_vector = 827 alternative_service_info_vector =
828 impl_.GetAlternativeServiceInfos(test_server); 828 impl_.GetAlternativeServiceInfos(test_server);
829 ASSERT_EQ(1u, alternative_service_info_vector.size()); 829 ASSERT_EQ(1u, alternative_service_info_vector.size());
830 EXPECT_EQ(broken_alternative_service, 830 EXPECT_EQ(broken_alternative_service,
831 alternative_service_info_vector[0].alternative_service); 831 alternative_service_info_vector[0].alternative_service());
832 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service)); 832 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(broken_alternative_service));
833 } 833 }
834 834
835 TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) { 835 TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) {
836 url::SchemeHostPort test_server("http", "foo", 80); 836 url::SchemeHostPort test_server("http", "foo", 80);
837 const AlternativeService alternative_service(kProtoHTTP2, "foo", 443); 837 const AlternativeService alternative_service(kProtoHTTP2, "foo", 443);
838 SetAlternativeService(test_server, alternative_service); 838 SetAlternativeService(test_server, alternative_service);
839 impl_.MarkAlternativeServiceBroken(alternative_service); 839 impl_.MarkAlternativeServiceBroken(alternative_service);
840 ASSERT_TRUE(HasAlternativeService(test_server)); 840 ASSERT_TRUE(HasAlternativeService(test_server));
841 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); 841 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 AlternativeServiceInfo(canonical_alternative_service2, expiration)); 880 AlternativeServiceInfo(canonical_alternative_service2, expiration));
881 impl_.SetAlternativeServices(canonical_server, 881 impl_.SetAlternativeServices(canonical_server,
882 alternative_service_info_vector); 882 alternative_service_info_vector);
883 883
884 // Since |test_server| does not have an alternative service itself, 884 // Since |test_server| does not have an alternative service itself,
885 // GetAlternativeServiceInfos should return those of |canonical_server|. 885 // GetAlternativeServiceInfos should return those of |canonical_server|.
886 AlternativeServiceInfoVector alternative_service_info_vector2 = 886 AlternativeServiceInfoVector alternative_service_info_vector2 =
887 impl_.GetAlternativeServiceInfos(test_server); 887 impl_.GetAlternativeServiceInfos(test_server);
888 ASSERT_EQ(2u, alternative_service_info_vector2.size()); 888 ASSERT_EQ(2u, alternative_service_info_vector2.size());
889 EXPECT_EQ(canonical_alternative_service1, 889 EXPECT_EQ(canonical_alternative_service1,
890 alternative_service_info_vector2[0].alternative_service); 890 alternative_service_info_vector2[0].alternative_service());
891 891
892 // Since |canonical_alternative_service2| has an empty host, 892 // Since |canonical_alternative_service2| has an empty host,
893 // GetAlternativeServiceInfos should substitute the hostname of its |origin| 893 // GetAlternativeServiceInfos should substitute the hostname of its |origin|
894 // argument. 894 // argument.
895 EXPECT_EQ(test_server.host(), 895 EXPECT_EQ(test_server.host(),
896 alternative_service_info_vector2[1].alternative_service.host); 896 alternative_service_info_vector2[1].alternative_service().host);
897 EXPECT_EQ(canonical_alternative_service2.protocol, 897 EXPECT_EQ(canonical_alternative_service2.protocol,
898 alternative_service_info_vector2[1].alternative_service.protocol); 898 alternative_service_info_vector2[1].alternative_service().protocol);
899 EXPECT_EQ(canonical_alternative_service2.port, 899 EXPECT_EQ(canonical_alternative_service2.port,
900 alternative_service_info_vector2[1].alternative_service.port); 900 alternative_service_info_vector2[1].alternative_service().port);
901 901
902 // Verify the canonical suffix. 902 // Verify the canonical suffix.
903 EXPECT_EQ(".c.youtube.com", *impl_.GetCanonicalSuffix(test_server.host())); 903 EXPECT_EQ(".c.youtube.com", *impl_.GetCanonicalSuffix(test_server.host()));
904 EXPECT_EQ(".c.youtube.com", 904 EXPECT_EQ(".c.youtube.com",
905 *impl_.GetCanonicalSuffix(canonical_server.host())); 905 *impl_.GetCanonicalSuffix(canonical_server.host()));
906 } 906 }
907 907
908 TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) { 908 TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) {
909 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); 909 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443);
910 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); 910 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443);
(...skipping 21 matching lines...) Expand all
932 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalOverride) { 932 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalOverride) {
933 url::SchemeHostPort foo_server("https", "foo.c.youtube.com", 443); 933 url::SchemeHostPort foo_server("https", "foo.c.youtube.com", 443);
934 url::SchemeHostPort bar_server("https", "bar.c.youtube.com", 443); 934 url::SchemeHostPort bar_server("https", "bar.c.youtube.com", 443);
935 AlternativeService bar_alternative_service(kProtoQUIC, "bar.c.youtube.com", 935 AlternativeService bar_alternative_service(kProtoQUIC, "bar.c.youtube.com",
936 1234); 936 1234);
937 SetAlternativeService(bar_server, bar_alternative_service); 937 SetAlternativeService(bar_server, bar_alternative_service);
938 AlternativeServiceInfoVector alternative_service_info_vector = 938 AlternativeServiceInfoVector alternative_service_info_vector =
939 impl_.GetAlternativeServiceInfos(foo_server); 939 impl_.GetAlternativeServiceInfos(foo_server);
940 ASSERT_EQ(1u, alternative_service_info_vector.size()); 940 ASSERT_EQ(1u, alternative_service_info_vector.size());
941 EXPECT_EQ(bar_alternative_service, 941 EXPECT_EQ(bar_alternative_service,
942 alternative_service_info_vector[0].alternative_service); 942 alternative_service_info_vector[0].alternative_service());
943 943
944 url::SchemeHostPort qux_server("https", "qux.c.youtube.com", 443); 944 url::SchemeHostPort qux_server("https", "qux.c.youtube.com", 443);
945 AlternativeService qux_alternative_service(kProtoQUIC, "qux.c.youtube.com", 945 AlternativeService qux_alternative_service(kProtoQUIC, "qux.c.youtube.com",
946 443); 946 443);
947 SetAlternativeService(qux_server, qux_alternative_service); 947 SetAlternativeService(qux_server, qux_alternative_service);
948 alternative_service_info_vector = 948 alternative_service_info_vector =
949 impl_.GetAlternativeServiceInfos(foo_server); 949 impl_.GetAlternativeServiceInfos(foo_server);
950 ASSERT_EQ(1u, alternative_service_info_vector.size()); 950 ASSERT_EQ(1u, alternative_service_info_vector.size());
951 EXPECT_EQ(qux_alternative_service, 951 EXPECT_EQ(qux_alternative_service,
952 alternative_service_info_vector[0].alternative_service); 952 alternative_service_info_vector[0].alternative_service());
953 } 953 }
954 954
955 TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) { 955 TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) {
956 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443); 956 url::SchemeHostPort test_server("https", "foo.c.youtube.com", 443);
957 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443); 957 url::SchemeHostPort canonical_server("https", "bar.c.youtube.com", 443);
958 AlternativeService canonical_alternative_service(kProtoQUIC, 958 AlternativeService canonical_alternative_service(kProtoQUIC,
959 "bar.c.youtube.com", 1234); 959 "bar.c.youtube.com", 1234);
960 960
961 SetAlternativeService(canonical_server, canonical_alternative_service); 961 SetAlternativeService(canonical_server, canonical_alternative_service);
962 impl_.Clear(); 962 impl_.Clear();
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
1328 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id))); 1328 EXPECT_EQ(quic_server_info1, *(impl_.GetQuicServerInfo(quic_server_id)));
1329 1329
1330 impl_.Clear(); 1330 impl_.Clear();
1331 EXPECT_EQ(0u, impl_.quic_server_info_map().size()); 1331 EXPECT_EQ(0u, impl_.quic_server_info_map().size());
1332 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id)); 1332 EXPECT_EQ(nullptr, impl_.GetQuicServerInfo(quic_server_id));
1333 } 1333 }
1334 1334
1335 } // namespace 1335 } // namespace
1336 1336
1337 } // namespace net 1337 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_server_properties_impl.cc ('k') | net/http/http_server_properties_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698