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

Side by Side Diff: net/quic/quic_packet_creator_test.cc

Issue 1782143003: Remove FEC code from receive path. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@115997404
Patch Set: Created 4 years, 9 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/quic_packet_creator.cc ('k') | net/quic/quic_packet_generator_test.cc » ('j') | 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 "net/quic/quic_packet_creator.h" 5 #include "net/quic/quic_packet_creator.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 frame.stream_frame->frame_length)); 175 frame.stream_frame->frame_length));
176 EXPECT_EQ(offset, frame.stream_frame->offset); 176 EXPECT_EQ(offset, frame.stream_frame->offset);
177 EXPECT_EQ(fin, frame.stream_frame->fin); 177 EXPECT_EQ(fin, frame.stream_frame->fin);
178 } 178 }
179 179
180 // Returns the number of bytes consumed by the header of packet, including 180 // Returns the number of bytes consumed by the header of packet, including
181 // the version. 181 // the version.
182 size_t GetPacketHeaderOverhead() { 182 size_t GetPacketHeaderOverhead() {
183 return GetPacketHeaderSize( 183 return GetPacketHeaderSize(
184 creator_.connection_id_length(), kIncludeVersion, !kIncludePathId, 184 creator_.connection_id_length(), kIncludeVersion, !kIncludePathId,
185 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_), 185 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
186 NOT_IN_FEC_GROUP);
187 } 186 }
188 187
189 // Returns the number of bytes of overhead that will be added to a packet 188 // Returns the number of bytes of overhead that will be added to a packet
190 // of maximum length. 189 // of maximum length.
191 size_t GetEncryptionOverhead() { 190 size_t GetEncryptionOverhead() {
192 return creator_.max_packet_length() - 191 return creator_.max_packet_length() -
193 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()); 192 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length());
194 } 193 }
195 194
196 // Returns the number of bytes consumed by the non-data fields of a stream 195 // Returns the number of bytes consumed by the non-data fields of a stream
197 // frame, assuming it is the last frame in the packet 196 // frame, assuming it is the last frame in the packet
198 size_t GetStreamFrameOverhead() { 197 size_t GetStreamFrameOverhead() {
199 return QuicFramer::GetMinStreamFrameSize(kClientDataStreamId1, kOffset, 198 return QuicFramer::GetMinStreamFrameSize(kClientDataStreamId1, kOffset,
200 true, NOT_IN_FEC_GROUP); 199 true);
201 } 200 }
202 201
203 QuicIOVector MakeIOVector(StringPiece s) { 202 QuicIOVector MakeIOVector(StringPiece s) {
204 return ::net::MakeIOVector(s, &iov_); 203 return ::net::MakeIOVector(s, &iov_);
205 } 204 }
206 205
207 PendingRetransmission CreateRetransmission( 206 PendingRetransmission CreateRetransmission(
208 const QuicFrames& retransmittable_frames, 207 const QuicFrames& retransmittable_frames,
209 bool has_crypto_handshake, 208 bool has_crypto_handshake,
210 bool needs_padding, 209 bool needs_padding,
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 if (!GetParam().version_serialization) { 810 if (!GetParam().version_serialization) {
812 creator_.StopSendingVersion(); 811 creator_.StopSendingVersion();
813 } 812 }
814 // A string larger than fits into a frame. 813 // A string larger than fits into a frame.
815 size_t payload_length; 814 size_t payload_length;
816 creator_.SetMaxPacketLength(GetPacketLengthForOneStream( 815 creator_.SetMaxPacketLength(GetPacketLengthForOneStream(
817 client_framer_.version(), 816 client_framer_.version(),
818 QuicPacketCreatorPeer::SendVersionInPacket(&creator_), 817 QuicPacketCreatorPeer::SendVersionInPacket(&creator_),
819 QuicPacketCreatorPeer::SendPathIdInPacket(&creator_), 818 QuicPacketCreatorPeer::SendPathIdInPacket(&creator_),
820 creator_.connection_id_length(), PACKET_1BYTE_PACKET_NUMBER, 819 creator_.connection_id_length(), PACKET_1BYTE_PACKET_NUMBER,
821 NOT_IN_FEC_GROUP, &payload_length)); 820 &payload_length));
822 QuicFrame frame; 821 QuicFrame frame;
823 const string too_long_payload(payload_length * 2, 'a'); 822 const string too_long_payload(payload_length * 2, 'a');
824 QuicIOVector io_vector(MakeIOVector(too_long_payload)); 823 QuicIOVector io_vector(MakeIOVector(too_long_payload));
825 EXPECT_CALL(delegate_, OnSerializedPacket(_)) 824 EXPECT_CALL(delegate_, OnSerializedPacket(_))
826 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); 825 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
827 ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, true, false, &frame)); 826 ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, true, false, &frame));
828 ASSERT_TRUE(frame.stream_frame); 827 ASSERT_TRUE(frame.stream_frame);
829 size_t consumed = frame.stream_frame->frame_length; 828 size_t consumed = frame.stream_frame->frame_length;
830 EXPECT_EQ(payload_length, consumed); 829 EXPECT_EQ(payload_length, consumed);
831 const string payload(payload_length, 'a'); 830 const string payload(payload_length, 'a');
832 CheckStreamFrame(frame, 1u, payload, 0u, false); 831 CheckStreamFrame(frame, 1u, payload, 0u, false);
833 creator_.Flush(); 832 creator_.Flush();
834 DeleteSerializedPacket(); 833 DeleteSerializedPacket();
835 } 834 }
836 835
837 TEST_P(QuicPacketCreatorTest, AddFrameAndFlush) { 836 TEST_P(QuicPacketCreatorTest, AddFrameAndFlush) {
838 if (!GetParam().version_serialization) { 837 if (!GetParam().version_serialization) {
839 creator_.StopSendingVersion(); 838 creator_.StopSendingVersion();
840 } 839 }
841 const size_t max_plaintext_size = 840 const size_t max_plaintext_size =
842 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()); 841 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length());
843 EXPECT_FALSE(creator_.HasPendingFrames()); 842 EXPECT_FALSE(creator_.HasPendingFrames());
844 EXPECT_EQ(max_plaintext_size - 843 EXPECT_EQ(max_plaintext_size -
845 GetPacketHeaderSize( 844 GetPacketHeaderSize(
846 creator_.connection_id_length(), 845 creator_.connection_id_length(),
847 QuicPacketCreatorPeer::SendVersionInPacket(&creator_), 846 QuicPacketCreatorPeer::SendVersionInPacket(&creator_),
848 QuicPacketCreatorPeer::SendPathIdInPacket(&creator_), 847 QuicPacketCreatorPeer::SendPathIdInPacket(&creator_),
849 PACKET_1BYTE_PACKET_NUMBER, NOT_IN_FEC_GROUP), 848 PACKET_1BYTE_PACKET_NUMBER),
850 creator_.BytesFree()); 849 creator_.BytesFree());
851 850
852 // Add a variety of frame types and then a padding frame. 851 // Add a variety of frame types and then a padding frame.
853 QuicAckFrame ack_frame(MakeAckFrame(0u)); 852 QuicAckFrame ack_frame(MakeAckFrame(0u));
854 EXPECT_TRUE(creator_.AddSavedFrame(QuicFrame(&ack_frame))); 853 EXPECT_TRUE(creator_.AddSavedFrame(QuicFrame(&ack_frame)));
855 EXPECT_TRUE(creator_.HasPendingFrames()); 854 EXPECT_TRUE(creator_.HasPendingFrames());
856 855
857 QuicFrame frame; 856 QuicFrame frame;
858 QuicIOVector io_vector(MakeIOVector("test")); 857 QuicIOVector io_vector(MakeIOVector("test"));
859 ASSERT_TRUE( 858 ASSERT_TRUE(
(...skipping 20 matching lines...) Expand all
880 ASSERT_EQ(1u, retransmittable.size()); 879 ASSERT_EQ(1u, retransmittable.size());
881 EXPECT_EQ(STREAM_FRAME, retransmittable[0].type); 880 EXPECT_EQ(STREAM_FRAME, retransmittable[0].type);
882 ASSERT_TRUE(retransmittable[0].stream_frame); 881 ASSERT_TRUE(retransmittable[0].stream_frame);
883 DeleteSerializedPacket(); 882 DeleteSerializedPacket();
884 883
885 EXPECT_FALSE(creator_.HasPendingFrames()); 884 EXPECT_FALSE(creator_.HasPendingFrames());
886 EXPECT_EQ(max_plaintext_size - 885 EXPECT_EQ(max_plaintext_size -
887 GetPacketHeaderSize( 886 GetPacketHeaderSize(
888 creator_.connection_id_length(), 887 creator_.connection_id_length(),
889 QuicPacketCreatorPeer::SendVersionInPacket(&creator_), 888 QuicPacketCreatorPeer::SendVersionInPacket(&creator_),
890 /*include_path_id=*/false, PACKET_1BYTE_PACKET_NUMBER, 889 /*include_path_id=*/false, PACKET_1BYTE_PACKET_NUMBER),
891 NOT_IN_FEC_GROUP),
892 creator_.BytesFree()); 890 creator_.BytesFree());
893 } 891 }
894 892
895 TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithLargePacketSize) { 893 TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithLargePacketSize) {
896 if (!GetParam().version_serialization) { 894 if (!GetParam().version_serialization) {
897 creator_.StopSendingVersion(); 895 creator_.StopSendingVersion();
898 } 896 }
899 creator_.SetMaxPacketLength(kMaxPacketSize); 897 creator_.SetMaxPacketLength(kMaxPacketSize);
900 898
901 // Serialized length of ack frame with 2000 nack ranges should be limited by 899 // Serialized length of ack frame with 2000 nack ranges should be limited by
902 // the number of nack ranges that can be fit in an ack frame. 900 // the number of nack ranges that can be fit in an ack frame.
903 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(2000u, 0u); 901 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(2000u, 0u);
904 size_t frame_len = client_framer_.GetSerializedFrameLength( 902 size_t frame_len = client_framer_.GetSerializedFrameLength(
905 QuicFrame(&ack_frame), creator_.BytesFree(), true, true, NOT_IN_FEC_GROUP, 903 QuicFrame(&ack_frame), creator_.BytesFree(), true, true,
906 PACKET_1BYTE_PACKET_NUMBER); 904 PACKET_1BYTE_PACKET_NUMBER);
907 EXPECT_GT(creator_.BytesFree(), frame_len); 905 EXPECT_GT(creator_.BytesFree(), frame_len);
908 EXPECT_GT(creator_.max_packet_length(), creator_.PacketSize()); 906 EXPECT_GT(creator_.max_packet_length(), creator_.PacketSize());
909 907
910 // Add ack frame to creator. 908 // Add ack frame to creator.
911 EXPECT_TRUE(creator_.AddSavedFrame(QuicFrame(&ack_frame))); 909 EXPECT_TRUE(creator_.AddSavedFrame(QuicFrame(&ack_frame)));
912 EXPECT_TRUE(creator_.HasPendingFrames()); 910 EXPECT_TRUE(creator_.HasPendingFrames());
913 EXPECT_GT(creator_.max_packet_length(), creator_.PacketSize()); 911 EXPECT_GT(creator_.max_packet_length(), creator_.PacketSize());
914 EXPECT_LT(0u, creator_.BytesFree()); 912 EXPECT_LT(0u, creator_.BytesFree());
915 913
(...skipping 27 matching lines...) Expand all
943 creator_.SetMaxPacketLength(500u); 941 creator_.SetMaxPacketLength(500u);
944 942
945 const size_t max_plaintext_size = 943 const size_t max_plaintext_size =
946 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()); 944 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length());
947 EXPECT_EQ(max_plaintext_size - creator_.PacketSize(), creator_.BytesFree()); 945 EXPECT_EQ(max_plaintext_size - creator_.PacketSize(), creator_.BytesFree());
948 946
949 // Serialized length of ack frame with 2000 nack ranges should be limited by 947 // Serialized length of ack frame with 2000 nack ranges should be limited by
950 // the packet size. 948 // the packet size.
951 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(2000u, 0u); 949 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(2000u, 0u);
952 size_t frame_len = client_framer_.GetSerializedFrameLength( 950 size_t frame_len = client_framer_.GetSerializedFrameLength(
953 QuicFrame(&ack_frame), creator_.BytesFree(), true, true, NOT_IN_FEC_GROUP, 951 QuicFrame(&ack_frame), creator_.BytesFree(), true, true,
954 PACKET_1BYTE_PACKET_NUMBER); 952 PACKET_1BYTE_PACKET_NUMBER);
955 EXPECT_EQ(creator_.BytesFree(), frame_len); 953 EXPECT_EQ(creator_.BytesFree(), frame_len);
956 954
957 // Add ack frame to creator. 955 // Add ack frame to creator.
958 EXPECT_TRUE(creator_.AddSavedFrame(QuicFrame(&ack_frame))); 956 EXPECT_TRUE(creator_.AddSavedFrame(QuicFrame(&ack_frame)));
959 EXPECT_TRUE(creator_.HasPendingFrames()); 957 EXPECT_TRUE(creator_.HasPendingFrames());
960 EXPECT_EQ(client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()), 958 EXPECT_EQ(client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()),
961 creator_.PacketSize()); 959 creator_.PacketSize());
962 EXPECT_EQ(0u, creator_.BytesFree()); 960 EXPECT_EQ(0u, creator_.BytesFree());
963 961
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 EXPECT_CALL(delegate_, OnUnrecoverableError(_, _)); 1139 EXPECT_CALL(delegate_, OnUnrecoverableError(_, _));
1142 QuicStreamFrame stream_frame(kHeadersStreamId, /*fin=*/false, 0u, 1140 QuicStreamFrame stream_frame(kHeadersStreamId, /*fin=*/false, 0u,
1143 StringPiece()); 1141 StringPiece());
1144 EXPECT_DFATAL(creator_.AddSavedFrame(QuicFrame(&stream_frame)), 1142 EXPECT_DFATAL(creator_.AddSavedFrame(QuicFrame(&stream_frame)),
1145 "Cannot send stream data without encryption."); 1143 "Cannot send stream data without encryption.");
1146 } 1144 }
1147 1145
1148 } // namespace 1146 } // namespace
1149 } // namespace test 1147 } // namespace test
1150 } // namespace net 1148 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_packet_creator.cc ('k') | net/quic/quic_packet_generator_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698