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

Side by Side Diff: net/quic/chromium/quic_network_transaction_unittest.cc

Issue 2838113002: Simplify QUIC tests by adding a MakeInitialSettingsPacket method (Closed)
Patch Set: Rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <memory> 5 #include <memory>
6 #include <ostream> 6 #include <ostream>
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 343
344 std::unique_ptr<QuicEncryptedPacket> ConstructServerRstPacket( 344 std::unique_ptr<QuicEncryptedPacket> ConstructServerRstPacket(
345 QuicPacketNumber num, 345 QuicPacketNumber num,
346 bool include_version, 346 bool include_version,
347 QuicStreamId stream_id, 347 QuicStreamId stream_id,
348 QuicRstStreamErrorCode error_code) { 348 QuicRstStreamErrorCode error_code) {
349 return server_maker_.MakeRstPacket(num, include_version, stream_id, 349 return server_maker_.MakeRstPacket(num, include_version, stream_id,
350 error_code); 350 error_code);
351 } 351 }
352 352
353 std::unique_ptr<QuicReceivedPacket> ConstructSettingsPacket( 353 std::unique_ptr<QuicReceivedPacket> ConstructInitialSettingsPacket(
354 QuicPacketNumber packet_number, 354 QuicPacketNumber packet_number,
355 SpdySettingsIds id,
356 size_t value,
357 QuicStreamOffset* offset) { 355 QuicStreamOffset* offset) {
358 return client_maker_.MakeSettingsPacket(packet_number, id, value, 356 return client_maker_.MakeInitialSettingsPacket(packet_number, offset);
359 kIncludeVersion, offset);
360 } 357 }
361 358
362 std::unique_ptr<QuicReceivedPacket> ConstructServerAckPacket( 359 std::unique_ptr<QuicReceivedPacket> ConstructServerAckPacket(
363 QuicPacketNumber packet_number, 360 QuicPacketNumber packet_number,
364 QuicPacketNumber largest_received, 361 QuicPacketNumber largest_received,
365 QuicPacketNumber smallest_received, 362 QuicPacketNumber smallest_received,
366 QuicPacketNumber least_unacked) { 363 QuicPacketNumber least_unacked) {
367 return server_maker_.MakeAckPacket(packet_number, largest_received, 364 return server_maker_.MakeAckPacket(packet_number, largest_received,
368 smallest_received, least_unacked, false); 365 smallest_received, least_unacked, false);
369 } 366 }
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 INSTANTIATE_TEST_CASE_P(Version, 766 INSTANTIATE_TEST_CASE_P(Version,
770 QuicNetworkTransactionTest, 767 QuicNetworkTransactionTest,
771 ::testing::ValuesIn(AllSupportedVersions())); 768 ::testing::ValuesIn(AllSupportedVersions()));
772 769
773 TEST_P(QuicNetworkTransactionTest, SocketWatcherEnabled) { 770 TEST_P(QuicNetworkTransactionTest, SocketWatcherEnabled) {
774 params_.origins_to_force_quic_on.insert( 771 params_.origins_to_force_quic_on.insert(
775 HostPortPair::FromString("mail.example.org:443")); 772 HostPortPair::FromString("mail.example.org:443"));
776 773
777 MockQuicData mock_quic_data; 774 MockQuicData mock_quic_data;
778 QuicStreamOffset header_stream_offset = 0; 775 QuicStreamOffset header_stream_offset = 0;
779 mock_quic_data.AddWrite(ConstructSettingsPacket( 776 mock_quic_data.AddWrite(
780 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 777 ConstructInitialSettingsPacket(1, &header_stream_offset));
781 &header_stream_offset));
782 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 778 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
783 2, kClientDataStreamId1, true, true, 779 2, kClientDataStreamId1, true, true,
784 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 780 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
785 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 781 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
786 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 782 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
787 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 783 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
788 false, true, 0, "hello!")); 784 false, true, 0, "hello!"));
789 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 785 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
790 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read 786 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read
791 787
792 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 788 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
793 789
794 CreateSession(); 790 CreateSession();
795 test_socket_performance_watcher_factory_.set_should_notify_updated_rtt(true); 791 test_socket_performance_watcher_factory_.set_should_notify_updated_rtt(true);
796 792
797 EXPECT_FALSE( 793 EXPECT_FALSE(
798 test_socket_performance_watcher_factory_.rtt_notification_received()); 794 test_socket_performance_watcher_factory_.rtt_notification_received());
799 SendRequestAndExpectQuicResponse("hello!"); 795 SendRequestAndExpectQuicResponse("hello!");
800 EXPECT_TRUE( 796 EXPECT_TRUE(
801 test_socket_performance_watcher_factory_.rtt_notification_received()); 797 test_socket_performance_watcher_factory_.rtt_notification_received());
802 } 798 }
803 799
804 TEST_P(QuicNetworkTransactionTest, SocketWatcherDisabled) { 800 TEST_P(QuicNetworkTransactionTest, SocketWatcherDisabled) {
805 params_.origins_to_force_quic_on.insert( 801 params_.origins_to_force_quic_on.insert(
806 HostPortPair::FromString("mail.example.org:443")); 802 HostPortPair::FromString("mail.example.org:443"));
807 803
808 MockQuicData mock_quic_data; 804 MockQuicData mock_quic_data;
809 QuicStreamOffset header_stream_offset = 0; 805 QuicStreamOffset header_stream_offset = 0;
810 mock_quic_data.AddWrite(ConstructSettingsPacket( 806 mock_quic_data.AddWrite(
811 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 807 ConstructInitialSettingsPacket(1, &header_stream_offset));
812 &header_stream_offset));
813 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 808 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
814 2, kClientDataStreamId1, true, true, 809 2, kClientDataStreamId1, true, true,
815 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 810 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
816 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 811 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
817 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 812 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
818 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 813 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
819 false, true, 0, "hello!")); 814 false, true, 0, "hello!"));
820 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 815 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
821 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read 816 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read
822 817
823 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 818 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
824 819
825 CreateSession(); 820 CreateSession();
826 test_socket_performance_watcher_factory_.set_should_notify_updated_rtt(false); 821 test_socket_performance_watcher_factory_.set_should_notify_updated_rtt(false);
827 822
828 EXPECT_FALSE( 823 EXPECT_FALSE(
829 test_socket_performance_watcher_factory_.rtt_notification_received()); 824 test_socket_performance_watcher_factory_.rtt_notification_received());
830 SendRequestAndExpectQuicResponse("hello!"); 825 SendRequestAndExpectQuicResponse("hello!");
831 EXPECT_FALSE( 826 EXPECT_FALSE(
832 test_socket_performance_watcher_factory_.rtt_notification_received()); 827 test_socket_performance_watcher_factory_.rtt_notification_received());
833 } 828 }
834 829
835 TEST_P(QuicNetworkTransactionTest, ForceQuic) { 830 TEST_P(QuicNetworkTransactionTest, ForceQuic) {
836 params_.origins_to_force_quic_on.insert( 831 params_.origins_to_force_quic_on.insert(
837 HostPortPair::FromString("mail.example.org:443")); 832 HostPortPair::FromString("mail.example.org:443"));
838 833
839 MockQuicData mock_quic_data; 834 MockQuicData mock_quic_data;
840 QuicStreamOffset header_stream_offset = 0; 835 QuicStreamOffset header_stream_offset = 0;
841 mock_quic_data.AddWrite(ConstructSettingsPacket( 836 mock_quic_data.AddWrite(
842 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 837 ConstructInitialSettingsPacket(1, &header_stream_offset));
843 &header_stream_offset));
844 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 838 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
845 2, kClientDataStreamId1, true, true, 839 2, kClientDataStreamId1, true, true,
846 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 840 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
847 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 841 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
848 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 842 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
849 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 843 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
850 false, true, 0, "hello!")); 844 false, true, 0, "hello!"));
851 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 845 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
852 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read 846 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read
853 847
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 EXPECT_EQ(3, log_stream_id); 890 EXPECT_EQ(3, log_stream_id);
897 } 891 }
898 892
899 TEST_P(QuicNetworkTransactionTest, ForceQuicForAll) { 893 TEST_P(QuicNetworkTransactionTest, ForceQuicForAll) {
900 params_.origins_to_force_quic_on.insert(HostPortPair()); 894 params_.origins_to_force_quic_on.insert(HostPortPair());
901 895
902 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); 896 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE);
903 897
904 MockQuicData mock_quic_data; 898 MockQuicData mock_quic_data;
905 QuicStreamOffset header_stream_offset = 0; 899 QuicStreamOffset header_stream_offset = 0;
906 mock_quic_data.AddWrite(ConstructSettingsPacket( 900 mock_quic_data.AddWrite(
907 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 901 ConstructInitialSettingsPacket(1, &header_stream_offset));
908 &header_stream_offset));
909 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 902 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
910 2, kClientDataStreamId1, true, true, 903 2, kClientDataStreamId1, true, true,
911 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 904 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
912 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 905 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
913 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 906 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
914 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 907 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
915 false, true, 0, "hello!")); 908 false, true, 0, "hello!"));
916 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 909 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
917 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read 910 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read
918 911
919 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 912 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
920 913
921 CreateSession(); 914 CreateSession();
922 915
923 SendRequestAndExpectQuicResponse("hello!"); 916 SendRequestAndExpectQuicResponse("hello!");
924 EXPECT_TRUE( 917 EXPECT_TRUE(
925 test_socket_performance_watcher_factory_.rtt_notification_received()); 918 test_socket_performance_watcher_factory_.rtt_notification_received());
926 } 919 }
927 920
928 TEST_P(QuicNetworkTransactionTest, QuicProxy) { 921 TEST_P(QuicNetworkTransactionTest, QuicProxy) {
929 params_.enable_quic = true; 922 params_.enable_quic = true;
930 proxy_service_ = 923 proxy_service_ =
931 ProxyService::CreateFixedFromPacResult("QUIC mail.example.org:70"); 924 ProxyService::CreateFixedFromPacResult("QUIC mail.example.org:70");
932 925
933 MockQuicData mock_quic_data; 926 MockQuicData mock_quic_data;
934 QuicStreamOffset header_stream_offset = 0; 927 QuicStreamOffset header_stream_offset = 0;
935 mock_quic_data.AddWrite(ConstructSettingsPacket( 928 mock_quic_data.AddWrite(
936 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 929 ConstructInitialSettingsPacket(1, &header_stream_offset));
937 &header_stream_offset));
938 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 930 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
939 2, kClientDataStreamId1, true, true, 931 2, kClientDataStreamId1, true, true,
940 GetRequestHeaders("GET", "http", "/"), &header_stream_offset)); 932 GetRequestHeaders("GET", "http", "/"), &header_stream_offset));
941 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 933 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
942 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 934 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
943 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 935 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
944 false, true, 0, "hello!")); 936 false, true, 0, "hello!"));
945 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 937 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
946 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 938 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
947 mock_quic_data.AddRead(ASYNC, 0); // EOF 939 mock_quic_data.AddRead(ASYNC, 0); // EOF
(...skipping 20 matching lines...) Expand all
968 const std::string origin_host = "mail.example.com"; 960 const std::string origin_host = "mail.example.com";
969 const std::string proxy_host = "www.example.org"; 961 const std::string proxy_host = "www.example.org";
970 962
971 params_.enable_quic = true; 963 params_.enable_quic = true;
972 proxy_service_ = 964 proxy_service_ =
973 ProxyService::CreateFixedFromPacResult("QUIC " + proxy_host + ":70"); 965 ProxyService::CreateFixedFromPacResult("QUIC " + proxy_host + ":70");
974 966
975 client_maker_.set_hostname(origin_host); 967 client_maker_.set_hostname(origin_host);
976 MockQuicData mock_quic_data; 968 MockQuicData mock_quic_data;
977 QuicStreamOffset header_stream_offset = 0; 969 QuicStreamOffset header_stream_offset = 0;
978 mock_quic_data.AddWrite(ConstructSettingsPacket( 970 mock_quic_data.AddWrite(
979 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 971 ConstructInitialSettingsPacket(1, &header_stream_offset));
980 &header_stream_offset));
981 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 972 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
982 2, kClientDataStreamId1, true, true, 973 2, kClientDataStreamId1, true, true,
983 GetRequestHeaders("GET", "http", "/"), &header_stream_offset)); 974 GetRequestHeaders("GET", "http", "/"), &header_stream_offset));
984 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 975 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
985 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 976 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
986 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 977 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
987 false, true, 0, "hello!")); 978 false, true, 0, "hello!"));
988 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 979 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
989 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 980 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
990 mock_quic_data.AddRead(ASYNC, 0); 981 mock_quic_data.AddRead(ASYNC, 0);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1022 // valid for the origin but not the alternative, that should work too. 1013 // valid for the origin but not the alternative, that should work too.
1023 EXPECT_TRUE(cert->VerifyNameMatch(origin.host(), false)); 1014 EXPECT_TRUE(cert->VerifyNameMatch(origin.host(), false));
1024 EXPECT_TRUE(cert->VerifyNameMatch(alternative.host(), false)); 1015 EXPECT_TRUE(cert->VerifyNameMatch(alternative.host(), false));
1025 ProofVerifyDetailsChromium verify_details; 1016 ProofVerifyDetailsChromium verify_details;
1026 verify_details.cert_verify_result.verified_cert = cert; 1017 verify_details.cert_verify_result.verified_cert = cert;
1027 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1018 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1028 1019
1029 client_maker_.set_hostname(origin.host()); 1020 client_maker_.set_hostname(origin.host());
1030 MockQuicData mock_quic_data; 1021 MockQuicData mock_quic_data;
1031 QuicStreamOffset header_stream_offset = 0; 1022 QuicStreamOffset header_stream_offset = 0;
1032 mock_quic_data.AddWrite(ConstructSettingsPacket( 1023 mock_quic_data.AddWrite(
1033 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 1024 ConstructInitialSettingsPacket(1, &header_stream_offset));
1034 &header_stream_offset));
1035 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 1025 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
1036 2, kClientDataStreamId1, true, true, 1026 2, kClientDataStreamId1, true, true,
1037 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 1027 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
1038 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 1028 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
1039 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 1029 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
1040 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 1030 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
1041 false, true, 0, "hello!")); 1031 false, true, 0, "hello!"));
1042 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 1032 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
1043 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 1033 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
1044 mock_quic_data.AddRead(ASYNC, 0); 1034 mock_quic_data.AddRead(ASYNC, 0);
(...skipping 20 matching lines...) Expand all
1065 url::SchemeHostPort server(request_.url); 1055 url::SchemeHostPort server(request_.url);
1066 AlternativeService alternative_service(kProtoQUIC, kDefaultServerHostName, 1056 AlternativeService alternative_service(kProtoQUIC, kDefaultServerHostName,
1067 443); 1057 443);
1068 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 1058 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
1069 http_server_properties_.SetAlternativeService(server, alternative_service, 1059 http_server_properties_.SetAlternativeService(server, alternative_service,
1070 expiration); 1060 expiration);
1071 1061
1072 // First try: alternative job uses QUIC, gets 421 Misdirected Request error. 1062 // First try: alternative job uses QUIC, gets 421 Misdirected Request error.
1073 MockQuicData mock_quic_data; 1063 MockQuicData mock_quic_data;
1074 QuicStreamOffset request_header_offset = 0; 1064 QuicStreamOffset request_header_offset = 0;
1075 mock_quic_data.AddWrite(ConstructSettingsPacket( 1065 mock_quic_data.AddWrite(
1076 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 1066 ConstructInitialSettingsPacket(1, &request_header_offset));
1077 &request_header_offset));
1078 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 1067 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
1079 2, kClientDataStreamId1, true, true, 1068 2, kClientDataStreamId1, true, true,
1080 GetRequestHeaders("GET", "https", "/"), &request_header_offset)); 1069 GetRequestHeaders("GET", "https", "/"), &request_header_offset));
1081 mock_quic_data.AddRead( 1070 mock_quic_data.AddRead(
1082 ConstructServerResponseHeadersPacket(1, kClientDataStreamId1, false, true, 1071 ConstructServerResponseHeadersPacket(1, kClientDataStreamId1, false, true,
1083 GetResponseHeaders("421"), nullptr)); 1072 GetResponseHeaders("421"), nullptr));
1084 mock_quic_data.AddWrite(ConstructClientAckAndRstPacket( 1073 mock_quic_data.AddWrite(ConstructClientAckAndRstPacket(
1085 3, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1)); 1074 3, kClientDataStreamId1, QUIC_STREAM_CANCELLED, 1, 1, 1));
1086 mock_quic_data.AddRead(ASYNC, OK); 1075 mock_quic_data.AddRead(ASYNC, OK);
1087 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 1076 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
(...skipping 27 matching lines...) Expand all
1115 CheckResponsePort(&trans, 443); 1104 CheckResponsePort(&trans, 443);
1116 CheckResponseData(&trans, "hello!"); 1105 CheckResponseData(&trans, "hello!");
1117 } 1106 }
1118 1107
1119 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { 1108 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) {
1120 params_.origins_to_force_quic_on.insert( 1109 params_.origins_to_force_quic_on.insert(
1121 HostPortPair::FromString("mail.example.org:443")); 1110 HostPortPair::FromString("mail.example.org:443"));
1122 1111
1123 MockQuicData mock_quic_data1; 1112 MockQuicData mock_quic_data1;
1124 QuicStreamOffset header_stream_offset = 0; 1113 QuicStreamOffset header_stream_offset = 0;
1125 mock_quic_data1.AddWrite(ConstructSettingsPacket( 1114 mock_quic_data1.AddWrite(
1126 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 1115 ConstructInitialSettingsPacket(1, &header_stream_offset));
1127 &header_stream_offset));
1128 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); 1116 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED);
1129 MockQuicData mock_quic_data2; 1117 MockQuicData mock_quic_data2;
1130 header_stream_offset = 0; 1118 header_stream_offset = 0;
1131 mock_quic_data2.AddWrite(ConstructSettingsPacket( 1119 mock_quic_data2.AddWrite(
1132 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 1120 ConstructInitialSettingsPacket(1, &header_stream_offset));
1133 &header_stream_offset));
1134 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); 1121 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_);
1135 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); 1122 mock_quic_data2.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED);
1136 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_); 1123 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_);
1137 1124
1138 mock_quic_data1.AddSocketDataToFactory(&socket_factory_); 1125 mock_quic_data1.AddSocketDataToFactory(&socket_factory_);
1139 mock_quic_data2.AddSocketDataToFactory(&socket_factory_); 1126 mock_quic_data2.AddSocketDataToFactory(&socket_factory_);
1140 1127
1141 CreateSession(); 1128 CreateSession();
1142 1129
1143 EXPECT_EQ(0U, test_socket_performance_watcher_factory_.watcher_count()); 1130 EXPECT_EQ(0U, test_socket_performance_watcher_factory_.watcher_count());
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1179 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 1166 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
1180 MockRead(ASYNC, OK)}; 1167 MockRead(ASYNC, OK)};
1181 1168
1182 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, 1169 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr,
1183 0); 1170 0);
1184 socket_factory_.AddSocketDataProvider(&http_data); 1171 socket_factory_.AddSocketDataProvider(&http_data);
1185 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 1172 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
1186 1173
1187 MockQuicData mock_quic_data; 1174 MockQuicData mock_quic_data;
1188 QuicStreamOffset header_stream_offset = 0; 1175 QuicStreamOffset header_stream_offset = 0;
1189 mock_quic_data.AddWrite(ConstructSettingsPacket( 1176 mock_quic_data.AddWrite(
1190 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 1177 ConstructInitialSettingsPacket(1, &header_stream_offset));
1191 &header_stream_offset));
1192 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 1178 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
1193 2, kClientDataStreamId1, true, true, 1179 2, kClientDataStreamId1, true, true,
1194 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 1180 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
1195 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 1181 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
1196 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 1182 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
1197 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 1183 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
1198 false, true, 0, "hello!")); 1184 false, true, 0, "hello!"));
1199 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 1185 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
1200 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 1186 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
1201 mock_quic_data.AddRead(ASYNC, 0); // EOF 1187 mock_quic_data.AddRead(ASYNC, 0); // EOF
(...skipping 16 matching lines...) Expand all
1218 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 1204 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
1219 MockRead(ASYNC, OK)}; 1205 MockRead(ASYNC, OK)};
1220 1206
1221 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, 1207 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr,
1222 0); 1208 0);
1223 socket_factory_.AddSocketDataProvider(&http_data); 1209 socket_factory_.AddSocketDataProvider(&http_data);
1224 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 1210 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
1225 1211
1226 MockQuicData mock_quic_data; 1212 MockQuicData mock_quic_data;
1227 QuicStreamOffset header_stream_offset = 0; 1213 QuicStreamOffset header_stream_offset = 0;
1228 mock_quic_data.AddWrite(ConstructSettingsPacket( 1214 mock_quic_data.AddWrite(
1229 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 1215 ConstructInitialSettingsPacket(1, &header_stream_offset));
1230 &header_stream_offset));
1231 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 1216 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
1232 2, kClientDataStreamId1, true, true, 1217 2, kClientDataStreamId1, true, true,
1233 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 1218 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
1234 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 1219 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
1235 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 1220 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
1236 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 1221 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
1237 false, true, 0, "hello!")); 1222 false, true, 0, "hello!"));
1238 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 1223 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
1239 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 1224 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
1240 mock_quic_data.AddRead(ASYNC, 0); // EOF 1225 mock_quic_data.AddRead(ASYNC, 0); // EOF
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1323 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 1308 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
1324 MockRead(ASYNC, OK)}; 1309 MockRead(ASYNC, OK)};
1325 1310
1326 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, 1311 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr,
1327 0); 1312 0);
1328 socket_factory_.AddSocketDataProvider(&http_data); 1313 socket_factory_.AddSocketDataProvider(&http_data);
1329 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 1314 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
1330 1315
1331 MockQuicData mock_quic_data; 1316 MockQuicData mock_quic_data;
1332 QuicStreamOffset header_stream_offset = 0; 1317 QuicStreamOffset header_stream_offset = 0;
1333 mock_quic_data.AddWrite(ConstructSettingsPacket( 1318 mock_quic_data.AddWrite(
1334 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 1319 ConstructInitialSettingsPacket(1, &header_stream_offset));
1335 &header_stream_offset));
1336 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 1320 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
1337 2, kClientDataStreamId1, true, true, 1321 2, kClientDataStreamId1, true, true,
1338 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 1322 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
1339 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 1323 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
1340 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 1324 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
1341 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 1325 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
1342 false, true, 0, "hello!")); 1326 false, true, 0, "hello!"));
1343 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 1327 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
1344 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 1328 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
1345 mock_quic_data.AddRead(ASYNC, 0); // EOF 1329 mock_quic_data.AddRead(ASYNC, 0); // EOF
1346 1330
1347 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 1331 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
1348 1332
1349 AddHangingNonAlternateProtocolSocketData(); 1333 AddHangingNonAlternateProtocolSocketData();
1350 CreateSession(); 1334 CreateSession();
1351 1335
1352 SendRequestAndExpectHttpResponse("hello world"); 1336 SendRequestAndExpectHttpResponse("hello world");
1353 SendRequestAndExpectQuicResponse("hello!"); 1337 SendRequestAndExpectQuicResponse("hello!");
1354 } 1338 }
1355 1339
1356 TEST_P(QuicNetworkTransactionTest, GoAwayWithConnectionMigrationOnPortsOnly) { 1340 TEST_P(QuicNetworkTransactionTest, GoAwayWithConnectionMigrationOnPortsOnly) {
1357 MockQuicData mock_quic_data; 1341 MockQuicData mock_quic_data;
1358 QuicStreamOffset header_stream_offset = 0; 1342 QuicStreamOffset header_stream_offset = 0;
1359 mock_quic_data.AddWrite(ConstructSettingsPacket( 1343 mock_quic_data.AddWrite(
1360 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 1344 ConstructInitialSettingsPacket(1, &header_stream_offset));
1361 &header_stream_offset));
1362 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 1345 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
1363 2, kClientDataStreamId1, true, true, 1346 2, kClientDataStreamId1, true, true,
1364 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 1347 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
1365 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 1348 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
1366 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 1349 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
1367 // Read a GoAway packet with 1350 // Read a GoAway packet with
1368 // QuicErrorCode: QUIC_ERROR_MIGRATING_PORT from the peer. 1351 // QuicErrorCode: QUIC_ERROR_MIGRATING_PORT from the peer.
1369 mock_quic_data.AddSynchronousRead(ConstructServerGoAwayPacket( 1352 mock_quic_data.AddSynchronousRead(ConstructServerGoAwayPacket(
1370 2, QUIC_ERROR_MIGRATING_PORT, 1353 2, QUIC_ERROR_MIGRATING_PORT,
1371 "connection migration with port change only")); 1354 "connection migration with port change only"));
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1430 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 1413 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
1431 1414
1432 std::string request_data; 1415 std::string request_data;
1433 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 1416 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
1434 1, kClientDataStreamId1, true, true, priority, 1417 1, kClientDataStreamId1, true, true, priority,
1435 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset, 1418 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset,
1436 &request_data)); 1419 &request_data));
1437 1420
1438 std::string settings_data; 1421 std::string settings_data;
1439 QuicStreamOffset settings_offset = header_stream_offset; 1422 QuicStreamOffset settings_offset = header_stream_offset;
1440 quic_data.AddWrite(client_maker_.MakeSettingsPacketAndSaveData( 1423 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacketAndSaveData(
1441 2, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, true, 1424 2, &header_stream_offset, &settings_data));
1442 &header_stream_offset, &settings_data));
1443 // TLP 1 1425 // TLP 1
1444 quic_data.AddWrite(client_maker_.MakeDataPacket(3, kHeadersStreamId, true, 1426 quic_data.AddWrite(client_maker_.MakeDataPacket(3, kHeadersStreamId, true,
1445 false, 0, request_data)); 1427 false, 0, request_data));
1446 // TLP 2 1428 // TLP 2
1447 quic_data.AddWrite(client_maker_.MakeDataPacket( 1429 quic_data.AddWrite(client_maker_.MakeDataPacket(
1448 4, kHeadersStreamId, true, false, settings_offset, settings_data)); 1430 4, kHeadersStreamId, true, false, settings_offset, settings_data));
1449 // RTO 1 1431 // RTO 1
1450 quic_data.AddWrite(client_maker_.MakeDataPacket(5, kHeadersStreamId, true, 1432 quic_data.AddWrite(client_maker_.MakeDataPacket(5, kHeadersStreamId, true,
1451 false, 0, request_data)); 1433 false, 0, request_data));
1452 quic_data.AddWrite(client_maker_.MakeDataPacket( 1434 quic_data.AddWrite(client_maker_.MakeDataPacket(
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
1521 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 1503 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
1522 1504
1523 std::string request_data; 1505 std::string request_data;
1524 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 1506 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
1525 1, kClientDataStreamId1, true, true, priority, 1507 1, kClientDataStreamId1, true, true, priority,
1526 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset, 1508 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset,
1527 &request_data)); 1509 &request_data));
1528 1510
1529 std::string settings_data; 1511 std::string settings_data;
1530 QuicStreamOffset settings_offset = header_stream_offset; 1512 QuicStreamOffset settings_offset = header_stream_offset;
1531 quic_data.AddWrite(client_maker_.MakeSettingsPacketAndSaveData( 1513 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacketAndSaveData(
1532 2, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, true, 1514 2, &header_stream_offset, &settings_data));
1533 &header_stream_offset, &settings_data));
1534 // TLP 1 1515 // TLP 1
1535 quic_data.AddWrite(client_maker_.MakeDataPacket(3, kHeadersStreamId, true, 1516 quic_data.AddWrite(client_maker_.MakeDataPacket(3, kHeadersStreamId, true,
1536 false, 0, request_data)); 1517 false, 0, request_data));
1537 // TLP 2 1518 // TLP 2
1538 quic_data.AddWrite(client_maker_.MakeDataPacket( 1519 quic_data.AddWrite(client_maker_.MakeDataPacket(
1539 4, kHeadersStreamId, true, false, settings_offset, settings_data)); 1520 4, kHeadersStreamId, true, false, settings_offset, settings_data));
1540 // RTO 1 1521 // RTO 1
1541 quic_data.AddWrite(client_maker_.MakeDataPacket(5, kHeadersStreamId, true, 1522 quic_data.AddWrite(client_maker_.MakeDataPacket(5, kHeadersStreamId, true,
1542 false, 0, request_data)); 1523 false, 0, request_data));
1543 quic_data.AddWrite(client_maker_.MakeDataPacket( 1524 quic_data.AddWrite(client_maker_.MakeDataPacket(
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1621 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 1602 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
1622 1603
1623 std::string request_data; 1604 std::string request_data;
1624 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 1605 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
1625 1, kClientDataStreamId1, true, true, priority, 1606 1, kClientDataStreamId1, true, true, priority,
1626 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset, 1607 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset,
1627 &request_data)); 1608 &request_data));
1628 1609
1629 std::string settings_data; 1610 std::string settings_data;
1630 QuicStreamOffset settings_offset = header_stream_offset; 1611 QuicStreamOffset settings_offset = header_stream_offset;
1631 quic_data.AddWrite(client_maker_.MakeSettingsPacketAndSaveData( 1612 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacketAndSaveData(
1632 2, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, true, 1613 2, &header_stream_offset, &settings_data));
1633 &header_stream_offset, &settings_data));
1634 1614
1635 quic_data.AddWrite(client_maker_.MakeRstPacket(3, true, kClientDataStreamId1, 1615 quic_data.AddWrite(client_maker_.MakeRstPacket(3, true, kClientDataStreamId1,
1636 QUIC_STREAM_CANCELLED)); 1616 QUIC_STREAM_CANCELLED));
1637 // TLP 1 1617 // TLP 1
1638 quic_data.AddWrite(client_maker_.MakeDataPacket(4, kHeadersStreamId, true, 1618 quic_data.AddWrite(client_maker_.MakeDataPacket(4, kHeadersStreamId, true,
1639 false, 0, request_data)); 1619 false, 0, request_data));
1640 // TLP 2 1620 // TLP 2
1641 quic_data.AddWrite(client_maker_.MakeDataPacket( 1621 quic_data.AddWrite(client_maker_.MakeDataPacket(
1642 5, kHeadersStreamId, true, false, settings_offset, settings_data)); 1622 5, kHeadersStreamId, true, false, settings_offset, settings_data));
1643 // RTO 1 1623 // RTO 1
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1717 1697
1718 // Verify that if a QUIC protocol error occurs after the handshake is confirmed 1698 // Verify that if a QUIC protocol error occurs after the handshake is confirmed
1719 // the request fails with QUIC_PROTOCOL_ERROR. 1699 // the request fails with QUIC_PROTOCOL_ERROR.
1720 TEST_P(QuicNetworkTransactionTest, ProtocolErrorAfterHandshakeConfirmed) { 1700 TEST_P(QuicNetworkTransactionTest, ProtocolErrorAfterHandshakeConfirmed) {
1721 // The request will initially go out over QUIC. 1701 // The request will initially go out over QUIC.
1722 MockQuicData quic_data; 1702 MockQuicData quic_data;
1723 QuicStreamOffset header_stream_offset = 0; 1703 QuicStreamOffset header_stream_offset = 0;
1724 quic_data.AddWrite(ConstructClientRequestHeadersPacket( 1704 quic_data.AddWrite(ConstructClientRequestHeadersPacket(
1725 1, kClientDataStreamId1, true, true, 1705 1, kClientDataStreamId1, true, true,
1726 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 1706 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
1727 quic_data.AddWrite(ConstructSettingsPacket(2, SETTINGS_MAX_HEADER_LIST_SIZE, 1707 quic_data.AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset));
1728 kDefaultMaxUncompressedHeaderSize,
1729 &header_stream_offset));
1730 // Peer sending data from an non-existing stream causes this end to raise 1708 // Peer sending data from an non-existing stream causes this end to raise
1731 // error and close connection. 1709 // error and close connection.
1732 quic_data.AddRead( 1710 quic_data.AddRead(
1733 ConstructServerRstPacket(1, false, 99, QUIC_STREAM_LAST_ERROR)); 1711 ConstructServerRstPacket(1, false, 99, QUIC_STREAM_LAST_ERROR));
1734 std::string quic_error_details = "Data for nonexistent stream"; 1712 std::string quic_error_details = "Data for nonexistent stream";
1735 quic_data.AddWrite(ConstructClientAckAndConnectionClosePacket( 1713 quic_data.AddWrite(ConstructClientAckAndConnectionClosePacket(
1736 3, QuicTime::Delta::Zero(), 1, 1, 1, QUIC_INVALID_STREAM_ID, 1714 3, QuicTime::Delta::Zero(), 1, 1, 1, QUIC_INVALID_STREAM_ID,
1737 quic_error_details)); 1715 quic_error_details));
1738 quic_data.AddSocketDataToFactory(&socket_factory_); 1716 quic_data.AddSocketDataToFactory(&socket_factory_);
1739 1717
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1792 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 1770 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
1793 1771
1794 std::string request_data; 1772 std::string request_data;
1795 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 1773 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
1796 1, kClientDataStreamId1, true, true, priority, 1774 1, kClientDataStreamId1, true, true, priority,
1797 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset, 1775 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset,
1798 &request_data)); 1776 &request_data));
1799 1777
1800 std::string settings_data; 1778 std::string settings_data;
1801 QuicStreamOffset settings_offset = header_stream_offset; 1779 QuicStreamOffset settings_offset = header_stream_offset;
1802 quic_data.AddWrite(client_maker_.MakeSettingsPacketAndSaveData( 1780 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacketAndSaveData(
1803 2, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, true, 1781 2, &header_stream_offset, &settings_data));
1804 &header_stream_offset, &settings_data));
1805 // TLP 1 1782 // TLP 1
1806 quic_data.AddWrite(client_maker_.MakeDataPacket(3, kHeadersStreamId, true, 1783 quic_data.AddWrite(client_maker_.MakeDataPacket(3, kHeadersStreamId, true,
1807 false, 0, request_data)); 1784 false, 0, request_data));
1808 // TLP 2 1785 // TLP 2
1809 quic_data.AddWrite(client_maker_.MakeDataPacket( 1786 quic_data.AddWrite(client_maker_.MakeDataPacket(
1810 4, kHeadersStreamId, true, false, settings_offset, settings_data)); 1787 4, kHeadersStreamId, true, false, settings_offset, settings_data));
1811 // RTO 1 1788 // RTO 1
1812 quic_data.AddWrite(client_maker_.MakeDataPacket(5, kHeadersStreamId, true, 1789 quic_data.AddWrite(client_maker_.MakeDataPacket(5, kHeadersStreamId, true,
1813 false, 0, request_data)); 1790 false, 0, request_data));
1814 quic_data.AddWrite(client_maker_.MakeDataPacket( 1791 quic_data.AddWrite(client_maker_.MakeDataPacket(
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1910 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 1887 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
1911 1888
1912 std::string request_data; 1889 std::string request_data;
1913 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 1890 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
1914 1, kClientDataStreamId1, true, true, priority, 1891 1, kClientDataStreamId1, true, true, priority,
1915 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset, 1892 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset,
1916 &request_data)); 1893 &request_data));
1917 1894
1918 std::string settings_data; 1895 std::string settings_data;
1919 QuicStreamOffset settings_offset = header_stream_offset; 1896 QuicStreamOffset settings_offset = header_stream_offset;
1920 quic_data.AddWrite(client_maker_.MakeSettingsPacketAndSaveData( 1897 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacketAndSaveData(
1921 2, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, true, 1898 2, &header_stream_offset, &settings_data));
1922 &header_stream_offset, &settings_data));
1923 // TLP 1 1899 // TLP 1
1924 quic_data.AddWrite(client_maker_.MakeDataPacket(3, kHeadersStreamId, true, 1900 quic_data.AddWrite(client_maker_.MakeDataPacket(3, kHeadersStreamId, true,
1925 false, 0, request_data)); 1901 false, 0, request_data));
1926 // TLP 2 1902 // TLP 2
1927 quic_data.AddWrite(client_maker_.MakeDataPacket( 1903 quic_data.AddWrite(client_maker_.MakeDataPacket(
1928 4, kHeadersStreamId, true, false, settings_offset, settings_data)); 1904 4, kHeadersStreamId, true, false, settings_offset, settings_data));
1929 // RTO 1 1905 // RTO 1
1930 quic_data.AddWrite(client_maker_.MakeDataPacket(5, kHeadersStreamId, true, 1906 quic_data.AddWrite(client_maker_.MakeDataPacket(5, kHeadersStreamId, true,
1931 false, 0, request_data)); 1907 false, 0, request_data));
1932 quic_data.AddWrite(client_maker_.MakeDataPacket( 1908 quic_data.AddWrite(client_maker_.MakeDataPacket(
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
2031 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 2007 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
2032 2008
2033 std::string request_data; 2009 std::string request_data;
2034 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 2010 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
2035 1, kClientDataStreamId1, true, true, priority, 2011 1, kClientDataStreamId1, true, true, priority,
2036 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset, 2012 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset,
2037 &request_data)); 2013 &request_data));
2038 2014
2039 std::string settings_data; 2015 std::string settings_data;
2040 QuicStreamOffset settings_offset = header_stream_offset; 2016 QuicStreamOffset settings_offset = header_stream_offset;
2041 quic_data.AddWrite(client_maker_.MakeSettingsPacketAndSaveData( 2017 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacketAndSaveData(
2042 2, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, true, 2018 2, &header_stream_offset, &settings_data));
2043 &header_stream_offset, &settings_data));
2044 2019
2045 quic_data.AddRead(ConstructServerResponseHeadersPacket( 2020 quic_data.AddRead(ConstructServerResponseHeadersPacket(
2046 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 2021 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
2047 // quic_data.AddWrite(ConstructClientAckPacket(3, 1, 1)); 2022 // quic_data.AddWrite(ConstructClientAckPacket(3, 1, 1));
2048 quic_data.AddWrite(ConstructClientAckPacket( 2023 quic_data.AddWrite(ConstructClientAckPacket(
2049 3, 1, 1, 1, QuicTime::Delta::FromMilliseconds(25))); 2024 3, 1, 1, 1, QuicTime::Delta::FromMilliseconds(25)));
2050 2025
2051 // TLP 1 2026 // TLP 1
2052 quic_data.AddWrite(client_maker_.MakeDataPacket(4, kHeadersStreamId, false, 2027 quic_data.AddWrite(client_maker_.MakeDataPacket(4, kHeadersStreamId, false,
2053 false, 0, request_data)); 2028 false, 0, request_data));
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
2143 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 2118 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
2144 2119
2145 std::string request_data; 2120 std::string request_data;
2146 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 2121 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
2147 1, kClientDataStreamId1, true, true, priority, 2122 1, kClientDataStreamId1, true, true, priority,
2148 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset, 2123 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset,
2149 &request_data)); 2124 &request_data));
2150 2125
2151 std::string settings_data; 2126 std::string settings_data;
2152 QuicStreamOffset settings_offset = header_stream_offset; 2127 QuicStreamOffset settings_offset = header_stream_offset;
2153 quic_data.AddWrite(client_maker_.MakeSettingsPacketAndSaveData( 2128 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacketAndSaveData(
2154 2, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, true, 2129 2, &header_stream_offset, &settings_data));
2155 &header_stream_offset, &settings_data));
2156 // TLP 1 2130 // TLP 1
2157 quic_data.AddWrite(client_maker_.MakeDataPacket(3, kHeadersStreamId, true, 2131 quic_data.AddWrite(client_maker_.MakeDataPacket(3, kHeadersStreamId, true,
2158 false, 0, request_data)); 2132 false, 0, request_data));
2159 // TLP 2 2133 // TLP 2
2160 quic_data.AddWrite(client_maker_.MakeDataPacket( 2134 quic_data.AddWrite(client_maker_.MakeDataPacket(
2161 4, kHeadersStreamId, true, false, settings_offset, settings_data)); 2135 4, kHeadersStreamId, true, false, settings_offset, settings_data));
2162 // RTO 1 2136 // RTO 1
2163 quic_data.AddWrite(client_maker_.MakeDataPacket(5, kHeadersStreamId, true, 2137 quic_data.AddWrite(client_maker_.MakeDataPacket(5, kHeadersStreamId, true,
2164 false, 0, request_data)); 2138 false, 0, request_data));
2165 quic_data.AddWrite(client_maker_.MakeDataPacket( 2139 quic_data.AddWrite(client_maker_.MakeDataPacket(
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
2269 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 2243 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
2270 2244
2271 std::string request_data; 2245 std::string request_data;
2272 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 2246 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
2273 1, kClientDataStreamId1, true, true, priority, 2247 1, kClientDataStreamId1, true, true, priority,
2274 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset, 2248 GetRequestHeaders("GET", "https", "/"), nullptr, &header_stream_offset,
2275 &request_data)); 2249 &request_data));
2276 2250
2277 std::string settings_data; 2251 std::string settings_data;
2278 QuicStreamOffset settings_offset = header_stream_offset; 2252 QuicStreamOffset settings_offset = header_stream_offset;
2279 quic_data.AddWrite(client_maker_.MakeSettingsPacketAndSaveData( 2253 quic_data.AddWrite(client_maker_.MakeInitialSettingsPacketAndSaveData(
2280 2, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, true, 2254 2, &header_stream_offset, &settings_data));
2281 &header_stream_offset, &settings_data));
2282 2255
2283 quic_data.AddWrite(client_maker_.MakeRstPacket(3, true, kClientDataStreamId1, 2256 quic_data.AddWrite(client_maker_.MakeRstPacket(3, true, kClientDataStreamId1,
2284 QUIC_STREAM_CANCELLED)); 2257 QUIC_STREAM_CANCELLED));
2285 // TLP 1 2258 // TLP 1
2286 quic_data.AddWrite(client_maker_.MakeDataPacket(4, kHeadersStreamId, true, 2259 quic_data.AddWrite(client_maker_.MakeDataPacket(4, kHeadersStreamId, true,
2287 false, 0, request_data)); 2260 false, 0, request_data));
2288 // TLP 2 2261 // TLP 2
2289 quic_data.AddWrite(client_maker_.MakeDataPacket( 2262 quic_data.AddWrite(client_maker_.MakeDataPacket(
2290 5, kHeadersStreamId, true, false, settings_offset, settings_data)); 2263 5, kHeadersStreamId, true, false, settings_offset, settings_data));
2291 // RTO 1 2264 // RTO 1
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
2370 ProtocolErrorAfterHandshakeConfirmedThenBroken) { 2343 ProtocolErrorAfterHandshakeConfirmedThenBroken) {
2371 params_.retry_without_alt_svc_on_quic_errors = true; 2344 params_.retry_without_alt_svc_on_quic_errors = true;
2372 params_.quic_idle_connection_timeout_seconds = 5; 2345 params_.quic_idle_connection_timeout_seconds = 5;
2373 2346
2374 // The request will initially go out over QUIC. 2347 // The request will initially go out over QUIC.
2375 MockQuicData quic_data; 2348 MockQuicData quic_data;
2376 QuicStreamOffset header_stream_offset = 0; 2349 QuicStreamOffset header_stream_offset = 0;
2377 quic_data.AddWrite(ConstructClientRequestHeadersPacket( 2350 quic_data.AddWrite(ConstructClientRequestHeadersPacket(
2378 1, kClientDataStreamId1, true, true, 2351 1, kClientDataStreamId1, true, true,
2379 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 2352 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
2380 quic_data.AddWrite(ConstructSettingsPacket(2, SETTINGS_MAX_HEADER_LIST_SIZE, 2353 quic_data.AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset));
2381 kDefaultMaxUncompressedHeaderSize,
2382 &header_stream_offset));
2383 // Peer sending data from an non-existing stream causes this end to raise 2354 // Peer sending data from an non-existing stream causes this end to raise
2384 // error and close connection. 2355 // error and close connection.
2385 quic_data.AddRead( 2356 quic_data.AddRead(
2386 ConstructServerRstPacket(1, false, 99, QUIC_STREAM_LAST_ERROR)); 2357 ConstructServerRstPacket(1, false, 99, QUIC_STREAM_LAST_ERROR));
2387 std::string quic_error_details = "Data for nonexistent stream"; 2358 std::string quic_error_details = "Data for nonexistent stream";
2388 quic_data.AddWrite(ConstructClientAckAndConnectionClosePacket( 2359 quic_data.AddWrite(ConstructClientAckAndConnectionClosePacket(
2389 3, QuicTime::Delta::Zero(), 1, 1, 1, QUIC_INVALID_STREAM_ID, 2360 3, QuicTime::Delta::Zero(), 1, 1, 1, QUIC_INVALID_STREAM_ID,
2390 quic_error_details)); 2361 quic_error_details));
2391 quic_data.AddSocketDataToFactory(&socket_factory_); 2362 quic_data.AddSocketDataToFactory(&socket_factory_);
2392 2363
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
2493 0); 2464 0);
2494 socket_factory_.AddSocketDataProvider(&http_data); 2465 socket_factory_.AddSocketDataProvider(&http_data);
2495 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 2466 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
2496 2467
2497 QuicStreamOffset request_header_offset = 0; 2468 QuicStreamOffset request_header_offset = 0;
2498 QuicStreamOffset response_header_offset = 0; 2469 QuicStreamOffset response_header_offset = 0;
2499 // First QUIC request data. 2470 // First QUIC request data.
2500 // Open a session to foo.example.org:443 using the first entry of the 2471 // Open a session to foo.example.org:443 using the first entry of the
2501 // alternative service list. 2472 // alternative service list.
2502 MockQuicData mock_quic_data; 2473 MockQuicData mock_quic_data;
2503 mock_quic_data.AddWrite(ConstructSettingsPacket( 2474 mock_quic_data.AddWrite(
2504 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 2475 ConstructInitialSettingsPacket(1, &request_header_offset));
2505 &request_header_offset));
2506 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 2476 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
2507 2, kClientDataStreamId1, true, true, 2477 2, kClientDataStreamId1, true, true,
2508 GetRequestHeaders("GET", "https", "/"), &request_header_offset)); 2478 GetRequestHeaders("GET", "https", "/"), &request_header_offset));
2509 2479
2510 std::string alt_svc_list = 2480 std::string alt_svc_list =
2511 "quic=\"mail.example.org:444\", quic=\"foo.example.org:443\", " 2481 "quic=\"mail.example.org:444\", quic=\"foo.example.org:443\", "
2512 "quic=\"bar.example.org:445\""; 2482 "quic=\"bar.example.org:445\"";
2513 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 2483 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
2514 1, kClientDataStreamId1, false, false, 2484 1, kClientDataStreamId1, false, false,
2515 GetResponseHeaders("200 OK", alt_svc_list), &response_header_offset)); 2485 GetResponseHeaders("200 OK", alt_svc_list), &response_header_offset));
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2548 // used. 2518 // used.
2549 TEST_P(QuicNetworkTransactionTest, UseExistingQUICAlternativeProxy) { 2519 TEST_P(QuicNetworkTransactionTest, UseExistingQUICAlternativeProxy) {
2550 base::HistogramTester histogram_tester; 2520 base::HistogramTester histogram_tester;
2551 2521
2552 QuicStreamOffset request_header_offset = 0; 2522 QuicStreamOffset request_header_offset = 0;
2553 QuicStreamOffset response_header_offset = 0; 2523 QuicStreamOffset response_header_offset = 0;
2554 // First QUIC request data. 2524 // First QUIC request data.
2555 // Open a session to foo.example.org:443 using the first entry of the 2525 // Open a session to foo.example.org:443 using the first entry of the
2556 // alternative service list. 2526 // alternative service list.
2557 MockQuicData mock_quic_data; 2527 MockQuicData mock_quic_data;
2558 mock_quic_data.AddWrite(ConstructSettingsPacket( 2528 mock_quic_data.AddWrite(
2559 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 2529 ConstructInitialSettingsPacket(1, &request_header_offset));
2560 &request_header_offset));
2561 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 2530 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
2562 2, kClientDataStreamId1, true, true, 2531 2, kClientDataStreamId1, true, true,
2563 GetRequestHeaders("GET", "http", "/"), &request_header_offset)); 2532 GetRequestHeaders("GET", "http", "/"), &request_header_offset));
2564 2533
2565 std::string alt_svc_list; 2534 std::string alt_svc_list;
2566 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 2535 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
2567 1, kClientDataStreamId1, false, false, 2536 1, kClientDataStreamId1, false, false,
2568 GetResponseHeaders("200 OK", alt_svc_list), &response_header_offset)); 2537 GetResponseHeaders("200 OK", alt_svc_list), &response_header_offset));
2569 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 2538 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
2570 false, true, 0, "hello!")); 2539 false, true, 0, "hello!"));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2615 1); 2584 1);
2616 } 2585 }
2617 2586
2618 // Pool to existing session with matching QuicServerId 2587 // Pool to existing session with matching QuicServerId
2619 // even if alternative service destination is different. 2588 // even if alternative service destination is different.
2620 TEST_P(QuicNetworkTransactionTest, PoolByOrigin) { 2589 TEST_P(QuicNetworkTransactionTest, PoolByOrigin) {
2621 MockQuicData mock_quic_data; 2590 MockQuicData mock_quic_data;
2622 QuicStreamOffset request_header_offset(0); 2591 QuicStreamOffset request_header_offset(0);
2623 QuicStreamOffset response_header_offset(0); 2592 QuicStreamOffset response_header_offset(0);
2624 2593
2625 mock_quic_data.AddWrite(ConstructSettingsPacket( 2594 mock_quic_data.AddWrite(
2626 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 2595 ConstructInitialSettingsPacket(1, &request_header_offset));
2627 &request_header_offset));
2628 // First request. 2596 // First request.
2629 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 2597 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
2630 2, kClientDataStreamId1, true, true, 2598 2, kClientDataStreamId1, true, true,
2631 GetRequestHeaders("GET", "https", "/"), &request_header_offset)); 2599 GetRequestHeaders("GET", "https", "/"), &request_header_offset));
2632 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 2600 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
2633 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"), 2601 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"),
2634 &response_header_offset)); 2602 &response_header_offset));
2635 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 2603 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
2636 false, true, 0, "hello!")); 2604 false, true, 0, "hello!"));
2637 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 2605 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2684 // matching destination is not the first one on the list. 2652 // matching destination is not the first one on the list.
2685 TEST_P(QuicNetworkTransactionTest, PoolByDestination) { 2653 TEST_P(QuicNetworkTransactionTest, PoolByDestination) {
2686 GURL origin1 = request_.url; 2654 GURL origin1 = request_.url;
2687 GURL origin2("https://www.example.org/"); 2655 GURL origin2("https://www.example.org/");
2688 ASSERT_NE(origin1.host(), origin2.host()); 2656 ASSERT_NE(origin1.host(), origin2.host());
2689 2657
2690 MockQuicData mock_quic_data; 2658 MockQuicData mock_quic_data;
2691 QuicStreamOffset request_header_offset(0); 2659 QuicStreamOffset request_header_offset(0);
2692 QuicStreamOffset response_header_offset(0); 2660 QuicStreamOffset response_header_offset(0);
2693 2661
2694 mock_quic_data.AddWrite(ConstructSettingsPacket( 2662 mock_quic_data.AddWrite(
2695 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 2663 ConstructInitialSettingsPacket(1, &request_header_offset));
2696 &request_header_offset));
2697
2698 // First request. 2664 // First request.
2699 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 2665 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
2700 2, kClientDataStreamId1, true, true, 2666 2, kClientDataStreamId1, true, true,
2701 GetRequestHeaders("GET", "https", "/"), &request_header_offset)); 2667 GetRequestHeaders("GET", "https", "/"), &request_header_offset));
2702 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 2668 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
2703 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"), 2669 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"),
2704 &response_header_offset)); 2670 &response_header_offset));
2705 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 2671 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
2706 false, true, 0, "hello!")); 2672 false, true, 0, "hello!"));
2707 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 2673 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
2799 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 2765 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
2800 2766
2801 QuicStreamOffset request_header_offset = 0; 2767 QuicStreamOffset request_header_offset = 0;
2802 QuicStreamOffset response_header_offset = 0; 2768 QuicStreamOffset response_header_offset = 0;
2803 2769
2804 QuicTestPacketMaker client_maker(version_, 0, &clock_, "mail.example.org", 2770 QuicTestPacketMaker client_maker(version_, 0, &clock_, "mail.example.org",
2805 Perspective::IS_CLIENT); 2771 Perspective::IS_CLIENT);
2806 server_maker_.set_hostname("www.example.org"); 2772 server_maker_.set_hostname("www.example.org");
2807 client_maker_.set_hostname("www.example.org"); 2773 client_maker_.set_hostname("www.example.org");
2808 MockQuicData mock_quic_data; 2774 MockQuicData mock_quic_data;
2809 mock_quic_data.AddWrite(ConstructSettingsPacket( 2775 mock_quic_data.AddWrite(
2810 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 2776 ConstructInitialSettingsPacket(1, &request_header_offset));
2811 &request_header_offset));
2812 // First QUIC request data. 2777 // First QUIC request data.
2813 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 2778 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
2814 2, kClientDataStreamId1, true, true, 2779 2, kClientDataStreamId1, true, true,
2815 GetRequestHeaders("GET", "https", "/"), &request_header_offset)); 2780 GetRequestHeaders("GET", "https", "/"), &request_header_offset));
2816 2781
2817 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 2782 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
2818 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"), 2783 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"),
2819 &response_header_offset)); 2784 &response_header_offset));
2820 mock_quic_data.AddRead(ConstructServerDataPacket( 2785 mock_quic_data.AddRead(ConstructServerDataPacket(
2821 2, kClientDataStreamId1, false, true, 0, "hello from mail QUIC!")); 2786 2, kClientDataStreamId1, false, true, 0, "hello from mail QUIC!"));
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
2891 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 2856 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
2892 MockRead(ASYNC, OK)}; 2857 MockRead(ASYNC, OK)};
2893 2858
2894 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, 2859 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr,
2895 0); 2860 0);
2896 socket_factory_.AddSocketDataProvider(&http_data); 2861 socket_factory_.AddSocketDataProvider(&http_data);
2897 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 2862 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
2898 2863
2899 MockQuicData mock_quic_data; 2864 MockQuicData mock_quic_data;
2900 QuicStreamOffset header_stream_offset = 0; 2865 QuicStreamOffset header_stream_offset = 0;
2901 mock_quic_data.AddWrite(ConstructSettingsPacket( 2866 mock_quic_data.AddWrite(
2902 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 2867 ConstructInitialSettingsPacket(1, &header_stream_offset));
2903 &header_stream_offset));
2904 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 2868 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
2905 2, kClientDataStreamId1, true, true, 2869 2, kClientDataStreamId1, true, true,
2906 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 2870 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
2907 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 2871 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
2908 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 2872 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
2909 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 2873 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
2910 false, true, 0, "hello!")); 2874 false, true, 0, "hello!"));
2911 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 2875 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
2912 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 2876 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
2913 mock_quic_data.AddRead(ASYNC, 0); // EOF 2877 mock_quic_data.AddRead(ASYNC, 0); // EOF
(...skipping 29 matching lines...) Expand all
2943 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 2907 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
2944 MockRead(ASYNC, OK)}; 2908 MockRead(ASYNC, OK)};
2945 2909
2946 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, 2910 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr,
2947 0); 2911 0);
2948 socket_factory_.AddSocketDataProvider(&http_data); 2912 socket_factory_.AddSocketDataProvider(&http_data);
2949 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 2913 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
2950 2914
2951 MockQuicData mock_quic_data; 2915 MockQuicData mock_quic_data;
2952 QuicStreamOffset header_stream_offset = 0; 2916 QuicStreamOffset header_stream_offset = 0;
2953 mock_quic_data.AddWrite(ConstructSettingsPacket( 2917 mock_quic_data.AddWrite(
2954 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 2918 ConstructInitialSettingsPacket(1, &header_stream_offset));
2955 &header_stream_offset));
2956 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 2919 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
2957 2, kClientDataStreamId1, true, true, 2920 2, kClientDataStreamId1, true, true,
2958 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 2921 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
2959 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 2922 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
2960 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 2923 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
2961 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 2924 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
2962 false, true, 0, "hello!")); 2925 false, true, 0, "hello!"));
2963 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 2926 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
2964 mock_quic_data.AddRead(SYNCHRONOUS, 0); // EOF 2927 mock_quic_data.AddRead(SYNCHRONOUS, 0); // EOF
2965 2928
2966 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 2929 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
2967 2930
2968 AddHangingNonAlternateProtocolSocketData(); 2931 AddHangingNonAlternateProtocolSocketData();
2969 CreateSession(); 2932 CreateSession();
2970 2933
2971 // TODO(rtenneti): Test QUIC over HTTPS, GetSSLInfo(). 2934 // TODO(rtenneti): Test QUIC over HTTPS, GetSSLInfo().
2972 SendRequestAndExpectHttpResponse("hello world"); 2935 SendRequestAndExpectHttpResponse("hello world");
2973 } 2936 }
2974 2937
2975 // Tests that the connection to an HTTPS proxy is raced with an available 2938 // Tests that the connection to an HTTPS proxy is raced with an available
2976 // alternative proxy server. 2939 // alternative proxy server.
2977 TEST_P(QuicNetworkTransactionTest, QuicProxyWithRacing) { 2940 TEST_P(QuicNetworkTransactionTest, QuicProxyWithRacing) {
2978 base::HistogramTester histogram_tester; 2941 base::HistogramTester histogram_tester;
2979 proxy_service_ = 2942 proxy_service_ =
2980 ProxyService::CreateFixedFromPacResult("HTTPS mail.example.org:443"); 2943 ProxyService::CreateFixedFromPacResult("HTTPS mail.example.org:443");
2981 2944
2982 MockQuicData mock_quic_data; 2945 MockQuicData mock_quic_data;
2983 QuicStreamOffset header_stream_offset = 0; 2946 QuicStreamOffset header_stream_offset = 0;
2984 mock_quic_data.AddWrite(ConstructSettingsPacket( 2947 mock_quic_data.AddWrite(
2985 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 2948 ConstructInitialSettingsPacket(1, &header_stream_offset));
2986 &header_stream_offset));
2987 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 2949 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
2988 2, kClientDataStreamId1, true, true, 2950 2, kClientDataStreamId1, true, true,
2989 GetRequestHeaders("GET", "http", "/"), &header_stream_offset)); 2951 GetRequestHeaders("GET", "http", "/"), &header_stream_offset));
2990 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 2952 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
2991 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 2953 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
2992 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 2954 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
2993 false, true, 0, "hello!")); 2955 false, true, 0, "hello!"));
2994 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 2956 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
2995 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 2957 mock_quic_data.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
2996 mock_quic_data.AddRead(ASYNC, 0); // EOF 2958 mock_quic_data.AddRead(ASYNC, 0); // EOF
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
3170 3132
3171 request_.url = GURL("http://mail.example.org/"); 3133 request_.url = GURL("http://mail.example.org/");
3172 CreateSession(); 3134 CreateSession();
3173 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT); 3135 AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT);
3174 SendRequestAndExpectHttpResponse("hello world"); 3136 SendRequestAndExpectHttpResponse("hello world");
3175 } 3137 }
3176 3138
3177 TEST_P(QuicNetworkTransactionTest, ZeroRTTWithConfirmationRequired) { 3139 TEST_P(QuicNetworkTransactionTest, ZeroRTTWithConfirmationRequired) {
3178 MockQuicData mock_quic_data; 3140 MockQuicData mock_quic_data;
3179 QuicStreamOffset header_stream_offset = 0; 3141 QuicStreamOffset header_stream_offset = 0;
3180 mock_quic_data.AddWrite(ConstructSettingsPacket( 3142 mock_quic_data.AddWrite(
3181 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 3143 ConstructInitialSettingsPacket(1, &header_stream_offset));
3182 &header_stream_offset));
3183 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 3144 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
3184 2, kClientDataStreamId1, true, true, 3145 2, kClientDataStreamId1, true, true,
3185 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 3146 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
3186 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 3147 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
3187 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 3148 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
3188 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 3149 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
3189 false, true, 0, "hello!")); 3150 false, true, 0, "hello!"));
3190 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 3151 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
3191 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read 3152 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read
3192 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 3153 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
(...skipping 30 matching lines...) Expand all
3223 EXPECT_THAT(callback.WaitForResult(), IsOk()); 3184 EXPECT_THAT(callback.WaitForResult(), IsOk());
3224 3185
3225 CheckWasQuicResponse(&trans); 3186 CheckWasQuicResponse(&trans);
3226 CheckResponseData(&trans, "hello!"); 3187 CheckResponseData(&trans, "hello!");
3227 } 3188 }
3228 3189
3229 TEST_P(QuicNetworkTransactionTest, 3190 TEST_P(QuicNetworkTransactionTest,
3230 LogGranularQuicErrorCodeOnQuicProtocolErrorLocal) { 3191 LogGranularQuicErrorCodeOnQuicProtocolErrorLocal) {
3231 MockQuicData mock_quic_data; 3192 MockQuicData mock_quic_data;
3232 QuicStreamOffset header_stream_offset = 0; 3193 QuicStreamOffset header_stream_offset = 0;
3233 mock_quic_data.AddWrite(ConstructSettingsPacket( 3194 mock_quic_data.AddWrite(
3234 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 3195 ConstructInitialSettingsPacket(1, &header_stream_offset));
3235 &header_stream_offset));
3236 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 3196 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
3237 2, kClientDataStreamId1, true, true, 3197 2, kClientDataStreamId1, true, true,
3238 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 3198 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
3239 // Read a close connection packet with 3199 // Read a close connection packet with
3240 // QuicErrorCode: QUIC_CRYPTO_VERSION_NOT_SUPPORTED from the peer. 3200 // QuicErrorCode: QUIC_CRYPTO_VERSION_NOT_SUPPORTED from the peer.
3241 mock_quic_data.AddRead(ConstructServerConnectionClosePacket(1)); 3201 mock_quic_data.AddRead(ConstructServerConnectionClosePacket(1));
3242 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 3202 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
3243 3203
3244 // The non-alternate protocol job needs to hang in order to guarantee that 3204 // The non-alternate protocol job needs to hang in order to guarantee that
3245 // the alternate-protocol job will "win". 3205 // the alternate-protocol job will "win".
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
3277 3237
3278 trans.PopulateNetErrorDetails(&details); 3238 trans.PopulateNetErrorDetails(&details);
3279 // Verify the error code logged is what sent by the peer. 3239 // Verify the error code logged is what sent by the peer.
3280 EXPECT_EQ(QUIC_CRYPTO_VERSION_NOT_SUPPORTED, details.quic_connection_error); 3240 EXPECT_EQ(QUIC_CRYPTO_VERSION_NOT_SUPPORTED, details.quic_connection_error);
3281 } 3241 }
3282 3242
3283 TEST_P(QuicNetworkTransactionTest, 3243 TEST_P(QuicNetworkTransactionTest,
3284 LogGranularQuicErrorCodeOnQuicProtocolErrorRemote) { 3244 LogGranularQuicErrorCodeOnQuicProtocolErrorRemote) {
3285 MockQuicData mock_quic_data; 3245 MockQuicData mock_quic_data;
3286 QuicStreamOffset header_stream_offset = 0; 3246 QuicStreamOffset header_stream_offset = 0;
3287 mock_quic_data.AddWrite(ConstructSettingsPacket( 3247 mock_quic_data.AddWrite(
3288 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 3248 ConstructInitialSettingsPacket(1, &header_stream_offset));
3289 &header_stream_offset));
3290 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 3249 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
3291 2, kClientDataStreamId1, true, true, 3250 2, kClientDataStreamId1, true, true,
3292 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 3251 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
3293 // Peer sending data from an non-existing stream causes this end to raise 3252 // Peer sending data from an non-existing stream causes this end to raise
3294 // error and close connection. 3253 // error and close connection.
3295 mock_quic_data.AddRead( 3254 mock_quic_data.AddRead(
3296 ConstructServerRstPacket(1, false, 99, QUIC_STREAM_LAST_ERROR)); 3255 ConstructServerRstPacket(1, false, 99, QUIC_STREAM_LAST_ERROR));
3297 std::string quic_error_details = "Data for nonexistent stream"; 3256 std::string quic_error_details = "Data for nonexistent stream";
3298 mock_quic_data.AddWrite(ConstructClientAckAndConnectionClosePacket( 3257 mock_quic_data.AddWrite(ConstructClientAckAndConnectionClosePacket(
3299 3, QuicTime::Delta::Zero(), 1, 1, 1, QUIC_INVALID_STREAM_ID, 3258 3, QuicTime::Delta::Zero(), 1, 1, 1, QUIC_INVALID_STREAM_ID,
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
3333 NetErrorDetails details; 3292 NetErrorDetails details;
3334 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error); 3293 EXPECT_EQ(QUIC_NO_ERROR, details.quic_connection_error);
3335 3294
3336 trans.PopulateNetErrorDetails(&details); 3295 trans.PopulateNetErrorDetails(&details);
3337 EXPECT_EQ(QUIC_INVALID_STREAM_ID, details.quic_connection_error); 3296 EXPECT_EQ(QUIC_INVALID_STREAM_ID, details.quic_connection_error);
3338 } 3297 }
3339 3298
3340 TEST_P(QuicNetworkTransactionTest, RstSteamErrorHandling) { 3299 TEST_P(QuicNetworkTransactionTest, RstSteamErrorHandling) {
3341 MockQuicData mock_quic_data; 3300 MockQuicData mock_quic_data;
3342 QuicStreamOffset header_stream_offset = 0; 3301 QuicStreamOffset header_stream_offset = 0;
3343 mock_quic_data.AddWrite(ConstructSettingsPacket( 3302 mock_quic_data.AddWrite(
3344 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 3303 ConstructInitialSettingsPacket(1, &header_stream_offset));
3345 &header_stream_offset));
3346 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 3304 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
3347 2, kClientDataStreamId1, true, true, 3305 2, kClientDataStreamId1, true, true,
3348 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 3306 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
3349 // Read the response headers, then a RST_STREAM frame. 3307 // Read the response headers, then a RST_STREAM frame.
3350 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 3308 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
3351 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 3309 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
3352 mock_quic_data.AddRead(ConstructServerRstPacket( 3310 mock_quic_data.AddRead(ConstructServerRstPacket(
3353 2, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); 3311 2, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED));
3354 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 3312 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
3355 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more read data. 3313 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more read data.
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
3396 EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_), 3354 EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_),
3397 response->connection_info); 3355 response->connection_info);
3398 3356
3399 std::string response_data; 3357 std::string response_data;
3400 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, ReadTransaction(&trans, &response_data)); 3358 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, ReadTransaction(&trans, &response_data));
3401 } 3359 }
3402 3360
3403 TEST_P(QuicNetworkTransactionTest, RstSteamBeforeHeaders) { 3361 TEST_P(QuicNetworkTransactionTest, RstSteamBeforeHeaders) {
3404 MockQuicData mock_quic_data; 3362 MockQuicData mock_quic_data;
3405 QuicStreamOffset header_stream_offset = 0; 3363 QuicStreamOffset header_stream_offset = 0;
3406 mock_quic_data.AddWrite(ConstructSettingsPacket( 3364 mock_quic_data.AddWrite(
3407 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 3365 ConstructInitialSettingsPacket(1, &header_stream_offset));
3408 &header_stream_offset));
3409 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 3366 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
3410 2, kClientDataStreamId1, true, true, 3367 2, kClientDataStreamId1, true, true,
3411 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 3368 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
3412 mock_quic_data.AddRead(ConstructServerRstPacket( 3369 mock_quic_data.AddRead(ConstructServerRstPacket(
3413 1, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED)); 3370 1, false, kClientDataStreamId1, QUIC_STREAM_CANCELLED));
3414 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more read data. 3371 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more read data.
3415 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 3372 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
3416 3373
3417 // The non-alternate protocol job needs to hang in order to guarantee that 3374 // The non-alternate protocol job needs to hang in order to guarantee that
3418 // the alternate-protocol job will "win". 3375 // the alternate-protocol job will "win".
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
3739 EXPECT_FALSE(test_proxy_delegate.alternative_proxy_server().is_valid()); 3696 EXPECT_FALSE(test_proxy_delegate.alternative_proxy_server().is_valid());
3740 EXPECT_TRUE(session_->proxy_service()->proxy_retry_info().empty()); 3697 EXPECT_TRUE(session_->proxy_service()->proxy_retry_info().empty());
3741 } 3698 }
3742 3699
3743 TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) { 3700 TEST_P(QuicNetworkTransactionTest, SecureResourceOverSecureQuic) {
3744 client_maker_.set_hostname("www.example.org"); 3701 client_maker_.set_hostname("www.example.org");
3745 EXPECT_FALSE( 3702 EXPECT_FALSE(
3746 test_socket_performance_watcher_factory_.rtt_notification_received()); 3703 test_socket_performance_watcher_factory_.rtt_notification_received());
3747 MockQuicData mock_quic_data; 3704 MockQuicData mock_quic_data;
3748 QuicStreamOffset header_stream_offset = 0; 3705 QuicStreamOffset header_stream_offset = 0;
3749 mock_quic_data.AddWrite(ConstructSettingsPacket( 3706 mock_quic_data.AddWrite(
3750 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 3707 ConstructInitialSettingsPacket(1, &header_stream_offset));
3751 &header_stream_offset));
3752 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 3708 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
3753 2, kClientDataStreamId1, true, true, 3709 2, kClientDataStreamId1, true, true,
3754 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 3710 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
3755 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 3711 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
3756 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); 3712 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK")));
3757 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, 3713 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1,
3758 false, true, 0, "hello!")); 3714 false, true, 0, "hello!"));
3759 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 3715 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
3760 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more read data. 3716 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more read data.
3761 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 3717 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
3855 mock_ncn->SetConnectedNetworksList( 3811 mock_ncn->SetConnectedNetworksList(
3856 {kDefaultNetworkForTests, kNewNetworkForTests}); 3812 {kDefaultNetworkForTests, kNewNetworkForTests});
3857 3813
3858 params_.origins_to_force_quic_on.insert( 3814 params_.origins_to_force_quic_on.insert(
3859 HostPortPair::FromString("mail.example.org:443")); 3815 HostPortPair::FromString("mail.example.org:443"));
3860 params_.quic_migrate_sessions_on_network_change = true; 3816 params_.quic_migrate_sessions_on_network_change = true;
3861 3817
3862 MockQuicData socket_data; 3818 MockQuicData socket_data;
3863 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3819 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3864 QuicStreamOffset offset = 0; 3820 QuicStreamOffset offset = 0;
3865 socket_data.AddWrite( 3821 socket_data.AddWrite(ConstructInitialSettingsPacket(1, &offset));
3866 ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE,
3867 kDefaultMaxUncompressedHeaderSize, &offset));
3868 socket_data.AddWrite(ConstructClientRequestHeadersPacket( 3822 socket_data.AddWrite(ConstructClientRequestHeadersPacket(
3869 2, kClientDataStreamId1, true, false, 3823 2, kClientDataStreamId1, true, false,
3870 GetRequestHeaders("POST", "https", "/"), &offset)); 3824 GetRequestHeaders("POST", "https", "/"), &offset));
3871 socket_data.AddWrite(SYNCHRONOUS, ERR_FAILED); 3825 socket_data.AddWrite(SYNCHRONOUS, ERR_FAILED);
3872 socket_data.AddSocketDataToFactory(&socket_factory_); 3826 socket_data.AddSocketDataToFactory(&socket_factory_);
3873 3827
3874 MockQuicData socket_data2; 3828 MockQuicData socket_data2;
3875 socket_data2.AddConnect(SYNCHRONOUS, ERR_ADDRESS_INVALID); 3829 socket_data2.AddConnect(SYNCHRONOUS, ERR_ADDRESS_INVALID);
3876 socket_data2.AddSocketDataToFactory(&socket_factory_); 3830 socket_data2.AddSocketDataToFactory(&socket_factory_);
3877 3831
(...skipping 22 matching lines...) Expand all
3900 session_.reset(); 3854 session_.reset();
3901 } 3855 }
3902 3856
3903 // Adds coverage to catch regression such as https://crbug.com/622043 3857 // Adds coverage to catch regression such as https://crbug.com/622043
3904 TEST_P(QuicNetworkTransactionTest, QuicServerPush) { 3858 TEST_P(QuicNetworkTransactionTest, QuicServerPush) {
3905 params_.origins_to_force_quic_on.insert( 3859 params_.origins_to_force_quic_on.insert(
3906 HostPortPair::FromString("mail.example.org:443")); 3860 HostPortPair::FromString("mail.example.org:443"));
3907 3861
3908 MockQuicData mock_quic_data; 3862 MockQuicData mock_quic_data;
3909 QuicStreamOffset header_stream_offset = 0; 3863 QuicStreamOffset header_stream_offset = 0;
3910 mock_quic_data.AddWrite(ConstructSettingsPacket( 3864 mock_quic_data.AddWrite(
3911 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 3865 ConstructInitialSettingsPacket(1, &header_stream_offset));
3912 &header_stream_offset));
3913 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 3866 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
3914 2, kClientDataStreamId1, true, true, 3867 2, kClientDataStreamId1, true, true,
3915 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 3868 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
3916 QuicStreamOffset server_header_offset = 0; 3869 QuicStreamOffset server_header_offset = 0;
3917 mock_quic_data.AddRead(ConstructServerPushPromisePacket( 3870 mock_quic_data.AddRead(ConstructServerPushPromisePacket(
3918 1, kClientDataStreamId1, kServerDataStreamId1, false, 3871 1, kClientDataStreamId1, kServerDataStreamId1, false,
3919 GetRequestHeaders("GET", "https", "/pushed.jpg"), &server_header_offset, 3872 GetRequestHeaders("GET", "https", "/pushed.jpg"), &server_header_offset,
3920 &server_maker_)); 3873 &server_maker_));
3921 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 3874 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
3922 2, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"), 3875 2, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"),
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
3961 } 3914 }
3962 3915
3963 TEST_P(QuicNetworkTransactionTest, QuicForceHolBlocking) { 3916 TEST_P(QuicNetworkTransactionTest, QuicForceHolBlocking) {
3964 params_.quic_force_hol_blocking = true; 3917 params_.quic_force_hol_blocking = true;
3965 params_.origins_to_force_quic_on.insert( 3918 params_.origins_to_force_quic_on.insert(
3966 HostPortPair::FromString("mail.example.org:443")); 3919 HostPortPair::FromString("mail.example.org:443"));
3967 3920
3968 MockQuicData mock_quic_data; 3921 MockQuicData mock_quic_data;
3969 3922
3970 QuicStreamOffset offset = 0; 3923 QuicStreamOffset offset = 0;
3971 mock_quic_data.AddWrite( 3924 mock_quic_data.AddWrite(ConstructInitialSettingsPacket(1, &offset));
3972 ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE,
3973 kDefaultMaxUncompressedHeaderSize, &offset));
3974 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 3925 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
3975 2, kClientDataStreamId1, true, false, 3926 2, kClientDataStreamId1, true, false,
3976 GetRequestHeaders("POST", "https", "/"), &offset)); 3927 GetRequestHeaders("POST", "https", "/"), &offset));
3977 3928
3978 std::unique_ptr<QuicEncryptedPacket> packet; 3929 std::unique_ptr<QuicEncryptedPacket> packet;
3979 if (version_ == QUIC_VERSION_36) { 3930 if (version_ == QUIC_VERSION_36) {
3980 packet = ConstructClientForceHolDataPacket(3, kClientDataStreamId1, true, 3931 packet = ConstructClientForceHolDataPacket(3, kClientDataStreamId1, true,
3981 true, &offset, "1"); 3932 true, &offset, "1");
3982 } else { 3933 } else {
3983 packet = 3934 packet =
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
4043 MockClientSocketFactory* socket_factory_; 3994 MockClientSocketFactory* socket_factory_;
4044 URLRequestContextStorage storage_; 3995 URLRequestContextStorage storage_;
4045 }; 3996 };
4046 3997
4047 TEST_P(QuicNetworkTransactionTest, RawHeaderSizeSuccessfullRequest) { 3998 TEST_P(QuicNetworkTransactionTest, RawHeaderSizeSuccessfullRequest) {
4048 params_.origins_to_force_quic_on.insert( 3999 params_.origins_to_force_quic_on.insert(
4049 HostPortPair::FromString("mail.example.org:443")); 4000 HostPortPair::FromString("mail.example.org:443"));
4050 4001
4051 MockQuicData mock_quic_data; 4002 MockQuicData mock_quic_data;
4052 QuicStreamOffset header_stream_offset = 0; 4003 QuicStreamOffset header_stream_offset = 0;
4053 mock_quic_data.AddWrite(ConstructSettingsPacket( 4004 mock_quic_data.AddWrite(
4054 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 4005 ConstructInitialSettingsPacket(1, &header_stream_offset));
4055 &header_stream_offset));
4056 SpdyHeaderBlock headers(GetRequestHeaders("GET", "https", "/")); 4006 SpdyHeaderBlock headers(GetRequestHeaders("GET", "https", "/"));
4057 headers["user-agent"] = ""; 4007 headers["user-agent"] = "";
4058 headers["accept-encoding"] = "gzip, deflate"; 4008 headers["accept-encoding"] = "gzip, deflate";
4059 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 4009 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
4060 2, kClientDataStreamId1, true, true, std::move(headers), 4010 2, kClientDataStreamId1, true, true, std::move(headers),
4061 &header_stream_offset)); 4011 &header_stream_offset));
4062 4012
4063 QuicStreamOffset expected_raw_header_response_size = 0; 4013 QuicStreamOffset expected_raw_header_response_size = 0;
4064 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 4014 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
4065 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"), 4015 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"),
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
4101 EXPECT_TRUE(mock_quic_data.AllReadDataConsumed()); 4051 EXPECT_TRUE(mock_quic_data.AllReadDataConsumed());
4102 EXPECT_TRUE(mock_quic_data.AllWriteDataConsumed()); 4052 EXPECT_TRUE(mock_quic_data.AllWriteDataConsumed());
4103 } 4053 }
4104 4054
4105 TEST_P(QuicNetworkTransactionTest, RawHeaderSizeSuccessfullPushHeadersFirst) { 4055 TEST_P(QuicNetworkTransactionTest, RawHeaderSizeSuccessfullPushHeadersFirst) {
4106 params_.origins_to_force_quic_on.insert( 4056 params_.origins_to_force_quic_on.insert(
4107 HostPortPair::FromString("mail.example.org:443")); 4057 HostPortPair::FromString("mail.example.org:443"));
4108 4058
4109 MockQuicData mock_quic_data; 4059 MockQuicData mock_quic_data;
4110 QuicStreamOffset header_stream_offset = 0; 4060 QuicStreamOffset header_stream_offset = 0;
4111 mock_quic_data.AddWrite(ConstructSettingsPacket( 4061 mock_quic_data.AddWrite(
4112 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 4062 ConstructInitialSettingsPacket(1, &header_stream_offset));
4113 &header_stream_offset));
4114 SpdyHeaderBlock headers(GetRequestHeaders("GET", "https", "/")); 4063 SpdyHeaderBlock headers(GetRequestHeaders("GET", "https", "/"));
4115 headers["user-agent"] = ""; 4064 headers["user-agent"] = "";
4116 headers["accept-encoding"] = "gzip, deflate"; 4065 headers["accept-encoding"] = "gzip, deflate";
4117 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 4066 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
4118 2, kClientDataStreamId1, true, true, std::move(headers), 4067 2, kClientDataStreamId1, true, true, std::move(headers),
4119 &header_stream_offset)); 4068 &header_stream_offset));
4120 4069
4121 QuicStreamOffset server_header_offset = 0; 4070 QuicStreamOffset server_header_offset = 0;
4122 QuicStreamOffset expected_raw_header_response_size = 0; 4071 QuicStreamOffset expected_raw_header_response_size = 0;
4123 4072
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
4308 std::unique_ptr<QuicEncryptedPacket> ConstructClientAckPacket( 4257 std::unique_ptr<QuicEncryptedPacket> ConstructClientAckPacket(
4309 QuicPacketNumber packet_number, 4258 QuicPacketNumber packet_number,
4310 QuicPacketNumber largest_received, 4259 QuicPacketNumber largest_received,
4311 QuicPacketNumber smallest_received, 4260 QuicPacketNumber smallest_received,
4312 QuicPacketNumber least_unacked, 4261 QuicPacketNumber least_unacked,
4313 QuicTestPacketMaker* maker) { 4262 QuicTestPacketMaker* maker) {
4314 return maker->MakeAckPacket(packet_number, largest_received, 4263 return maker->MakeAckPacket(packet_number, largest_received,
4315 smallest_received, least_unacked, true); 4264 smallest_received, least_unacked, true);
4316 } 4265 }
4317 4266
4318 std::unique_ptr<QuicReceivedPacket> ConstructSettingsPacket( 4267 std::unique_ptr<QuicReceivedPacket> ConstructInitialSettingsPacket(
4319 QuicPacketNumber packet_number, 4268 QuicPacketNumber packet_number,
4320 SpdySettingsIds id,
4321 size_t value,
4322 QuicStreamOffset* offset, 4269 QuicStreamOffset* offset,
4323 QuicTestPacketMaker* maker) { 4270 QuicTestPacketMaker* maker) {
4324 return maker->MakeSettingsPacket(packet_number, id, value, kIncludeVersion, 4271 return maker->MakeInitialSettingsPacket(packet_number, offset);
4325 offset);
4326 } 4272 }
4327 4273
4328 void AddRefusedSocketData() { 4274 void AddRefusedSocketData() {
4329 std::unique_ptr<StaticSocketDataProvider> refused_data( 4275 std::unique_ptr<StaticSocketDataProvider> refused_data(
4330 new StaticSocketDataProvider()); 4276 new StaticSocketDataProvider());
4331 MockConnect refused_connect(SYNCHRONOUS, ERR_CONNECTION_REFUSED); 4277 MockConnect refused_connect(SYNCHRONOUS, ERR_CONNECTION_REFUSED);
4332 refused_data->set_connect_data(refused_connect); 4278 refused_data->set_connect_data(refused_connect);
4333 socket_factory_.AddSocketDataProvider(refused_data.get()); 4279 socket_factory_.AddSocketDataProvider(refused_data.get());
4334 static_socket_data_provider_vector_.push_back(std::move(refused_data)); 4280 static_socket_data_provider_vector_.push_back(std::move(refused_data));
4335 } 4281 }
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
4477 4423
4478 QuicTestPacketMaker client_maker1(version_, 0, &clock_, origin1_, 4424 QuicTestPacketMaker client_maker1(version_, 0, &clock_, origin1_,
4479 Perspective::IS_CLIENT); 4425 Perspective::IS_CLIENT);
4480 QuicTestPacketMaker server_maker1(version_, 0, &clock_, origin1_, 4426 QuicTestPacketMaker server_maker1(version_, 0, &clock_, origin1_,
4481 Perspective::IS_SERVER); 4427 Perspective::IS_SERVER);
4482 4428
4483 QuicStreamOffset request_header_offset(0); 4429 QuicStreamOffset request_header_offset(0);
4484 QuicStreamOffset response_header_offset(0); 4430 QuicStreamOffset response_header_offset(0);
4485 4431
4486 MockQuicData mock_quic_data; 4432 MockQuicData mock_quic_data;
4487 mock_quic_data.AddWrite(ConstructSettingsPacket( 4433 mock_quic_data.AddWrite(ConstructInitialSettingsPacket(
4488 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 4434 1, &request_header_offset, &client_maker1));
4489 &request_header_offset, &client_maker1));
4490 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 4435 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
4491 2, kClientDataStreamId1, true, &request_header_offset, &client_maker1)); 4436 2, kClientDataStreamId1, true, &request_header_offset, &client_maker1));
4492 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 4437 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
4493 1, kClientDataStreamId1, &response_header_offset, &server_maker1)); 4438 1, kClientDataStreamId1, &response_header_offset, &server_maker1));
4494 mock_quic_data.AddRead( 4439 mock_quic_data.AddRead(
4495 ConstructServerDataPacket(2, kClientDataStreamId1, &server_maker1)); 4440 ConstructServerDataPacket(2, kClientDataStreamId1, &server_maker1));
4496 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1, &client_maker1)); 4441 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1, &client_maker1));
4497 4442
4498 QuicTestPacketMaker client_maker2(version_, 0, &clock_, origin2_, 4443 QuicTestPacketMaker client_maker2(version_, 0, &clock_, origin2_,
4499 Perspective::IS_CLIENT); 4444 Perspective::IS_CLIENT);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
4554 verify_details2.cert_verify_result.is_issued_by_known_root = true; 4499 verify_details2.cert_verify_result.is_issued_by_known_root = true;
4555 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2); 4500 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2);
4556 4501
4557 QuicTestPacketMaker client_maker1(version_, 0, &clock_, origin1_, 4502 QuicTestPacketMaker client_maker1(version_, 0, &clock_, origin1_,
4558 Perspective::IS_CLIENT); 4503 Perspective::IS_CLIENT);
4559 QuicTestPacketMaker server_maker1(version_, 0, &clock_, origin1_, 4504 QuicTestPacketMaker server_maker1(version_, 0, &clock_, origin1_,
4560 Perspective::IS_SERVER); 4505 Perspective::IS_SERVER);
4561 4506
4562 MockQuicData mock_quic_data1; 4507 MockQuicData mock_quic_data1;
4563 QuicStreamOffset header_stream_offset1 = 0; 4508 QuicStreamOffset header_stream_offset1 = 0;
4564 mock_quic_data1.AddWrite(ConstructSettingsPacket( 4509 mock_quic_data1.AddWrite(ConstructInitialSettingsPacket(
4565 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 4510 1, &header_stream_offset1, &client_maker1));
4566 &header_stream_offset1, &client_maker1));
4567 mock_quic_data1.AddWrite(ConstructClientRequestHeadersPacket( 4511 mock_quic_data1.AddWrite(ConstructClientRequestHeadersPacket(
4568 2, kClientDataStreamId1, true, &header_stream_offset1, &client_maker1)); 4512 2, kClientDataStreamId1, true, &header_stream_offset1, &client_maker1));
4569 mock_quic_data1.AddRead(ConstructServerResponseHeadersPacket( 4513 mock_quic_data1.AddRead(ConstructServerResponseHeadersPacket(
4570 1, kClientDataStreamId1, &server_maker1)); 4514 1, kClientDataStreamId1, &server_maker1));
4571 mock_quic_data1.AddRead( 4515 mock_quic_data1.AddRead(
4572 ConstructServerDataPacket(2, kClientDataStreamId1, &server_maker1)); 4516 ConstructServerDataPacket(2, kClientDataStreamId1, &server_maker1));
4573 mock_quic_data1.AddWrite( 4517 mock_quic_data1.AddWrite(
4574 ConstructClientAckPacket(3, 2, 1, 1, &client_maker1)); 4518 ConstructClientAckPacket(3, 2, 1, 1, &client_maker1));
4575 mock_quic_data1.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 4519 mock_quic_data1.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
4576 mock_quic_data1.AddRead(ASYNC, 0); // EOF 4520 mock_quic_data1.AddRead(ASYNC, 0); // EOF
4577 4521
4578 mock_quic_data1.AddSocketDataToFactory(&socket_factory_); 4522 mock_quic_data1.AddSocketDataToFactory(&socket_factory_);
4579 4523
4580 AddHangingSocketData(); 4524 AddHangingSocketData();
4581 4525
4582 QuicTestPacketMaker client_maker2(version_, 0, &clock_, origin2_, 4526 QuicTestPacketMaker client_maker2(version_, 0, &clock_, origin2_,
4583 Perspective::IS_CLIENT); 4527 Perspective::IS_CLIENT);
4584 QuicTestPacketMaker server_maker2(version_, 0, &clock_, origin2_, 4528 QuicTestPacketMaker server_maker2(version_, 0, &clock_, origin2_,
4585 Perspective::IS_SERVER); 4529 Perspective::IS_SERVER);
4586 4530
4587 MockQuicData mock_quic_data2; 4531 MockQuicData mock_quic_data2;
4588 QuicStreamOffset header_stream_offset2 = 0; 4532 QuicStreamOffset header_stream_offset2 = 0;
4589 mock_quic_data2.AddWrite(ConstructSettingsPacket( 4533 mock_quic_data2.AddWrite(ConstructInitialSettingsPacket(
4590 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 4534 1, &header_stream_offset2, &client_maker2));
4591 &header_stream_offset2, &client_maker2));
4592 mock_quic_data2.AddWrite(ConstructClientRequestHeadersPacket( 4535 mock_quic_data2.AddWrite(ConstructClientRequestHeadersPacket(
4593 2, kClientDataStreamId1, true, &header_stream_offset2, &client_maker2)); 4536 2, kClientDataStreamId1, true, &header_stream_offset2, &client_maker2));
4594 mock_quic_data2.AddRead(ConstructServerResponseHeadersPacket( 4537 mock_quic_data2.AddRead(ConstructServerResponseHeadersPacket(
4595 1, kClientDataStreamId1, &server_maker2)); 4538 1, kClientDataStreamId1, &server_maker2));
4596 mock_quic_data2.AddRead( 4539 mock_quic_data2.AddRead(
4597 ConstructServerDataPacket(2, kClientDataStreamId1, &server_maker2)); 4540 ConstructServerDataPacket(2, kClientDataStreamId1, &server_maker2));
4598 mock_quic_data2.AddWrite( 4541 mock_quic_data2.AddWrite(
4599 ConstructClientAckPacket(3, 2, 1, 1, &client_maker2)); 4542 ConstructClientAckPacket(3, 2, 1, 1, &client_maker2));
4600 mock_quic_data2.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read 4543 mock_quic_data2.AddRead(ASYNC, ERR_IO_PENDING); // No more data to read
4601 mock_quic_data2.AddRead(ASYNC, 0); // EOF 4544 mock_quic_data2.AddRead(ASYNC, 0); // EOF
4602 4545
4603 mock_quic_data2.AddSocketDataToFactory(&socket_factory_); 4546 mock_quic_data2.AddSocketDataToFactory(&socket_factory_);
4604 4547
4605 AddHangingSocketData(); 4548 AddHangingSocketData();
4606 4549
4607 SendRequestAndExpectQuicResponse(origin1_); 4550 SendRequestAndExpectQuicResponse(origin1_);
4608 SendRequestAndExpectQuicResponse(origin2_); 4551 SendRequestAndExpectQuicResponse(origin2_);
4609 4552
4610 EXPECT_TRUE(AllDataConsumed()); 4553 EXPECT_TRUE(AllDataConsumed());
4611 } 4554 }
4612 4555
4613 // crbug.com/705109 - this confirms that matching request with a body 4556 // crbug.com/705109 - this confirms that matching request with a body
4614 // triggers a crash (pre-fix). 4557 // triggers a crash (pre-fix).
4615 TEST_P(QuicNetworkTransactionTest, QuicServerPushMatchesRequestWithBody) { 4558 TEST_P(QuicNetworkTransactionTest, QuicServerPushMatchesRequestWithBody) {
4616 params_.origins_to_force_quic_on.insert( 4559 params_.origins_to_force_quic_on.insert(
4617 HostPortPair::FromString("mail.example.org:443")); 4560 HostPortPair::FromString("mail.example.org:443"));
4618 4561
4619 MockQuicData mock_quic_data; 4562 MockQuicData mock_quic_data;
4620 QuicStreamOffset header_stream_offset = 0; 4563 QuicStreamOffset header_stream_offset = 0;
4621 mock_quic_data.AddWrite(ConstructSettingsPacket( 4564 mock_quic_data.AddWrite(
4622 1, SETTINGS_MAX_HEADER_LIST_SIZE, kDefaultMaxUncompressedHeaderSize, 4565 ConstructInitialSettingsPacket(1, &header_stream_offset));
4623 &header_stream_offset));
4624 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 4566 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
4625 2, kClientDataStreamId1, true, true, 4567 2, kClientDataStreamId1, true, true,
4626 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 4568 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
4627 QuicStreamOffset server_header_offset = 0; 4569 QuicStreamOffset server_header_offset = 0;
4628 mock_quic_data.AddRead(ConstructServerPushPromisePacket( 4570 mock_quic_data.AddRead(ConstructServerPushPromisePacket(
4629 1, kClientDataStreamId1, kServerDataStreamId1, false, 4571 1, kClientDataStreamId1, kServerDataStreamId1, false,
4630 GetRequestHeaders("GET", "https", "/pushed.jpg"), &server_header_offset, 4572 GetRequestHeaders("GET", "https", "/pushed.jpg"), &server_header_offset,
4631 &server_maker_)); 4573 &server_maker_));
4632 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 4574 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
4633 2, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"), 4575 2, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"),
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
4678 4620
4679 request_.url = GURL("https://mail.example.org/pushed.jpg"); 4621 request_.url = GURL("https://mail.example.org/pushed.jpg");
4680 ChunkedUploadDataStream upload_data(0); 4622 ChunkedUploadDataStream upload_data(0);
4681 upload_data.AppendData("1", 1, true); 4623 upload_data.AppendData("1", 1, true);
4682 request_.upload_data_stream = &upload_data; 4624 request_.upload_data_stream = &upload_data;
4683 SendRequestAndExpectQuicResponse("and hello!"); 4625 SendRequestAndExpectQuicResponse("and hello!");
4684 } 4626 }
4685 4627
4686 } // namespace test 4628 } // namespace test
4687 } // namespace net 4629 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/chromium/quic_http_stream_test.cc ('k') | net/quic/chromium/quic_stream_factory_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698