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

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

Issue 2909653004: Increase the QUIC header size limit to 256KB from 16KB. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/chromium/quic_chromium_client_session.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (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 <algorithm>
5 #include <memory> 6 #include <memory>
6 #include <ostream> 7 #include <ostream>
7 #include <string> 8 #include <string>
8 #include <utility> 9 #include <utility>
9 #include <vector> 10 #include <vector>
10 11
11 #include "base/compiler_specific.h" 12 #include "base/compiler_specific.h"
12 #include "base/macros.h" 13 #include "base/macros.h"
13 #include "base/memory/ptr_util.h" 14 #include "base/memory/ptr_util.h"
14 #include "base/run_loop.h" 15 #include "base/run_loop.h"
(...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 pos = ExpectLogContainsSomewhere( 899 pos = ExpectLogContainsSomewhere(
899 entries, 0, NetLogEventType::QUIC_SESSION_STREAM_FRAME_RECEIVED, 900 entries, 0, NetLogEventType::QUIC_SESSION_STREAM_FRAME_RECEIVED,
900 NetLogEventPhase::NONE); 901 NetLogEventPhase::NONE);
901 EXPECT_LT(0, pos); 902 EXPECT_LT(0, pos);
902 903
903 int log_stream_id; 904 int log_stream_id;
904 ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &log_stream_id)); 905 ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &log_stream_id));
905 EXPECT_EQ(3, log_stream_id); 906 EXPECT_EQ(3, log_stream_id);
906 } 907 }
907 908
909 TEST_P(QuicNetworkTransactionTest, LargeResponseHeaders) {
910 params_.origins_to_force_quic_on.insert(
911 HostPortPair::FromString("mail.example.org:443"));
912
913 MockQuicData mock_quic_data;
914 QuicStreamOffset header_stream_offset = 0;
915 mock_quic_data.AddWrite(
916 ConstructInitialSettingsPacket(1, &header_stream_offset));
917 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
918 2, GetNthClientInitiatedStreamId(0), true, true,
919 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
920 SpdyHeaderBlock response_headers = GetResponseHeaders("200 OK");
921 response_headers["key1"] = std::string(30000, 'A');
922 response_headers["key2"] = std::string(30000, 'A');
923 response_headers["key3"] = std::string(30000, 'A');
924 response_headers["key4"] = std::string(30000, 'A');
925 response_headers["key5"] = std::string(30000, 'A');
926 response_headers["key6"] = std::string(30000, 'A');
927 response_headers["key7"] = std::string(30000, 'A');
928 response_headers["key8"] = std::string(30000, 'A');
929 SpdyHeadersIR headers_frame(GetNthClientInitiatedStreamId(0),
930 std::move(response_headers));
931 SpdyFramer response_framer(SpdyFramer::ENABLE_COMPRESSION);
932 SpdySerializedFrame spdy_frame =
933 response_framer.SerializeFrame(headers_frame);
934
935 QuicPacketNumber packet_number = 1;
936 size_t chunk_size = 1200;
937 for (size_t offset = 0; offset < spdy_frame.size(); offset += chunk_size) {
938 size_t len = std::min(chunk_size, spdy_frame.size() - offset);
939 mock_quic_data.AddRead(ConstructServerDataPacket(
940 packet_number++, kHeadersStreamId, false, false, offset,
941 base::StringPiece(spdy_frame.data() + offset, len)));
942 }
943
944 mock_quic_data.AddRead(
945 ConstructServerDataPacket(packet_number, GetNthClientInitiatedStreamId(0),
946 false, true, 0, "hello!"));
947 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read
948 mock_quic_data.AddAsyncWrite(ConstructClientAckPacket(3, 2, 1, 1));
949 mock_quic_data.AddAsyncWrite(
950 ConstructClientAckPacket(4, packet_number, 3, 1));
951
952 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
953
954 CreateSession();
955
956 SendRequestAndExpectQuicResponse("hello!");
957 }
958
959 TEST_P(QuicNetworkTransactionTest, TooLargeResponseHeaders) {
960 params_.origins_to_force_quic_on.insert(
961 HostPortPair::FromString("mail.example.org:443"));
962
963 MockQuicData mock_quic_data;
964 QuicStreamOffset header_stream_offset = 0;
965 mock_quic_data.AddWrite(
966 ConstructInitialSettingsPacket(1, &header_stream_offset));
967 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
968 2, GetNthClientInitiatedStreamId(0), true, true,
969 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
970 SpdyHeaderBlock response_headers = GetResponseHeaders("200 OK");
971 response_headers["key1"] = std::string(30000, 'A');
972 response_headers["key2"] = std::string(30000, 'A');
973 response_headers["key3"] = std::string(30000, 'A');
974 response_headers["key4"] = std::string(30000, 'A');
975 response_headers["key5"] = std::string(30000, 'A');
976 response_headers["key6"] = std::string(30000, 'A');
977 response_headers["key7"] = std::string(30000, 'A');
978 response_headers["key8"] = std::string(30000, 'A');
979 response_headers["key9"] = std::string(30000, 'A');
980 SpdyHeadersIR headers_frame(GetNthClientInitiatedStreamId(0),
981 std::move(response_headers));
982 SpdyFramer response_framer(SpdyFramer::ENABLE_COMPRESSION);
983 SpdySerializedFrame spdy_frame =
984 response_framer.SerializeFrame(headers_frame);
985
986 QuicPacketNumber packet_number = 1;
987 size_t chunk_size = 1200;
988 for (size_t offset = 0; offset < spdy_frame.size(); offset += chunk_size) {
989 size_t len = std::min(chunk_size, spdy_frame.size() - offset);
990 mock_quic_data.AddRead(ConstructServerDataPacket(
991 packet_number++, kHeadersStreamId, false, false, offset,
992 base::StringPiece(spdy_frame.data() + offset, len)));
993 }
994
995 mock_quic_data.AddRead(
996 ConstructServerDataPacket(packet_number, GetNthClientInitiatedStreamId(0),
997 false, true, 0, "hello!"));
998 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read
999 mock_quic_data.AddAsyncWrite(ConstructClientAckPacket(3, 2, 1, 1));
1000 mock_quic_data.AddAsyncWrite(ConstructClientAckAndRstPacket(
1001 4, GetNthClientInitiatedStreamId(0), QUIC_HEADERS_TOO_LARGE,
1002 packet_number, 3, 1));
1003
1004 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
1005
1006 CreateSession();
1007
1008 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session_.get());
1009 TestCompletionCallback callback;
1010 int rv = trans.Start(&request_, callback.callback(), net_log_.bound());
1011 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1012 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_QUIC_PROTOCOL_ERROR));
1013 }
1014
908 TEST_P(QuicNetworkTransactionTest, ForceQuicForAll) { 1015 TEST_P(QuicNetworkTransactionTest, ForceQuicForAll) {
909 params_.origins_to_force_quic_on.insert(HostPortPair()); 1016 params_.origins_to_force_quic_on.insert(HostPortPair());
910 1017
911 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); 1018 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE);
912 1019
913 MockQuicData mock_quic_data; 1020 MockQuicData mock_quic_data;
914 QuicStreamOffset header_stream_offset = 0; 1021 QuicStreamOffset header_stream_offset = 0;
915 mock_quic_data.AddWrite( 1022 mock_quic_data.AddWrite(
916 ConstructInitialSettingsPacket(1, &header_stream_offset)); 1023 ConstructInitialSettingsPacket(1, &header_stream_offset));
917 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 1024 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
(...skipping 3771 matching lines...) Expand 10 before | Expand all | Expand 10 after
4689 4796
4690 request_.url = GURL("https://mail.example.org/pushed.jpg"); 4797 request_.url = GURL("https://mail.example.org/pushed.jpg");
4691 ChunkedUploadDataStream upload_data(0); 4798 ChunkedUploadDataStream upload_data(0);
4692 upload_data.AppendData("1", 1, true); 4799 upload_data.AppendData("1", 1, true);
4693 request_.upload_data_stream = &upload_data; 4800 request_.upload_data_stream = &upload_data;
4694 SendRequestAndExpectQuicResponse("and hello!"); 4801 SendRequestAndExpectQuicResponse("and hello!");
4695 } 4802 }
4696 4803
4697 } // namespace test 4804 } // namespace test
4698 } // namespace net 4805 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/chromium/quic_chromium_client_session.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698