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

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

Issue 2585823003: Enforce check on how many pref updates and cache updates are called in http_server_properties_manag… (Closed)
Patch Set: fix Created 4 years 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_manager.h" 5 #include "net/http/http_server_properties_manager.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 14 matching lines...) Expand all
25 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
26 #include "url/gurl.h" 26 #include "url/gurl.h"
27 27
28 namespace net { 28 namespace net {
29 29
30 namespace { 30 namespace {
31 31
32 using base::StringPrintf; 32 using base::StringPrintf;
33 using base::TestMockTimeTaskRunner; 33 using base::TestMockTimeTaskRunner;
34 using ::testing::_; 34 using ::testing::_;
35 using ::testing::AtLeast;
35 using ::testing::Invoke; 36 using ::testing::Invoke;
36 using ::testing::Mock; 37 using ::testing::Mock;
37 using ::testing::StrictMock; 38 using ::testing::StrictMock;
38 39
39 class MockPrefDelegate : public net::HttpServerPropertiesManager::PrefDelegate { 40 class MockPrefDelegate : public net::HttpServerPropertiesManager::PrefDelegate {
40 public: 41 public:
41 MockPrefDelegate() {} 42 MockPrefDelegate() {}
42 ~MockPrefDelegate() override {} 43 ~MockPrefDelegate() override {}
43 44
44 // HttpServerPropertiesManager::PrefDelegate implementation. 45 // HttpServerPropertiesManager::PrefDelegate implementation.
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 } 207 }
207 208
208 void ExpectScheduleUpdatePrefsOnNetworkThread() { 209 void ExpectScheduleUpdatePrefsOnNetworkThread() {
209 EXPECT_CALL(*http_server_props_manager_, 210 EXPECT_CALL(*http_server_props_manager_,
210 ScheduleUpdatePrefsOnNetworkThread(_)) 211 ScheduleUpdatePrefsOnNetworkThread(_))
211 .WillOnce(Invoke(http_server_props_manager_.get(), 212 .WillOnce(Invoke(http_server_props_manager_.get(),
212 &TestingHttpServerPropertiesManager:: 213 &TestingHttpServerPropertiesManager::
213 ScheduleUpdatePrefsOnNetworkThreadConcrete)); 214 ScheduleUpdatePrefsOnNetworkThreadConcrete));
214 } 215 }
215 216
216 void ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly() { 217 void ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(int times) {
217 EXPECT_CALL(*http_server_props_manager_, 218 EXPECT_CALL(*http_server_props_manager_,
218 ScheduleUpdatePrefsOnNetworkThread(_)) 219 ScheduleUpdatePrefsOnNetworkThread(_))
220 .Times(AtLeast(times))
219 .WillRepeatedly(Invoke(http_server_props_manager_.get(), 221 .WillRepeatedly(Invoke(http_server_props_manager_.get(),
220 &TestingHttpServerPropertiesManager:: 222 &TestingHttpServerPropertiesManager::
221 ScheduleUpdatePrefsOnNetworkThreadConcrete)); 223 ScheduleUpdatePrefsOnNetworkThreadConcrete));
222 } 224 }
223 225
224 void ExpectPrefsUpdate() { 226 void ExpectPrefsUpdate(int times) {
225 EXPECT_CALL(*http_server_props_manager_, 227 EXPECT_CALL(*http_server_props_manager_,
226 UpdatePrefsFromCacheOnNetworkThread(_)) 228 UpdatePrefsFromCacheOnNetworkThread(_))
227 .WillOnce(Invoke(http_server_props_manager_.get(), 229 .Times(times)
228 &TestingHttpServerPropertiesManager::
229 UpdatePrefsFromCacheOnNetworkThreadConcrete));
230 }
231
232 void ExpectPrefsUpdateRepeatedly() {
233 EXPECT_CALL(*http_server_props_manager_,
234 UpdatePrefsFromCacheOnNetworkThread(_))
235 .WillRepeatedly( 230 .WillRepeatedly(
236 Invoke(http_server_props_manager_.get(), 231 Invoke(http_server_props_manager_.get(),
237 &TestingHttpServerPropertiesManager:: 232 &TestingHttpServerPropertiesManager::
238 UpdatePrefsFromCacheOnNetworkThreadConcrete)); 233 UpdatePrefsFromCacheOnNetworkThreadConcrete));
239 } 234 }
240 235
241 bool HasAlternativeService(const url::SchemeHostPort& server) { 236 bool HasAlternativeService(const url::SchemeHostPort& server) {
242 const AlternativeServiceVector alternative_service_vector = 237 const AlternativeServiceVector alternative_service_vector =
243 http_server_props_manager_->GetAlternativeServices(server); 238 http_server_props_manager_->GetAlternativeServices(server);
244 return !alternative_service_vector.empty(); 239 return !alternative_service_vector.empty();
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 EXPECT_EQ(quic_server_info2, *http_server_props_manager_->GetQuicServerInfo( 475 EXPECT_EQ(quic_server_info2, *http_server_props_manager_->GetQuicServerInfo(
481 mail_quic_server_id)); 476 mail_quic_server_id));
482 EXPECT_EQ(quic_server_info3, *http_server_props_manager_->GetQuicServerInfo( 477 EXPECT_EQ(quic_server_info3, *http_server_props_manager_->GetQuicServerInfo(
483 play_quic_server_id)); 478 play_quic_server_id));
484 */ 479 */
485 } 480 }
486 481
487 TEST_P(HttpServerPropertiesManagerTest, BadCachedHostPortPair) { 482 TEST_P(HttpServerPropertiesManagerTest, BadCachedHostPortPair) {
488 ExpectCacheUpdate(); 483 ExpectCacheUpdate();
489 // The prefs are automatically updated in the case corruption is detected. 484 // The prefs are automatically updated in the case corruption is detected.
490 ExpectPrefsUpdate(); 485 ExpectPrefsUpdate(1);
491 ExpectScheduleUpdatePrefsOnNetworkThread(); 486 ExpectScheduleUpdatePrefsOnNetworkThread();
492 487
493 base::DictionaryValue* server_pref_dict = new base::DictionaryValue; 488 base::DictionaryValue* server_pref_dict = new base::DictionaryValue;
494 489
495 // Set supports_spdy for www.google.com:65536. 490 // Set supports_spdy for www.google.com:65536.
496 server_pref_dict->SetBoolean("supports_spdy", true); 491 server_pref_dict->SetBoolean("supports_spdy", true);
497 492
498 // Set up alternative_service for www.google.com:65536. 493 // Set up alternative_service for www.google.com:65536.
499 std::unique_ptr<base::DictionaryValue> alternative_service_dict( 494 std::unique_ptr<base::DictionaryValue> alternative_service_dict(
500 new base::DictionaryValue); 495 new base::DictionaryValue);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 EXPECT_FALSE(HasAlternativeService(gooler_server)); 565 EXPECT_FALSE(HasAlternativeService(gooler_server));
571 const ServerNetworkStats* stats1 = 566 const ServerNetworkStats* stats1 =
572 http_server_props_manager_->GetServerNetworkStats(gooler_server); 567 http_server_props_manager_->GetServerNetworkStats(gooler_server);
573 EXPECT_EQ(nullptr, stats1); 568 EXPECT_EQ(nullptr, stats1);
574 EXPECT_EQ(0u, http_server_props_manager_->quic_server_info_map().size()); 569 EXPECT_EQ(0u, http_server_props_manager_->quic_server_info_map().size());
575 } 570 }
576 571
577 TEST_P(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) { 572 TEST_P(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) {
578 ExpectCacheUpdate(); 573 ExpectCacheUpdate();
579 // The prefs are automatically updated in the case corruption is detected. 574 // The prefs are automatically updated in the case corruption is detected.
580 ExpectPrefsUpdate(); 575 ExpectPrefsUpdate(1);
581 ExpectScheduleUpdatePrefsOnNetworkThread(); 576 ExpectScheduleUpdatePrefsOnNetworkThread();
582 577
583 base::DictionaryValue* server_pref_dict = new base::DictionaryValue; 578 base::DictionaryValue* server_pref_dict = new base::DictionaryValue;
584 579
585 // Set supports_spdy for www.google.com:80. 580 // Set supports_spdy for www.google.com:80.
586 server_pref_dict->SetBoolean("supports_spdy", true); 581 server_pref_dict->SetBoolean("supports_spdy", true);
587 582
588 // Set up alternative_service for www.google.com:80. 583 // Set up alternative_service for www.google.com:80.
589 std::unique_ptr<base::DictionaryValue> alternative_service_dict( 584 std::unique_ptr<base::DictionaryValue> alternative_service_dict(
590 new base::DictionaryValue); 585 new base::DictionaryValue);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 626 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
632 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 627 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
633 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 628 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
634 629
635 // Verify alternative service is not set. 630 // Verify alternative service is not set.
636 EXPECT_FALSE( 631 EXPECT_FALSE(
637 HasAlternativeService(url::SchemeHostPort("http", "www.google.com", 80))); 632 HasAlternativeService(url::SchemeHostPort("http", "www.google.com", 80)));
638 } 633 }
639 634
640 TEST_P(HttpServerPropertiesManagerTest, SupportsSpdy) { 635 TEST_P(HttpServerPropertiesManagerTest, SupportsSpdy) {
641 ExpectPrefsUpdate(); 636 ExpectPrefsUpdate(1);
642 ExpectScheduleUpdatePrefsOnNetworkThread(); 637 ExpectScheduleUpdatePrefsOnNetworkThread();
643 638
644 // Post an update task to the network thread. SetSupportsSpdy calls 639 // Post an update task to the network thread. SetSupportsSpdy calls
645 // ScheduleUpdatePrefsOnNetworkThread. 640 // ScheduleUpdatePrefsOnNetworkThread.
646 641
647 // Add mail.google.com:443 as a supporting spdy server. 642 // Add mail.google.com:443 as a supporting spdy server.
648 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); 643 url::SchemeHostPort spdy_server("https", "mail.google.com", 443);
649 EXPECT_FALSE( 644 EXPECT_FALSE(
650 http_server_props_manager_->SupportsRequestPriority(spdy_server)); 645 http_server_props_manager_->SupportsRequestPriority(spdy_server));
651 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); 646 http_server_props_manager_->SetSupportsSpdy(spdy_server, true);
(...skipping 11 matching lines...) Expand all
663 658
664 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server)); 659 EXPECT_TRUE(http_server_props_manager_->SupportsRequestPriority(spdy_server));
665 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 660 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
666 } 661 }
667 662
668 // Regression test for crbug.com/670519. Test that there is only one pref update 663 // Regression test for crbug.com/670519. Test that there is only one pref update
669 // scheduled if multiple updates happen in a given time period. Subsequent pref 664 // scheduled if multiple updates happen in a given time period. Subsequent pref
670 // update could also be scheduled once the previous scheduled update is 665 // update could also be scheduled once the previous scheduled update is
671 // completed. 666 // completed.
672 TEST_P(HttpServerPropertiesManagerTest, 667 TEST_P(HttpServerPropertiesManagerTest,
673 SinglePrefUpdateForTwoSpdyServerCacheChangese) { 668 SinglePrefUpdateForTwoSpdyServerCacheChanges) {
674 http_server_props_manager_->set_pref_update_delay( 669 http_server_props_manager_->set_pref_update_delay(
675 base::TimeDelta::FromMilliseconds(60)); 670 base::TimeDelta::FromMilliseconds(60));
676 ExpectPrefsUpdateRepeatedly(); 671 ExpectPrefsUpdate(2);
677 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); 672 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(3);
678 673
679 // Post an update task to the network thread. SetSupportsSpdy calls 674 // Post an update task to the network thread. SetSupportsSpdy calls
680 // ScheduleUpdatePrefsOnNetworkThread with a delay of 60ms. 675 // ScheduleUpdatePrefsOnNetworkThread with a delay of 60ms.
681 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); 676 url::SchemeHostPort spdy_server("https", "mail.google.com", 443);
682 EXPECT_FALSE( 677 EXPECT_FALSE(
683 http_server_props_manager_->SupportsRequestPriority(spdy_server)); 678 http_server_props_manager_->SupportsRequestPriority(spdy_server));
684 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); 679 http_server_props_manager_->SetSupportsSpdy(spdy_server, true);
685 // The pref update task should be scheduled to network thread. 680 // The pref update task should be scheduled to network thread.
686 EXPECT_EQ(1u, net_test_task_runner_->GetPendingTaskCount()); 681 EXPECT_EQ(1u, net_test_task_runner_->GetPendingTaskCount());
687 682
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 716 net_test_task_runner_->FastForwardUntilNoTasksRemain();
722 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); 717 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask());
723 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 718 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
724 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 719 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
725 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 720 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
726 721
727 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 722 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
728 } 723 }
729 724
730 TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServices) { 725 TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServices) {
731 ExpectPrefsUpdate(); 726 ExpectPrefsUpdate(1);
732 ExpectScheduleUpdatePrefsOnNetworkThread(); 727 ExpectScheduleUpdatePrefsOnNetworkThread();
733 728
734 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); 729 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80);
735 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); 730 EXPECT_FALSE(HasAlternativeService(spdy_server_mail));
736 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", 731 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com",
737 443); 732 443);
738 http_server_props_manager_->SetAlternativeService( 733 http_server_props_manager_->SetAlternativeService(
739 spdy_server_mail, alternative_service, one_day_from_now_); 734 spdy_server_mail, alternative_service, one_day_from_now_);
740 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. 735 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once.
741 http_server_props_manager_->SetAlternativeService( 736 http_server_props_manager_->SetAlternativeService(
(...skipping 10 matching lines...) Expand all
752 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 747 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
753 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 748 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
754 749
755 AlternativeServiceVector alternative_service_vector = 750 AlternativeServiceVector alternative_service_vector =
756 http_server_props_manager_->GetAlternativeServices(spdy_server_mail); 751 http_server_props_manager_->GetAlternativeServices(spdy_server_mail);
757 ASSERT_EQ(1u, alternative_service_vector.size()); 752 ASSERT_EQ(1u, alternative_service_vector.size());
758 EXPECT_EQ(alternative_service, alternative_service_vector[0]); 753 EXPECT_EQ(alternative_service, alternative_service_vector[0]);
759 } 754 }
760 755
761 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServices) { 756 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServices) {
762 ExpectPrefsUpdate(); 757 ExpectPrefsUpdate(1);
763 ExpectScheduleUpdatePrefsOnNetworkThread(); 758 ExpectScheduleUpdatePrefsOnNetworkThread();
764 759
765 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); 760 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80);
766 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); 761 EXPECT_FALSE(HasAlternativeService(spdy_server_mail));
767 AlternativeServiceInfoVector alternative_service_info_vector; 762 AlternativeServiceInfoVector alternative_service_info_vector;
768 const AlternativeService alternative_service1(kProtoHTTP2, "mail.google.com", 763 const AlternativeService alternative_service1(kProtoHTTP2, "mail.google.com",
769 443); 764 443);
770 alternative_service_info_vector.push_back( 765 alternative_service_info_vector.push_back(
771 AlternativeServiceInfo(alternative_service1, one_day_from_now_)); 766 AlternativeServiceInfo(alternative_service1, one_day_from_now_));
772 const AlternativeService alternative_service2(kProtoQUIC, "mail.google.com", 767 const AlternativeService alternative_service2(kProtoQUIC, "mail.google.com",
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 802
808 // ExpectScheduleUpdatePrefsOnNetworkThread() should not be called. 803 // ExpectScheduleUpdatePrefsOnNetworkThread() should not be called.
809 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 804 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
810 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 805 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
811 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 806 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
812 807
813 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); 808 EXPECT_FALSE(HasAlternativeService(spdy_server_mail));
814 } 809 }
815 810
816 TEST_P(HttpServerPropertiesManagerTest, ConfirmAlternativeService) { 811 TEST_P(HttpServerPropertiesManagerTest, ConfirmAlternativeService) {
817 ExpectPrefsUpdate(); 812 ExpectPrefsUpdate(1);
818 813
819 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); 814 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80);
820 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); 815 EXPECT_FALSE(HasAlternativeService(spdy_server_mail));
821 AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", 443); 816 AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", 443);
822 817
823 ExpectScheduleUpdatePrefsOnNetworkThread(); 818 ExpectScheduleUpdatePrefsOnNetworkThread();
824 http_server_props_manager_->SetAlternativeService( 819 http_server_props_manager_->SetAlternativeService(
825 spdy_server_mail, alternative_service, one_day_from_now_); 820 spdy_server_mail, alternative_service, one_day_from_now_);
826 821
827 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( 822 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken(
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 855
861 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 856 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
862 857
863 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( 858 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken(
864 alternative_service)); 859 alternative_service));
865 EXPECT_FALSE(http_server_props_manager_->WasAlternativeServiceRecentlyBroken( 860 EXPECT_FALSE(http_server_props_manager_->WasAlternativeServiceRecentlyBroken(
866 alternative_service)); 861 alternative_service));
867 } 862 }
868 863
869 TEST_P(HttpServerPropertiesManagerTest, SupportsQuic) { 864 TEST_P(HttpServerPropertiesManagerTest, SupportsQuic) {
870 ExpectPrefsUpdate(); 865 ExpectPrefsUpdate(1);
871 ExpectScheduleUpdatePrefsOnNetworkThread(); 866 ExpectScheduleUpdatePrefsOnNetworkThread();
872 867
873 IPAddress address; 868 IPAddress address;
874 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address)); 869 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address));
875 870
876 IPAddress actual_address(127, 0, 0, 1); 871 IPAddress actual_address(127, 0, 0, 1);
877 http_server_props_manager_->SetSupportsQuic(true, actual_address); 872 http_server_props_manager_->SetSupportsQuic(true, actual_address);
878 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. 873 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once.
879 http_server_props_manager_->SetSupportsQuic(true, actual_address); 874 http_server_props_manager_->SetSupportsQuic(true, actual_address);
880 875
881 // Run the task. 876 // Run the task.
882 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 877 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
883 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); 878 EXPECT_TRUE(net_test_task_runner_->HasPendingTask());
884 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 879 net_test_task_runner_->FastForwardUntilNoTasksRemain();
885 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); 880 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask());
886 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 881 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
887 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 882 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
888 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 883 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
889 884
890 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 885 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
891 886
892 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); 887 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address));
893 EXPECT_EQ(actual_address, address); 888 EXPECT_EQ(actual_address, address);
894 } 889 }
895 890
896 TEST_P(HttpServerPropertiesManagerTest, ServerNetworkStats) { 891 TEST_P(HttpServerPropertiesManagerTest, ServerNetworkStats) {
897 ExpectPrefsUpdate(); 892 ExpectPrefsUpdate(1);
898 ExpectScheduleUpdatePrefsOnNetworkThread(); 893 ExpectScheduleUpdatePrefsOnNetworkThread();
899 894
900 url::SchemeHostPort mail_server("http", "mail.google.com", 80); 895 url::SchemeHostPort mail_server("http", "mail.google.com", 80);
901 const ServerNetworkStats* stats = 896 const ServerNetworkStats* stats =
902 http_server_props_manager_->GetServerNetworkStats(mail_server); 897 http_server_props_manager_->GetServerNetworkStats(mail_server);
903 EXPECT_EQ(nullptr, stats); 898 EXPECT_EQ(nullptr, stats);
904 ServerNetworkStats stats1; 899 ServerNetworkStats stats1;
905 stats1.srtt = base::TimeDelta::FromMicroseconds(10); 900 stats1.srtt = base::TimeDelta::FromMicroseconds(10);
906 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); 901 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1);
907 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. 902 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once.
908 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); 903 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1);
909 904
910 // Run the task. 905 // Run the task.
911 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 906 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
912 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); 907 EXPECT_TRUE(net_test_task_runner_->HasPendingTask());
913 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 908 net_test_task_runner_->FastForwardUntilNoTasksRemain();
914 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); 909 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask());
915 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 910 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
916 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 911 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
917 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 912 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
918 913
919 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 914 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
920 915
921 const ServerNetworkStats* stats2 = 916 const ServerNetworkStats* stats2 =
922 http_server_props_manager_->GetServerNetworkStats(mail_server); 917 http_server_props_manager_->GetServerNetworkStats(mail_server);
923 EXPECT_EQ(10, stats2->srtt.ToInternalValue()); 918 EXPECT_EQ(10, stats2->srtt.ToInternalValue());
924 } 919 }
925 920
926 TEST_P(HttpServerPropertiesManagerTest, QuicServerInfo) { 921 TEST_P(HttpServerPropertiesManagerTest, QuicServerInfo) {
927 ExpectPrefsUpdate(); 922 ExpectPrefsUpdate(1);
928 ExpectScheduleUpdatePrefsOnNetworkThread(); 923 ExpectScheduleUpdatePrefsOnNetworkThread();
929 924
930 QuicServerId mail_quic_server_id("mail.google.com", 80); 925 QuicServerId mail_quic_server_id("mail.google.com", 80);
931 EXPECT_EQ(nullptr, 926 EXPECT_EQ(nullptr,
932 http_server_props_manager_->GetQuicServerInfo(mail_quic_server_id)); 927 http_server_props_manager_->GetQuicServerInfo(mail_quic_server_id));
933 std::string quic_server_info1("quic_server_info1"); 928 std::string quic_server_info1("quic_server_info1");
934 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, 929 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id,
935 quic_server_info1); 930 quic_server_info1);
936 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. 931 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once.
937 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, 932 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id,
(...skipping 12 matching lines...) Expand all
950 945
951 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo( 946 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo(
952 mail_quic_server_id)); 947 mail_quic_server_id));
953 } 948 }
954 949
955 TEST_P(HttpServerPropertiesManagerTest, Clear) { 950 TEST_P(HttpServerPropertiesManagerTest, Clear) {
956 // This task expect to run the QuitWhenIdleClosure in the current thread, 951 // This task expect to run the QuitWhenIdleClosure in the current thread,
957 // thus can not mock the pref task runner. 952 // thus can not mock the pref task runner.
958 SetUpWithNonTaskRunner(); 953 SetUpWithNonTaskRunner();
959 954
960 ExpectPrefsUpdate(); 955 ExpectPrefsUpdate(1);
961 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); 956 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(5);
962 957
963 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); 958 url::SchemeHostPort spdy_server("https", "mail.google.com", 443);
964 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); 959 http_server_props_manager_->SetSupportsSpdy(spdy_server, true);
965 AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", 1234); 960 AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", 1234);
966 http_server_props_manager_->SetAlternativeService( 961 http_server_props_manager_->SetAlternativeService(
967 spdy_server, alternative_service, one_day_from_now_); 962 spdy_server, alternative_service, one_day_from_now_);
968 IPAddress actual_address(127, 0, 0, 1); 963 IPAddress actual_address(127, 0, 0, 1);
969 http_server_props_manager_->SetSupportsQuic(true, actual_address); 964 http_server_props_manager_->SetSupportsQuic(true, actual_address);
970 ServerNetworkStats stats; 965 ServerNetworkStats stats;
971 stats.srtt = base::TimeDelta::FromMicroseconds(10); 966 stats.srtt = base::TimeDelta::FromMicroseconds(10);
(...skipping 16 matching lines...) Expand all
988 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); 983 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address));
989 EXPECT_EQ(actual_address, address); 984 EXPECT_EQ(actual_address, address);
990 const ServerNetworkStats* stats1 = 985 const ServerNetworkStats* stats1 =
991 http_server_props_manager_->GetServerNetworkStats(spdy_server); 986 http_server_props_manager_->GetServerNetworkStats(spdy_server);
992 EXPECT_EQ(10, stats1->srtt.ToInternalValue()); 987 EXPECT_EQ(10, stats1->srtt.ToInternalValue());
993 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo( 988 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo(
994 mail_quic_server_id)); 989 mail_quic_server_id));
995 990
996 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 991 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
997 992
998 ExpectPrefsUpdate(); 993 ExpectPrefsUpdate(1);
999 994
1000 // Clear http server data, time out if we do not get a completion callback. 995 // Clear http server data, time out if we do not get a completion callback.
1001 http_server_props_manager_->Clear(base::MessageLoop::QuitWhenIdleClosure()); 996 http_server_props_manager_->Clear(base::MessageLoop::QuitWhenIdleClosure());
1002 997
1003 base::RunLoop().Run(); 998 base::RunLoop().Run();
1004 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 999 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
1005 1000
1006 EXPECT_FALSE( 1001 EXPECT_FALSE(
1007 http_server_props_manager_->SupportsRequestPriority(spdy_server)); 1002 http_server_props_manager_->SupportsRequestPriority(spdy_server));
1008 EXPECT_FALSE(HasAlternativeService(spdy_server)); 1003 EXPECT_FALSE(HasAlternativeService(spdy_server));
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
1113 EXPECT_EQ(i, alternative_service_vector[0].port); 1108 EXPECT_EQ(i, alternative_service_vector[0].port);
1114 } 1109 }
1115 1110
1116 // Verify SupportsQuic. 1111 // Verify SupportsQuic.
1117 IPAddress address; 1112 IPAddress address;
1118 ASSERT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); 1113 ASSERT_TRUE(http_server_props_manager_->GetSupportsQuic(&address));
1119 EXPECT_EQ("127.0.0.1", address.ToString()); 1114 EXPECT_EQ("127.0.0.1", address.ToString());
1120 } 1115 }
1121 1116
1122 TEST_P(HttpServerPropertiesManagerTest, UpdateCacheWithPrefs) { 1117 TEST_P(HttpServerPropertiesManagerTest, UpdateCacheWithPrefs) {
1123 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); 1118 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(5);
1124 1119
1125 const url::SchemeHostPort server_www("http", "www.google.com", 80); 1120 const url::SchemeHostPort server_www("http", "www.google.com", 80);
1126 const url::SchemeHostPort server_mail("http", "mail.google.com", 80); 1121 const url::SchemeHostPort server_mail("http", "mail.google.com", 80);
1127 1122
1128 // Set alternate protocol. 1123 // Set alternate protocol.
1129 AlternativeServiceInfoVector alternative_service_info_vector; 1124 AlternativeServiceInfoVector alternative_service_info_vector;
1130 AlternativeService www_alternative_service1(kProtoHTTP2, "", 443); 1125 AlternativeService www_alternative_service1(kProtoHTTP2, "", 443);
1131 base::Time expiration1; 1126 base::Time expiration1;
1132 ASSERT_TRUE(base::Time::FromUTCString("2036-12-01 10:00:00", &expiration1)); 1127 ASSERT_TRUE(base::Time::FromUTCString("2036-12-01 10:00:00", &expiration1));
1133 alternative_service_info_vector.push_back( 1128 alternative_service_info_vector.push_back(
(...skipping 22 matching lines...) Expand all
1156 QuicServerId mail_quic_server_id("mail.google.com", 80); 1151 QuicServerId mail_quic_server_id("mail.google.com", 80);
1157 std::string quic_server_info1("quic_server_info1"); 1152 std::string quic_server_info1("quic_server_info1");
1158 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, 1153 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id,
1159 quic_server_info1); 1154 quic_server_info1);
1160 1155
1161 // Set SupportsQuic. 1156 // Set SupportsQuic.
1162 IPAddress actual_address(127, 0, 0, 1); 1157 IPAddress actual_address(127, 0, 0, 1);
1163 http_server_props_manager_->SetSupportsQuic(true, actual_address); 1158 http_server_props_manager_->SetSupportsQuic(true, actual_address);
1164 1159
1165 // Update cache. 1160 // Update cache.
1166 ExpectPrefsUpdate(); 1161 ExpectPrefsUpdate(1);
1167 ExpectCacheUpdate(); 1162 ExpectCacheUpdate();
1168 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); 1163 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread();
1169 1164
1170 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); 1165 EXPECT_TRUE(net_test_task_runner_->HasPendingTask());
1171 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); 1166 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask());
1172 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 1167 net_test_task_runner_->FastForwardUntilNoTasksRemain();
1173 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 1168 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
1174 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 1169 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
1175 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1170 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1176 1171
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 EXPECT_FALSE(http_server_props_manager_->AddToAlternativeServiceMap( 1258 EXPECT_FALSE(http_server_props_manager_->AddToAlternativeServiceMap(
1264 server, *server_dict, &alternative_service_map)); 1259 server, *server_dict, &alternative_service_map));
1265 1260
1266 AlternativeServiceMap::iterator it = alternative_service_map.Get(server); 1261 AlternativeServiceMap::iterator it = alternative_service_map.Get(server);
1267 EXPECT_EQ(alternative_service_map.end(), it); 1262 EXPECT_EQ(alternative_service_map.end(), it);
1268 } 1263 }
1269 1264
1270 // Do not persist expired or broken alternative service entries to disk. 1265 // Do not persist expired or broken alternative service entries to disk.
1271 TEST_P(HttpServerPropertiesManagerTest, 1266 TEST_P(HttpServerPropertiesManagerTest,
1272 DoNotPersistExpiredOrBrokenAlternativeService) { 1267 DoNotPersistExpiredOrBrokenAlternativeService) {
1273 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); 1268 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(2);
1274 1269
1275 AlternativeServiceInfoVector alternative_service_info_vector; 1270 AlternativeServiceInfoVector alternative_service_info_vector;
1276 1271
1277 const AlternativeService broken_alternative_service( 1272 const AlternativeService broken_alternative_service(
1278 kProtoHTTP2, "broken.example.com", 443); 1273 kProtoHTTP2, "broken.example.com", 443);
1279 const base::Time time_one_day_later = 1274 const base::Time time_one_day_later =
1280 base::Time::Now() + base::TimeDelta::FromDays(1); 1275 base::Time::Now() + base::TimeDelta::FromDays(1);
1281 alternative_service_info_vector.push_back( 1276 alternative_service_info_vector.push_back(
1282 AlternativeServiceInfo(broken_alternative_service, time_one_day_later)); 1277 AlternativeServiceInfo(broken_alternative_service, time_one_day_later));
1283 http_server_props_manager_->MarkAlternativeServiceBroken( 1278 http_server_props_manager_->MarkAlternativeServiceBroken(
1284 broken_alternative_service); 1279 broken_alternative_service);
1285 1280
1286 const AlternativeService expired_alternative_service( 1281 const AlternativeService expired_alternative_service(
1287 kProtoHTTP2, "expired.example.com", 443); 1282 kProtoHTTP2, "expired.example.com", 443);
1288 const base::Time time_one_day_ago = 1283 const base::Time time_one_day_ago =
1289 base::Time::Now() - base::TimeDelta::FromDays(1); 1284 base::Time::Now() - base::TimeDelta::FromDays(1);
1290 alternative_service_info_vector.push_back( 1285 alternative_service_info_vector.push_back(
1291 AlternativeServiceInfo(expired_alternative_service, time_one_day_ago)); 1286 AlternativeServiceInfo(expired_alternative_service, time_one_day_ago));
1292 1287
1293 const AlternativeService valid_alternative_service(kProtoHTTP2, 1288 const AlternativeService valid_alternative_service(kProtoHTTP2,
1294 "valid.example.com", 443); 1289 "valid.example.com", 443);
1295 alternative_service_info_vector.push_back( 1290 alternative_service_info_vector.push_back(
1296 AlternativeServiceInfo(valid_alternative_service, time_one_day_later)); 1291 AlternativeServiceInfo(valid_alternative_service, time_one_day_later));
1297 1292
1298 const url::SchemeHostPort server("https", "www.example.com", 443); 1293 const url::SchemeHostPort server("https", "www.example.com", 443);
1299 http_server_props_manager_->SetAlternativeServices( 1294 http_server_props_manager_->SetAlternativeServices(
1300 server, alternative_service_info_vector); 1295 server, alternative_service_info_vector);
1301 1296
1302 // Update cache. 1297 // Update cache.
1303 ExpectPrefsUpdate(); 1298 ExpectPrefsUpdate(1);
1304 ExpectCacheUpdate(); 1299 ExpectCacheUpdate();
1305 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); 1300 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread();
1306 1301
1307 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); 1302 EXPECT_TRUE(net_test_task_runner_->HasPendingTask());
1308 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); 1303 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask());
1309 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 1304 net_test_task_runner_->FastForwardUntilNoTasksRemain();
1310 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 1305 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
1311 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 1306 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
1312 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1307 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1313 1308
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1439 http_server_props_manager_.reset(); 1434 http_server_props_manager_.reset();
1440 // Run the task after shutdown and deletion. 1435 // Run the task after shutdown and deletion.
1441 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); 1436 EXPECT_TRUE(net_test_task_runner_->HasPendingTask());
1442 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1437 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1443 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 1438 net_test_task_runner_->FastForwardUntilNoTasksRemain();
1444 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 1439 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
1445 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1440 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1446 } 1441 }
1447 1442
1448 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs1) { 1443 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs1) {
1449 ExpectPrefsUpdate(); 1444 ExpectPrefsUpdate(1);
1450 // Post an update task. 1445 // Post an update task.
1451 http_server_props_manager_->ScheduleUpdatePrefsOnNetworkThread(); 1446 http_server_props_manager_->ScheduleUpdatePrefsOnNetworkThread();
1452 // Shutdown comes before the task is executed. 1447 // Shutdown comes before the task is executed.
1453 http_server_props_manager_->ShutdownOnPrefThread(); 1448 http_server_props_manager_->ShutdownOnPrefThread();
1454 // Run the task after shutdown, but before deletion. 1449 // Run the task after shutdown, but before deletion.
1455 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); 1450 EXPECT_TRUE(net_test_task_runner_->HasPendingTask());
1456 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1451 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1457 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 1452 net_test_task_runner_->FastForwardUntilNoTasksRemain();
1458 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); 1453 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask());
1459 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 1454 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
(...skipping 18 matching lines...) Expand all
1478 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 1473 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
1479 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 1474 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
1480 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1475 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1481 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 1476 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
1482 http_server_props_manager_.reset(); 1477 http_server_props_manager_.reset();
1483 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 1478 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
1484 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1479 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1485 } 1480 }
1486 1481
1487 } // namespace net 1482 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698