Index: net/quic/core/quic_packet_generator_test.cc |
diff --git a/net/quic/core/quic_packet_generator_test.cc b/net/quic/core/quic_packet_generator_test.cc |
index 514d6df4552d4b332a5a0e4a16fc12dfab0ac254..c37cfd326986beb9dd6b13f92a9e186adb09b062 100644 |
--- a/net/quic/core/quic_packet_generator_test.cc |
+++ b/net/quic/core/quic_packet_generator_test.cc |
@@ -241,6 +241,7 @@ TEST_F(QuicPacketGeneratorTest, ShouldSendAck_NotWritable) { |
generator_.SetShouldSendAck(false); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
} |
TEST_F(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldNotFlush) { |
@@ -256,6 +257,7 @@ TEST_F(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldNotFlush) { |
generator_.SetShouldSendAck(false); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
} |
TEST_F(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldFlush) { |
@@ -268,6 +270,7 @@ TEST_F(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldFlush) { |
generator_.SetShouldSendAck(false); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
PacketContents contents; |
contents.num_ack_frames = 1; |
@@ -299,6 +302,7 @@ TEST_F(QuicPacketGeneratorTest, AddControlFrame_NotWritable) { |
generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
} |
TEST_F(QuicPacketGeneratorTest, AddControlFrame_OnlyAckWritable) { |
@@ -306,6 +310,7 @@ TEST_F(QuicPacketGeneratorTest, AddControlFrame_OnlyAckWritable) { |
generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
} |
TEST_F(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldNotFlush) { |
@@ -314,6 +319,7 @@ TEST_F(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldNotFlush) { |
generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
} |
TEST_F(QuicPacketGeneratorTest, AddControlFrame_NotWritableBatchThenFlush) { |
@@ -322,13 +328,16 @@ TEST_F(QuicPacketGeneratorTest, AddControlFrame_NotWritableBatchThenFlush) { |
generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
generator_.FinishBatchOperations(); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
.WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); |
generator_.FlushAllQueuedFrames(); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
PacketContents contents; |
contents.num_rst_stream_frames = 1; |
@@ -343,6 +352,7 @@ TEST_F(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldFlush) { |
generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
PacketContents contents; |
contents.num_rst_stream_frames = 1; |
@@ -357,6 +367,7 @@ TEST_F(QuicPacketGeneratorTest, ConsumeData_NotWritable) { |
EXPECT_EQ(0u, consumed.bytes_consumed); |
EXPECT_FALSE(consumed.fin_consumed); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
} |
TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldNotFlush) { |
@@ -368,6 +379,7 @@ TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldNotFlush) { |
EXPECT_EQ(3u, consumed.bytes_consumed); |
EXPECT_TRUE(consumed.fin_consumed); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
} |
TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldFlush) { |
@@ -380,6 +392,7 @@ TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldFlush) { |
EXPECT_EQ(3u, consumed.bytes_consumed); |
EXPECT_TRUE(consumed.fin_consumed); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
PacketContents contents; |
contents.num_stream_frames = 1; |
@@ -399,6 +412,7 @@ TEST_F(QuicPacketGeneratorTest, ConsumeData_Handshake) { |
kCryptoStreamId, MakeIOVectorFromStringPiece("foo"), 0, NO_FIN, nullptr); |
EXPECT_EQ(3u, consumed.bytes_consumed); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
PacketContents contents; |
contents.num_stream_frames = 1; |
@@ -429,6 +443,7 @@ TEST_F(QuicPacketGeneratorTest, |
EXPECT_EQ(4u, consumed.bytes_consumed); |
EXPECT_FALSE(consumed.fin_consumed); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
} |
TEST_F(QuicPacketGeneratorTest, ConsumeData_BatchOperations) { |
@@ -442,12 +457,14 @@ TEST_F(QuicPacketGeneratorTest, ConsumeData_BatchOperations) { |
EXPECT_EQ(4u, consumed.bytes_consumed); |
EXPECT_FALSE(consumed.fin_consumed); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
// Now both frames will be flushed out. |
EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
.WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); |
generator_.FinishBatchOperations(); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
PacketContents contents; |
contents.num_stream_frames = 2; |
@@ -484,6 +501,7 @@ TEST_F(QuicPacketGeneratorTest, ConsumeData_FramesPreviouslyQueued) { |
EXPECT_EQ(3u, consumed.bytes_consumed); |
EXPECT_FALSE(consumed.fin_consumed); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
// This frame will not fit with the existing frame, causing the queued frame |
// to be serialized, and it will be added to a new open packet. |
@@ -492,9 +510,11 @@ TEST_F(QuicPacketGeneratorTest, ConsumeData_FramesPreviouslyQueued) { |
EXPECT_EQ(3u, consumed.bytes_consumed); |
EXPECT_TRUE(consumed.fin_consumed); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
creator_->Flush(); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
PacketContents contents; |
contents.num_stream_frames = 1; |
@@ -514,6 +534,7 @@ TEST_F(QuicPacketGeneratorTest, ConsumeDataFastPath) { |
EXPECT_EQ(10000u, consumed.bytes_consumed); |
EXPECT_TRUE(consumed.fin_consumed); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
PacketContents contents; |
contents.num_stream_frames = 1; |
@@ -526,6 +547,7 @@ TEST_F(QuicPacketGeneratorTest, NotWritableThenBatchOperations) { |
generator_.SetShouldSendAck(false); |
generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
delegate_.SetCanWriteAnything(); |
@@ -545,6 +567,7 @@ TEST_F(QuicPacketGeneratorTest, NotWritableThenBatchOperations) { |
.WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); |
generator_.FinishBatchOperations(); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
PacketContents contents; |
contents.num_ack_frames = 1; |
@@ -560,6 +583,7 @@ TEST_F(QuicPacketGeneratorTest, NotWritableThenBatchOperations2) { |
generator_.SetShouldSendAck(false); |
generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
delegate_.SetCanWriteAnything(); |
@@ -588,6 +612,7 @@ TEST_F(QuicPacketGeneratorTest, NotWritableThenBatchOperations2) { |
generator_.FinishBatchOperations(); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
// The first packet should have the queued data and part of the stream data. |
PacketContents contents; |
@@ -634,6 +659,7 @@ TEST_F(QuicPacketGeneratorTest, SetMaxPacketLength_Initial) { |
EXPECT_EQ(data_len, consumed.bytes_consumed); |
EXPECT_TRUE(consumed.fin_consumed); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
// We expect three packets, and first two of them have to be of packet_len |
// size. We check multiple packets (instead of just one) because we want to |
@@ -668,6 +694,7 @@ TEST_F(QuicPacketGeneratorTest, SetMaxPacketLength_Middle) { |
EXPECT_EQ(data_len, consumed.bytes_consumed); |
EXPECT_FALSE(consumed.fin_consumed); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
// Make sure we already have two packets. |
ASSERT_EQ(2u, packets_.size()); |
@@ -682,6 +709,7 @@ TEST_F(QuicPacketGeneratorTest, SetMaxPacketLength_Middle) { |
EXPECT_EQ(data_len, consumed.bytes_consumed); |
EXPECT_TRUE(consumed.fin_consumed); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
// We expect first data chunk to get fragmented, but the second one to fit |
// into a single packet. |
@@ -710,6 +738,7 @@ TEST_F(QuicPacketGeneratorTest, SetMaxPacketLength_MidpacketFlush) { |
EXPECT_EQ(first_write_len, consumed.bytes_consumed); |
EXPECT_FALSE(consumed.fin_consumed); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
// Make sure we have no packets so far. |
ASSERT_EQ(0u, packets_.size()); |
@@ -724,6 +753,7 @@ TEST_F(QuicPacketGeneratorTest, SetMaxPacketLength_MidpacketFlush) { |
generator_.SetMaxPacketLength(packet_len); |
EXPECT_EQ(packet_len, generator_.GetCurrentMaxPacketLength()); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
// We expect to see exactly one packet serialized after that, because we send |
// a value somewhat exceeding new max packet size, and the tail data does not |
@@ -739,6 +769,7 @@ TEST_F(QuicPacketGeneratorTest, SetMaxPacketLength_MidpacketFlush) { |
EXPECT_EQ(second_write_len, consumed.bytes_consumed); |
EXPECT_TRUE(consumed.fin_consumed); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
// We expect the first packet to be underfilled, and the second packet be up |
// to the new max packet size. |
@@ -763,6 +794,7 @@ TEST_F(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_Simple) { |
generator_.GenerateMtuDiscoveryPacket(target_mtu, nullptr); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
ASSERT_EQ(1u, packets_.size()); |
EXPECT_EQ(target_mtu, packets_[0].encrypted_length); |
@@ -797,10 +829,12 @@ TEST_F(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_SurroundedByData) { |
EXPECT_EQ(data_len, consumed.bytes_consumed); |
EXPECT_FALSE(consumed.fin_consumed); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
// Send the MTU probe. |
generator_.GenerateMtuDiscoveryPacket(target_mtu, nullptr); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
// Send data after the MTU probe. |
consumed = generator_.ConsumeData(kHeadersStreamId, CreateData(data_len), |
@@ -808,6 +842,7 @@ TEST_F(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_SurroundedByData) { |
EXPECT_EQ(data_len, consumed.bytes_consumed); |
EXPECT_TRUE(consumed.fin_consumed); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
ASSERT_EQ(5u, packets_.size()); |
EXPECT_EQ(kDefaultMaxPacketSize, packets_[0].encrypted_length); |
@@ -843,6 +878,7 @@ TEST_F(QuicPacketGeneratorTest, DontCrashOnInvalidStopWaiting) { |
EXPECT_CALL(delegate_, PopulateStopWaitingFrame(_)); |
// Generator should have queued control frames, and creator should be empty. |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
EXPECT_FALSE(creator_->HasPendingFrames()); |
// This will not serialize any packets, because of the invalid frame. |
@@ -867,6 +903,7 @@ TEST_F(QuicPacketGeneratorTest, ConnectionCloseFrameLargerThanPacketSize) { |
"Single frame cannot fit into a packet", _)); |
EXPECT_QUIC_BUG(generator_.AddControlFrame(QuicFrame(frame)), ""); |
EXPECT_TRUE(generator_.HasQueuedFrames()); |
+ EXPECT_TRUE(generator_.HasRetransmittableFrames()); |
} |
TEST_F(QuicPacketGeneratorTest, RandomPaddingAfterFinSingleStreamSinglePacket) { |
@@ -896,6 +933,7 @@ TEST_F(QuicPacketGeneratorTest, RandomPaddingAfterFinSingleStreamSinglePacket) { |
generator_.FinishBatchOperations(); |
EXPECT_EQ(kStreamFramePayloadSize, consumed.bytes_consumed); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
EXPECT_EQ(1u, packets_.size()); |
PacketContents contents; |
@@ -933,6 +971,7 @@ TEST_F(QuicPacketGeneratorTest, |
generator_.FinishBatchOperations(); |
EXPECT_EQ(kStreamFramePayloadSize, consumed.bytes_consumed); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
EXPECT_LE(1u, packets_.size()); |
PacketContents contents; |
@@ -986,6 +1025,7 @@ TEST_F(QuicPacketGeneratorTest, |
EXPECT_EQ(kStreamFramePayloadSize, consumed.bytes_consumed); |
generator_.FinishBatchOperations(); |
EXPECT_FALSE(generator_.HasQueuedFrames()); |
+ EXPECT_FALSE(generator_.HasRetransmittableFrames()); |
EXPECT_LE(2u, packets_.size()); |
PacketContents contents; |