OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |