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

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: rebase with master 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 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 } 206 }
207 207
208 void ExpectScheduleUpdatePrefsOnNetworkThread() { 208 void ExpectScheduleUpdatePrefsOnNetworkThread() {
209 EXPECT_CALL(*http_server_props_manager_, 209 EXPECT_CALL(*http_server_props_manager_,
210 ScheduleUpdatePrefsOnNetworkThread(_)) 210 ScheduleUpdatePrefsOnNetworkThread(_))
211 .WillOnce(Invoke(http_server_props_manager_.get(), 211 .WillOnce(Invoke(http_server_props_manager_.get(),
212 &TestingHttpServerPropertiesManager:: 212 &TestingHttpServerPropertiesManager::
213 ScheduleUpdatePrefsOnNetworkThreadConcrete)); 213 ScheduleUpdatePrefsOnNetworkThreadConcrete));
214 } 214 }
215 215
216 void ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly() { 216 void ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly() {
xunjieli 2016/12/19 15:48:18 Will you get to this one in a later CL? I wanted t
Zhongyi Shi 2016/12/19 18:42:09 Ah, I added another check here. PTAL!
217 EXPECT_CALL(*http_server_props_manager_, 217 EXPECT_CALL(*http_server_props_manager_,
218 ScheduleUpdatePrefsOnNetworkThread(_)) 218 ScheduleUpdatePrefsOnNetworkThread(_))
219 .WillRepeatedly(Invoke(http_server_props_manager_.get(), 219 .WillRepeatedly(Invoke(http_server_props_manager_.get(),
220 &TestingHttpServerPropertiesManager:: 220 &TestingHttpServerPropertiesManager::
221 ScheduleUpdatePrefsOnNetworkThreadConcrete)); 221 ScheduleUpdatePrefsOnNetworkThreadConcrete));
222 } 222 }
223 223
224 void ExpectPrefsUpdate() { 224 void ExpectPrefsUpdate(int times) {
225 EXPECT_CALL(*http_server_props_manager_, 225 EXPECT_CALL(*http_server_props_manager_,
226 UpdatePrefsFromCacheOnNetworkThread(_)) 226 UpdatePrefsFromCacheOnNetworkThread(_))
227 .WillOnce(Invoke(http_server_props_manager_.get(), 227 .Times(times)
228 &TestingHttpServerPropertiesManager::
229 UpdatePrefsFromCacheOnNetworkThreadConcrete));
230 }
231
232 void ExpectPrefsUpdateRepeatedly() {
233 EXPECT_CALL(*http_server_props_manager_,
234 UpdatePrefsFromCacheOnNetworkThread(_))
235 .WillRepeatedly( 228 .WillRepeatedly(
236 Invoke(http_server_props_manager_.get(), 229 Invoke(http_server_props_manager_.get(),
237 &TestingHttpServerPropertiesManager:: 230 &TestingHttpServerPropertiesManager::
238 UpdatePrefsFromCacheOnNetworkThreadConcrete)); 231 UpdatePrefsFromCacheOnNetworkThreadConcrete));
239 } 232 }
240 233
241 bool HasAlternativeService(const url::SchemeHostPort& server) { 234 bool HasAlternativeService(const url::SchemeHostPort& server) {
242 const AlternativeServiceVector alternative_service_vector = 235 const AlternativeServiceVector alternative_service_vector =
243 http_server_props_manager_->GetAlternativeServices(server); 236 http_server_props_manager_->GetAlternativeServices(server);
244 return !alternative_service_vector.empty(); 237 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( 473 EXPECT_EQ(quic_server_info2, *http_server_props_manager_->GetQuicServerInfo(
481 mail_quic_server_id)); 474 mail_quic_server_id));
482 EXPECT_EQ(quic_server_info3, *http_server_props_manager_->GetQuicServerInfo( 475 EXPECT_EQ(quic_server_info3, *http_server_props_manager_->GetQuicServerInfo(
483 play_quic_server_id)); 476 play_quic_server_id));
484 */ 477 */
485 } 478 }
486 479
487 TEST_P(HttpServerPropertiesManagerTest, BadCachedHostPortPair) { 480 TEST_P(HttpServerPropertiesManagerTest, BadCachedHostPortPair) {
488 ExpectCacheUpdate(); 481 ExpectCacheUpdate();
489 // The prefs are automatically updated in the case corruption is detected. 482 // The prefs are automatically updated in the case corruption is detected.
490 ExpectPrefsUpdate(); 483 ExpectPrefsUpdate(1);
491 ExpectScheduleUpdatePrefsOnNetworkThread(); 484 ExpectScheduleUpdatePrefsOnNetworkThread();
492 485
493 base::DictionaryValue* server_pref_dict = new base::DictionaryValue; 486 base::DictionaryValue* server_pref_dict = new base::DictionaryValue;
494 487
495 // Set supports_spdy for www.google.com:65536. 488 // Set supports_spdy for www.google.com:65536.
496 server_pref_dict->SetBoolean("supports_spdy", true); 489 server_pref_dict->SetBoolean("supports_spdy", true);
497 490
498 // Set up alternative_service for www.google.com:65536. 491 // Set up alternative_service for www.google.com:65536.
499 std::unique_ptr<base::DictionaryValue> alternative_service_dict( 492 std::unique_ptr<base::DictionaryValue> alternative_service_dict(
500 new base::DictionaryValue); 493 new base::DictionaryValue);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 EXPECT_FALSE(HasAlternativeService(gooler_server)); 563 EXPECT_FALSE(HasAlternativeService(gooler_server));
571 const ServerNetworkStats* stats1 = 564 const ServerNetworkStats* stats1 =
572 http_server_props_manager_->GetServerNetworkStats(gooler_server); 565 http_server_props_manager_->GetServerNetworkStats(gooler_server);
573 EXPECT_EQ(nullptr, stats1); 566 EXPECT_EQ(nullptr, stats1);
574 EXPECT_EQ(0u, http_server_props_manager_->quic_server_info_map().size()); 567 EXPECT_EQ(0u, http_server_props_manager_->quic_server_info_map().size());
575 } 568 }
576 569
577 TEST_P(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) { 570 TEST_P(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) {
578 ExpectCacheUpdate(); 571 ExpectCacheUpdate();
579 // The prefs are automatically updated in the case corruption is detected. 572 // The prefs are automatically updated in the case corruption is detected.
580 ExpectPrefsUpdate(); 573 ExpectPrefsUpdate(1);
581 ExpectScheduleUpdatePrefsOnNetworkThread(); 574 ExpectScheduleUpdatePrefsOnNetworkThread();
582 575
583 base::DictionaryValue* server_pref_dict = new base::DictionaryValue; 576 base::DictionaryValue* server_pref_dict = new base::DictionaryValue;
584 577
585 // Set supports_spdy for www.google.com:80. 578 // Set supports_spdy for www.google.com:80.
586 server_pref_dict->SetBoolean("supports_spdy", true); 579 server_pref_dict->SetBoolean("supports_spdy", true);
587 580
588 // Set up alternative_service for www.google.com:80. 581 // Set up alternative_service for www.google.com:80.
589 std::unique_ptr<base::DictionaryValue> alternative_service_dict( 582 std::unique_ptr<base::DictionaryValue> alternative_service_dict(
590 new base::DictionaryValue); 583 new base::DictionaryValue);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 624 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
632 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 625 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
633 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 626 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
634 627
635 // Verify alternative service is not set. 628 // Verify alternative service is not set.
636 EXPECT_FALSE( 629 EXPECT_FALSE(
637 HasAlternativeService(url::SchemeHostPort("http", "www.google.com", 80))); 630 HasAlternativeService(url::SchemeHostPort("http", "www.google.com", 80)));
638 } 631 }
639 632
640 TEST_P(HttpServerPropertiesManagerTest, SupportsSpdy) { 633 TEST_P(HttpServerPropertiesManagerTest, SupportsSpdy) {
641 ExpectPrefsUpdate(); 634 ExpectPrefsUpdate(1);
642 ExpectScheduleUpdatePrefsOnNetworkThread(); 635 ExpectScheduleUpdatePrefsOnNetworkThread();
643 636
644 // Post an update task to the network thread. SetSupportsSpdy calls 637 // Post an update task to the network thread. SetSupportsSpdy calls
645 // ScheduleUpdatePrefsOnNetworkThread. 638 // ScheduleUpdatePrefsOnNetworkThread.
646 639
647 // Add mail.google.com:443 as a supporting spdy server. 640 // Add mail.google.com:443 as a supporting spdy server.
648 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); 641 url::SchemeHostPort spdy_server("https", "mail.google.com", 443);
649 EXPECT_FALSE( 642 EXPECT_FALSE(
650 http_server_props_manager_->SupportsRequestPriority(spdy_server)); 643 http_server_props_manager_->SupportsRequestPriority(spdy_server));
651 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); 644 http_server_props_manager_->SetSupportsSpdy(spdy_server, true);
(...skipping 14 matching lines...) Expand all
666 } 659 }
667 660
668 // Regression test for crbug.com/670519. Test that there is only one pref update 661 // 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 662 // scheduled if multiple updates happen in a given time period. Subsequent pref
670 // update could also be scheduled once the previous scheduled update is 663 // update could also be scheduled once the previous scheduled update is
671 // completed. 664 // completed.
672 TEST_P(HttpServerPropertiesManagerTest, 665 TEST_P(HttpServerPropertiesManagerTest,
673 SinglePrefUpdateForTwoSpdyServerCacheChangese) { 666 SinglePrefUpdateForTwoSpdyServerCacheChangese) {
674 http_server_props_manager_->set_pref_update_delay( 667 http_server_props_manager_->set_pref_update_delay(
675 base::TimeDelta::FromMilliseconds(60)); 668 base::TimeDelta::FromMilliseconds(60));
676 ExpectPrefsUpdateRepeatedly(); 669 ExpectPrefsUpdate(2);
677 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); 670 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly();
678 671
679 // Post an update task to the network thread. SetSupportsSpdy calls 672 // Post an update task to the network thread. SetSupportsSpdy calls
680 // ScheduleUpdatePrefsOnNetworkThread with a delay of 60ms. 673 // ScheduleUpdatePrefsOnNetworkThread with a delay of 60ms.
681 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); 674 url::SchemeHostPort spdy_server("https", "mail.google.com", 443);
682 EXPECT_FALSE( 675 EXPECT_FALSE(
683 http_server_props_manager_->SupportsRequestPriority(spdy_server)); 676 http_server_props_manager_->SupportsRequestPriority(spdy_server));
684 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); 677 http_server_props_manager_->SetSupportsSpdy(spdy_server, true);
685 // The pref update task should be scheduled to network thread. 678 // The pref update task should be scheduled to network thread.
686 EXPECT_EQ(1u, net_test_task_runner_->GetPendingTaskCount()); 679 EXPECT_EQ(1u, net_test_task_runner_->GetPendingTaskCount());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 714 net_test_task_runner_->FastForwardUntilNoTasksRemain();
722 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); 715 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask());
723 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 716 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
724 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 717 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
725 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 718 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
726 719
727 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 720 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
728 } 721 }
729 722
730 TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServices) { 723 TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServices) {
731 ExpectPrefsUpdate(); 724 ExpectPrefsUpdate(1);
732 ExpectScheduleUpdatePrefsOnNetworkThread(); 725 ExpectScheduleUpdatePrefsOnNetworkThread();
733 726
734 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); 727 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80);
735 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); 728 EXPECT_FALSE(HasAlternativeService(spdy_server_mail));
736 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", 729 const AlternativeService alternative_service(kProtoHTTP2, "mail.google.com",
737 443); 730 443);
738 http_server_props_manager_->SetAlternativeService( 731 http_server_props_manager_->SetAlternativeService(
739 spdy_server_mail, alternative_service, one_day_from_now_); 732 spdy_server_mail, alternative_service, one_day_from_now_);
740 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. 733 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once.
741 http_server_props_manager_->SetAlternativeService( 734 http_server_props_manager_->SetAlternativeService(
(...skipping 10 matching lines...) Expand all
752 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 745 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
753 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 746 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
754 747
755 AlternativeServiceVector alternative_service_vector = 748 AlternativeServiceVector alternative_service_vector =
756 http_server_props_manager_->GetAlternativeServices(spdy_server_mail); 749 http_server_props_manager_->GetAlternativeServices(spdy_server_mail);
757 ASSERT_EQ(1u, alternative_service_vector.size()); 750 ASSERT_EQ(1u, alternative_service_vector.size());
758 EXPECT_EQ(alternative_service, alternative_service_vector[0]); 751 EXPECT_EQ(alternative_service, alternative_service_vector[0]);
759 } 752 }
760 753
761 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServices) { 754 TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServices) {
762 ExpectPrefsUpdate(); 755 ExpectPrefsUpdate(1);
763 ExpectScheduleUpdatePrefsOnNetworkThread(); 756 ExpectScheduleUpdatePrefsOnNetworkThread();
764 757
765 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); 758 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80);
766 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); 759 EXPECT_FALSE(HasAlternativeService(spdy_server_mail));
767 AlternativeServiceInfoVector alternative_service_info_vector; 760 AlternativeServiceInfoVector alternative_service_info_vector;
768 const AlternativeService alternative_service1(kProtoHTTP2, "mail.google.com", 761 const AlternativeService alternative_service1(kProtoHTTP2, "mail.google.com",
769 443); 762 443);
770 alternative_service_info_vector.push_back( 763 alternative_service_info_vector.push_back(
771 AlternativeServiceInfo(alternative_service1, one_day_from_now_)); 764 AlternativeServiceInfo(alternative_service1, one_day_from_now_));
772 const AlternativeService alternative_service2(kProtoQUIC, "mail.google.com", 765 const AlternativeService alternative_service2(kProtoQUIC, "mail.google.com",
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 800
808 // ExpectScheduleUpdatePrefsOnNetworkThread() should not be called. 801 // ExpectScheduleUpdatePrefsOnNetworkThread() should not be called.
809 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 802 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
810 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 803 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
811 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 804 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
812 805
813 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); 806 EXPECT_FALSE(HasAlternativeService(spdy_server_mail));
814 } 807 }
815 808
816 TEST_P(HttpServerPropertiesManagerTest, ConfirmAlternativeService) { 809 TEST_P(HttpServerPropertiesManagerTest, ConfirmAlternativeService) {
817 ExpectPrefsUpdate(); 810 ExpectPrefsUpdate(1);
818 811
819 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); 812 url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80);
820 EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); 813 EXPECT_FALSE(HasAlternativeService(spdy_server_mail));
821 AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", 443); 814 AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", 443);
822 815
823 ExpectScheduleUpdatePrefsOnNetworkThread(); 816 ExpectScheduleUpdatePrefsOnNetworkThread();
824 http_server_props_manager_->SetAlternativeService( 817 http_server_props_manager_->SetAlternativeService(
825 spdy_server_mail, alternative_service, one_day_from_now_); 818 spdy_server_mail, alternative_service, one_day_from_now_);
826 819
827 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( 820 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken(
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 853
861 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 854 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
862 855
863 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken( 856 EXPECT_FALSE(http_server_props_manager_->IsAlternativeServiceBroken(
864 alternative_service)); 857 alternative_service));
865 EXPECT_FALSE(http_server_props_manager_->WasAlternativeServiceRecentlyBroken( 858 EXPECT_FALSE(http_server_props_manager_->WasAlternativeServiceRecentlyBroken(
866 alternative_service)); 859 alternative_service));
867 } 860 }
868 861
869 TEST_P(HttpServerPropertiesManagerTest, SupportsQuic) { 862 TEST_P(HttpServerPropertiesManagerTest, SupportsQuic) {
870 ExpectPrefsUpdate(); 863 ExpectPrefsUpdate(1);
871 ExpectScheduleUpdatePrefsOnNetworkThread(); 864 ExpectScheduleUpdatePrefsOnNetworkThread();
872 865
873 IPAddress address; 866 IPAddress address;
874 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address)); 867 EXPECT_FALSE(http_server_props_manager_->GetSupportsQuic(&address));
875 868
876 IPAddress actual_address(127, 0, 0, 1); 869 IPAddress actual_address(127, 0, 0, 1);
877 http_server_props_manager_->SetSupportsQuic(true, actual_address); 870 http_server_props_manager_->SetSupportsQuic(true, actual_address);
878 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. 871 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once.
879 http_server_props_manager_->SetSupportsQuic(true, actual_address); 872 http_server_props_manager_->SetSupportsQuic(true, actual_address);
880 873
881 // Run the task. 874 // Run the task.
882 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 875 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
883 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); 876 EXPECT_TRUE(net_test_task_runner_->HasPendingTask());
884 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 877 net_test_task_runner_->FastForwardUntilNoTasksRemain();
885 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); 878 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask());
886 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 879 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
887 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 880 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
888 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 881 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
889 882
890 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 883 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
891 884
892 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); 885 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address));
893 EXPECT_EQ(actual_address, address); 886 EXPECT_EQ(actual_address, address);
894 } 887 }
895 888
896 TEST_P(HttpServerPropertiesManagerTest, ServerNetworkStats) { 889 TEST_P(HttpServerPropertiesManagerTest, ServerNetworkStats) {
897 ExpectPrefsUpdate(); 890 ExpectPrefsUpdate(1);
898 ExpectScheduleUpdatePrefsOnNetworkThread(); 891 ExpectScheduleUpdatePrefsOnNetworkThread();
899 892
900 url::SchemeHostPort mail_server("http", "mail.google.com", 80); 893 url::SchemeHostPort mail_server("http", "mail.google.com", 80);
901 const ServerNetworkStats* stats = 894 const ServerNetworkStats* stats =
902 http_server_props_manager_->GetServerNetworkStats(mail_server); 895 http_server_props_manager_->GetServerNetworkStats(mail_server);
903 EXPECT_EQ(nullptr, stats); 896 EXPECT_EQ(nullptr, stats);
904 ServerNetworkStats stats1; 897 ServerNetworkStats stats1;
905 stats1.srtt = base::TimeDelta::FromMicroseconds(10); 898 stats1.srtt = base::TimeDelta::FromMicroseconds(10);
906 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); 899 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1);
907 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. 900 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once.
908 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1); 901 http_server_props_manager_->SetServerNetworkStats(mail_server, stats1);
909 902
910 // Run the task. 903 // Run the task.
911 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 904 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
912 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); 905 EXPECT_TRUE(net_test_task_runner_->HasPendingTask());
913 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 906 net_test_task_runner_->FastForwardUntilNoTasksRemain();
914 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); 907 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask());
915 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 908 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
916 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 909 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
917 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 910 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
918 911
919 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 912 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
920 913
921 const ServerNetworkStats* stats2 = 914 const ServerNetworkStats* stats2 =
922 http_server_props_manager_->GetServerNetworkStats(mail_server); 915 http_server_props_manager_->GetServerNetworkStats(mail_server);
923 EXPECT_EQ(10, stats2->srtt.ToInternalValue()); 916 EXPECT_EQ(10, stats2->srtt.ToInternalValue());
924 } 917 }
925 918
926 TEST_P(HttpServerPropertiesManagerTest, QuicServerInfo) { 919 TEST_P(HttpServerPropertiesManagerTest, QuicServerInfo) {
927 ExpectPrefsUpdate(); 920 ExpectPrefsUpdate(1);
928 ExpectScheduleUpdatePrefsOnNetworkThread(); 921 ExpectScheduleUpdatePrefsOnNetworkThread();
929 922
930 QuicServerId mail_quic_server_id("mail.google.com", 80); 923 QuicServerId mail_quic_server_id("mail.google.com", 80);
931 EXPECT_EQ(nullptr, 924 EXPECT_EQ(nullptr,
932 http_server_props_manager_->GetQuicServerInfo(mail_quic_server_id)); 925 http_server_props_manager_->GetQuicServerInfo(mail_quic_server_id));
933 std::string quic_server_info1("quic_server_info1"); 926 std::string quic_server_info1("quic_server_info1");
934 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, 927 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id,
935 quic_server_info1); 928 quic_server_info1);
936 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once. 929 // ExpectScheduleUpdatePrefsOnNetworkThread() should be called only once.
937 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, 930 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id,
(...skipping 12 matching lines...) Expand all
950 943
951 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo( 944 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo(
952 mail_quic_server_id)); 945 mail_quic_server_id));
953 } 946 }
954 947
955 TEST_P(HttpServerPropertiesManagerTest, Clear) { 948 TEST_P(HttpServerPropertiesManagerTest, Clear) {
956 // This task expect to run the QuitWhenIdleClosure in the current thread, 949 // This task expect to run the QuitWhenIdleClosure in the current thread,
957 // thus can not mock the pref task runner. 950 // thus can not mock the pref task runner.
958 SetUpWithNonTaskRunner(); 951 SetUpWithNonTaskRunner();
959 952
960 ExpectPrefsUpdate(); 953 ExpectPrefsUpdate(1);
961 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); 954 ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly();
962 955
963 url::SchemeHostPort spdy_server("https", "mail.google.com", 443); 956 url::SchemeHostPort spdy_server("https", "mail.google.com", 443);
964 http_server_props_manager_->SetSupportsSpdy(spdy_server, true); 957 http_server_props_manager_->SetSupportsSpdy(spdy_server, true);
965 AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", 1234); 958 AlternativeService alternative_service(kProtoHTTP2, "mail.google.com", 1234);
966 http_server_props_manager_->SetAlternativeService( 959 http_server_props_manager_->SetAlternativeService(
967 spdy_server, alternative_service, one_day_from_now_); 960 spdy_server, alternative_service, one_day_from_now_);
968 IPAddress actual_address(127, 0, 0, 1); 961 IPAddress actual_address(127, 0, 0, 1);
969 http_server_props_manager_->SetSupportsQuic(true, actual_address); 962 http_server_props_manager_->SetSupportsQuic(true, actual_address);
970 ServerNetworkStats stats; 963 ServerNetworkStats stats;
(...skipping 17 matching lines...) Expand all
988 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); 981 EXPECT_TRUE(http_server_props_manager_->GetSupportsQuic(&address));
989 EXPECT_EQ(actual_address, address); 982 EXPECT_EQ(actual_address, address);
990 const ServerNetworkStats* stats1 = 983 const ServerNetworkStats* stats1 =
991 http_server_props_manager_->GetServerNetworkStats(spdy_server); 984 http_server_props_manager_->GetServerNetworkStats(spdy_server);
992 EXPECT_EQ(10, stats1->srtt.ToInternalValue()); 985 EXPECT_EQ(10, stats1->srtt.ToInternalValue());
993 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo( 986 EXPECT_EQ(quic_server_info1, *http_server_props_manager_->GetQuicServerInfo(
994 mail_quic_server_id)); 987 mail_quic_server_id));
995 988
996 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 989 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
997 990
998 ExpectPrefsUpdate(); 991 ExpectPrefsUpdate(1);
999 992
1000 // Clear http server data, time out if we do not get a completion callback. 993 // Clear http server data, time out if we do not get a completion callback.
1001 http_server_props_manager_->Clear(base::MessageLoop::QuitWhenIdleClosure()); 994 http_server_props_manager_->Clear(base::MessageLoop::QuitWhenIdleClosure());
1002 995
1003 base::RunLoop().Run(); 996 base::RunLoop().Run();
1004 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 997 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
1005 998
1006 EXPECT_FALSE( 999 EXPECT_FALSE(
1007 http_server_props_manager_->SupportsRequestPriority(spdy_server)); 1000 http_server_props_manager_->SupportsRequestPriority(spdy_server));
1008 EXPECT_FALSE(HasAlternativeService(spdy_server)); 1001 EXPECT_FALSE(HasAlternativeService(spdy_server));
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1156 QuicServerId mail_quic_server_id("mail.google.com", 80); 1149 QuicServerId mail_quic_server_id("mail.google.com", 80);
1157 std::string quic_server_info1("quic_server_info1"); 1150 std::string quic_server_info1("quic_server_info1");
1158 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id, 1151 http_server_props_manager_->SetQuicServerInfo(mail_quic_server_id,
1159 quic_server_info1); 1152 quic_server_info1);
1160 1153
1161 // Set SupportsQuic. 1154 // Set SupportsQuic.
1162 IPAddress actual_address(127, 0, 0, 1); 1155 IPAddress actual_address(127, 0, 0, 1);
1163 http_server_props_manager_->SetSupportsQuic(true, actual_address); 1156 http_server_props_manager_->SetSupportsQuic(true, actual_address);
1164 1157
1165 // Update cache. 1158 // Update cache.
1166 ExpectPrefsUpdate(); 1159 ExpectPrefsUpdate(1);
1167 ExpectCacheUpdate(); 1160 ExpectCacheUpdate();
1168 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); 1161 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread();
1169 1162
1170 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); 1163 EXPECT_TRUE(net_test_task_runner_->HasPendingTask());
1171 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); 1164 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask());
1172 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 1165 net_test_task_runner_->FastForwardUntilNoTasksRemain();
1173 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 1166 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
1174 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 1167 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
1175 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1168 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1176 1169
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1293 const AlternativeService valid_alternative_service(kProtoHTTP2, 1286 const AlternativeService valid_alternative_service(kProtoHTTP2,
1294 "valid.example.com", 443); 1287 "valid.example.com", 443);
1295 alternative_service_info_vector.push_back( 1288 alternative_service_info_vector.push_back(
1296 AlternativeServiceInfo(valid_alternative_service, time_one_day_later)); 1289 AlternativeServiceInfo(valid_alternative_service, time_one_day_later));
1297 1290
1298 const url::SchemeHostPort server("https", "www.example.com", 443); 1291 const url::SchemeHostPort server("https", "www.example.com", 443);
1299 http_server_props_manager_->SetAlternativeServices( 1292 http_server_props_manager_->SetAlternativeServices(
1300 server, alternative_service_info_vector); 1293 server, alternative_service_info_vector);
1301 1294
1302 // Update cache. 1295 // Update cache.
1303 ExpectPrefsUpdate(); 1296 ExpectPrefsUpdate(1);
1304 ExpectCacheUpdate(); 1297 ExpectCacheUpdate();
1305 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); 1298 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread();
1306 1299
1307 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); 1300 EXPECT_TRUE(net_test_task_runner_->HasPendingTask());
1308 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); 1301 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask());
1309 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 1302 net_test_task_runner_->FastForwardUntilNoTasksRemain();
1310 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 1303 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
1311 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 1304 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
1312 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1305 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1313 1306
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1439 http_server_props_manager_.reset(); 1432 http_server_props_manager_.reset();
1440 // Run the task after shutdown and deletion. 1433 // Run the task after shutdown and deletion.
1441 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); 1434 EXPECT_TRUE(net_test_task_runner_->HasPendingTask());
1442 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1435 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1443 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 1436 net_test_task_runner_->FastForwardUntilNoTasksRemain();
1444 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 1437 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
1445 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1438 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1446 } 1439 }
1447 1440
1448 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs1) { 1441 TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs1) {
1449 ExpectPrefsUpdate(); 1442 ExpectPrefsUpdate(1);
1450 // Post an update task. 1443 // Post an update task.
1451 http_server_props_manager_->ScheduleUpdatePrefsOnNetworkThread(); 1444 http_server_props_manager_->ScheduleUpdatePrefsOnNetworkThread();
1452 // Shutdown comes before the task is executed. 1445 // Shutdown comes before the task is executed.
1453 http_server_props_manager_->ShutdownOnPrefThread(); 1446 http_server_props_manager_->ShutdownOnPrefThread();
1454 // Run the task after shutdown, but before deletion. 1447 // Run the task after shutdown, but before deletion.
1455 EXPECT_TRUE(net_test_task_runner_->HasPendingTask()); 1448 EXPECT_TRUE(net_test_task_runner_->HasPendingTask());
1456 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1449 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1457 net_test_task_runner_->FastForwardUntilNoTasksRemain(); 1450 net_test_task_runner_->FastForwardUntilNoTasksRemain();
1458 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask()); 1451 EXPECT_TRUE(pref_test_task_runner_->HasPendingTask());
1459 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 1452 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
(...skipping 18 matching lines...) Expand all
1478 pref_test_task_runner_->FastForwardUntilNoTasksRemain(); 1471 pref_test_task_runner_->FastForwardUntilNoTasksRemain();
1479 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 1472 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
1480 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1473 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1481 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 1474 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
1482 http_server_props_manager_.reset(); 1475 http_server_props_manager_.reset();
1483 EXPECT_FALSE(net_test_task_runner_->HasPendingTask()); 1476 EXPECT_FALSE(net_test_task_runner_->HasPendingTask());
1484 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask()); 1477 EXPECT_FALSE(pref_test_task_runner_->HasPendingTask());
1485 } 1478 }
1486 1479
1487 } // namespace net 1480 } // 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