Index: net/quic/quic_connection_test.cc |
diff --git a/net/quic/quic_connection_test.cc b/net/quic/quic_connection_test.cc |
index b868c98136118d6882ae0b624ae2157bb5896525..fb4cf89789f14ede2ff1c218f454a1ede50db76e 100644 |
--- a/net/quic/quic_connection_test.cc |
+++ b/net/quic/quic_connection_test.cc |
@@ -657,13 +657,13 @@ class QuicConnectionTest : public ::testing::TestWithParam<QuicVersion> { |
return outgoing_ack_.get(); |
} |
+ QuicStopWaitingFrame* stop_waiting() { |
+ stop_waiting_.reset( |
+ QuicConnectionPeer::CreateStopWaitingFrame(&connection_)); |
+ return stop_waiting_.get(); |
+ } |
+ |
QuicPacketSequenceNumber least_unacked() { |
- if (version() <= QUIC_VERSION_15) { |
- if (writer_->ack_frames().empty()) { |
- return 0; |
- } |
- return writer_->ack_frames()[0].sent_info.least_unacked; |
- } |
if (writer_->stop_waiting_frames().empty()) { |
return 0; |
} |
@@ -889,9 +889,8 @@ class QuicConnectionTest : public ::testing::TestWithParam<QuicVersion> { |
} |
// Initialize a frame acknowledging all packets up to largest_observed. |
- const QuicAckFrame InitAckFrame(QuicPacketSequenceNumber largest_observed, |
- QuicPacketSequenceNumber least_unacked) { |
- QuicAckFrame frame(MakeAckFrame(largest_observed, least_unacked)); |
+ const QuicAckFrame InitAckFrame(QuicPacketSequenceNumber largest_observed) { |
+ QuicAckFrame frame(MakeAckFrame(largest_observed)); |
if (largest_observed > 0) { |
frame.received_info.entropy_hash = |
QuicConnectionPeer::GetSentEntropyHash(&connection_, largest_observed); |
@@ -975,6 +974,7 @@ class QuicConnectionTest : public ::testing::TestWithParam<QuicVersion> { |
QuicStreamFrame frame1_; |
QuicStreamFrame frame2_; |
scoped_ptr<QuicAckFrame> outgoing_ack_; |
+ scoped_ptr<QuicStopWaitingFrame> stop_waiting_; |
QuicSequenceNumberLength sequence_number_length_; |
QuicConnectionIdLength connection_id_length_; |
@@ -1060,7 +1060,7 @@ TEST_P(QuicConnectionTest, PacketsOutOfOrderWithAdditionsAndLeastAwaiting) { |
// awaiting' is 4. The connection should then realize 1 will not be |
// retransmitted, and will remove it from the missing list. |
peer_creator_.set_sequence_number(5); |
- QuicAckFrame frame = InitAckFrame(1, 4); |
+ QuicAckFrame frame = InitAckFrame(1); |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(_, _, _, _)); |
ProcessAckPacket(&frame); |
@@ -1102,7 +1102,7 @@ TEST_P(QuicConnectionTest, TruncatedAck) { |
SendStreamDataToPeer(3, "foo", i * 3, !kFin, NULL); |
} |
- QuicAckFrame frame = InitAckFrame(num_packets, 1); |
+ QuicAckFrame frame = InitAckFrame(num_packets); |
SequenceNumberSet lost_packets; |
// Create an ack with 256 nacks, none adjacent to one another. |
for (QuicPacketSequenceNumber i = 1; i <= 256; ++i) { |
@@ -1153,7 +1153,7 @@ TEST_P(QuicConnectionTest, AckReceiptCausesAckSendBadEntropy) { |
testing::Return(QuicTime::Delta::Zero())); |
// Skip a packet and then record an ack. |
peer_creator_.set_sequence_number(2); |
- QuicAckFrame frame = InitAckFrame(0, 3); |
+ QuicAckFrame frame = InitAckFrame(0); |
ProcessAckPacket(&frame); |
} |
@@ -1186,7 +1186,7 @@ TEST_P(QuicConnectionTest, AckReceiptCausesAckSend) { |
.WillOnce(DoAll(SaveArg<2>(&original), SaveArg<3>(&packet_size), |
Return(true))); |
connection_.SendStreamDataWithString(3, "foo", 0, !kFin, NULL); |
- QuicAckFrame frame = InitAckFrame(original, 1); |
+ QuicAckFrame frame = InitAckFrame(original); |
NackPacket(original, &frame); |
// First nack triggers early retransmit. |
SequenceNumberSet lost_packets; |
@@ -1201,7 +1201,7 @@ TEST_P(QuicConnectionTest, AckReceiptCausesAckSend) { |
ProcessAckPacket(&frame); |
- QuicAckFrame frame2 = InitAckFrame(retransmission, 1); |
+ QuicAckFrame frame2 = InitAckFrame(retransmission); |
NackPacket(original, &frame2); |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _)) |
@@ -1226,11 +1226,7 @@ TEST_P(QuicConnectionTest, AckReceiptCausesAckSend) { |
HAS_RETRANSMITTABLE_DATA)); |
connection_.SendStreamDataWithString(3, "foo", 3, !kFin, NULL); |
// Ack bundled. |
- if (version() > QUIC_VERSION_15) { |
- EXPECT_EQ(3u, writer_->frame_count()); |
- } else { |
- EXPECT_EQ(2u, writer_->frame_count()); |
- } |
+ EXPECT_EQ(3u, writer_->frame_count()); |
EXPECT_EQ(1u, writer_->stream_frames().size()); |
EXPECT_FALSE(writer_->ack_frames().empty()); |
@@ -1249,13 +1245,8 @@ TEST_P(QuicConnectionTest, LeastUnackedLower) { |
// Start out saying the least unacked is 2. |
peer_creator_.set_sequence_number(5); |
- if (version() > QUIC_VERSION_15) { |
- QuicStopWaitingFrame frame = InitStopWaitingFrame(2); |
- ProcessStopWaitingPacket(&frame); |
- } else { |
- QuicAckFrame frame = InitAckFrame(0, 2); |
- ProcessAckPacket(&frame); |
- } |
+ QuicStopWaitingFrame frame = InitStopWaitingFrame(2); |
+ ProcessStopWaitingPacket(&frame); |
// Change it to 1, but lower the sequence number to fake out-of-order packets. |
// This should be fine. |
@@ -1263,28 +1254,17 @@ TEST_P(QuicConnectionTest, LeastUnackedLower) { |
// The scheduler will not process out of order acks, but all packet processing |
// causes the connection to try to write. |
EXPECT_CALL(visitor_, OnCanWrite()); |
- if (version() > QUIC_VERSION_15) { |
- QuicStopWaitingFrame frame2 = InitStopWaitingFrame(1); |
- ProcessStopWaitingPacket(&frame2); |
- } else { |
- QuicAckFrame frame2 = InitAckFrame(0, 1); |
- ProcessAckPacket(&frame2); |
- } |
+ QuicStopWaitingFrame frame2 = InitStopWaitingFrame(1); |
+ ProcessStopWaitingPacket(&frame2); |
// Now claim it's one, but set the ordering so it was sent "after" the first |
// one. This should cause a connection error. |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)); |
peer_creator_.set_sequence_number(7); |
- if (version() > QUIC_VERSION_15) { |
- EXPECT_CALL(visitor_, |
- OnConnectionClosed(QUIC_INVALID_STOP_WAITING_DATA, false)); |
- QuicStopWaitingFrame frame2 = InitStopWaitingFrame(1); |
- ProcessStopWaitingPacket(&frame2); |
- } else { |
- EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_INVALID_ACK_DATA, false)); |
- QuicAckFrame frame2 = InitAckFrame(0, 1); |
- ProcessAckPacket(&frame2); |
- } |
+ EXPECT_CALL(visitor_, |
+ OnConnectionClosed(QUIC_INVALID_STOP_WAITING_DATA, false)); |
+ QuicStopWaitingFrame frame3 = InitStopWaitingFrame(1); |
+ ProcessStopWaitingPacket(&frame3); |
} |
TEST_P(QuicConnectionTest, LargestObservedLower) { |
@@ -1296,8 +1276,8 @@ TEST_P(QuicConnectionTest, LargestObservedLower) { |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
// Start out saying the largest observed is 2. |
- QuicAckFrame frame1 = InitAckFrame(1, 0); |
- QuicAckFrame frame2 = InitAckFrame(2, 0); |
+ QuicAckFrame frame1 = InitAckFrame(1); |
+ QuicAckFrame frame2 = InitAckFrame(2); |
ProcessAckPacket(&frame2); |
// Now change it to 1, and it should cause a connection error. |
@@ -1311,7 +1291,7 @@ TEST_P(QuicConnectionTest, AckUnsentData) { |
EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_INVALID_ACK_DATA, false)); |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)); |
- QuicAckFrame frame(MakeAckFrame(1, 0)); |
+ QuicAckFrame frame(MakeAckFrame(1)); |
EXPECT_CALL(visitor_, OnCanWrite()).Times(0); |
ProcessAckPacket(&frame); |
} |
@@ -1321,7 +1301,7 @@ TEST_P(QuicConnectionTest, AckAll) { |
ProcessPacket(1); |
peer_creator_.set_sequence_number(1); |
- QuicAckFrame frame1 = InitAckFrame(0, 1); |
+ QuicAckFrame frame1 = InitAckFrame(0); |
ProcessAckPacket(&frame1); |
} |
@@ -1443,7 +1423,7 @@ TEST_P(QuicConnectionTest, BasicSending) { |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
// Peer acks up to packet 3. |
- QuicAckFrame frame = InitAckFrame(3, 0); |
+ QuicAckFrame frame = InitAckFrame(3); |
ProcessAckPacket(&frame); |
SendAckPacketToPeer(); // Packet 6 |
@@ -1454,7 +1434,7 @@ TEST_P(QuicConnectionTest, BasicSending) { |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
// Peer acks up to packet 4, the last packet. |
- QuicAckFrame frame2 = InitAckFrame(6, 0); |
+ QuicAckFrame frame2 = InitAckFrame(6); |
ProcessAckPacket(&frame2); // Acks don't instigate acks. |
// Verify that we did not send an ack. |
@@ -1551,7 +1531,7 @@ TEST_P(QuicConnectionTest, DontAbandonAckedFEC) { |
connection_.SendStreamDataWithStringWithFec(3, "foo", 3, !kFin, NULL); |
connection_.SendStreamDataWithStringWithFec(3, "foo", 6, !kFin, NULL); |
- QuicAckFrame ack_fec = InitAckFrame(2, 1); |
+ QuicAckFrame ack_fec = InitAckFrame(2); |
// Data packet missing. |
// TODO(ianswett): Note that this is not a sensible ack, since if the FEC was |
// received, it would cause the covered packet to be acked as well. |
@@ -1581,7 +1561,7 @@ TEST_P(QuicConnectionTest, AbandonAllFEC) { |
clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); |
connection_.SendStreamDataWithStringWithFec(3, "foo", 6, !kFin, NULL); |
- QuicAckFrame ack_fec = InitAckFrame(5, 1); |
+ QuicAckFrame ack_fec = InitAckFrame(5); |
// Ack all data packets, but no fec packets. |
NackPacket(2, &ack_fec); |
NackPacket(4, &ack_fec); |
@@ -1624,12 +1604,8 @@ TEST_P(QuicConnectionTest, FramePacking) { |
// Parse the last packet and ensure it's an ack and two stream frames from |
// two different streams. |
- if (version() > QUIC_VERSION_15) { |
- EXPECT_EQ(4u, writer_->frame_count()); |
- EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
- } else { |
- EXPECT_EQ(3u, writer_->frame_count()); |
- } |
+ EXPECT_EQ(4u, writer_->frame_count()); |
+ EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
EXPECT_FALSE(writer_->ack_frames().empty()); |
ASSERT_EQ(2u, writer_->stream_frames().size()); |
EXPECT_EQ(kClientDataStreamId1, writer_->stream_frames()[0].stream_id); |
@@ -1726,7 +1702,7 @@ TEST_P(QuicConnectionTest, FramePackingAckResponse) { |
// Process an ack to cause the visitor's OnCanWrite to be invoked. |
peer_creator_.set_sequence_number(2); |
- QuicAckFrame ack_one = InitAckFrame(0, 0); |
+ QuicAckFrame ack_one = InitAckFrame(0); |
ProcessAckPacket(&ack_one); |
EXPECT_EQ(0u, connection_.NumQueuedPackets()); |
@@ -1734,12 +1710,8 @@ TEST_P(QuicConnectionTest, FramePackingAckResponse) { |
// Parse the last packet and ensure it's an ack and two stream frames from |
// two different streams. |
- if (version() > QUIC_VERSION_15) { |
- EXPECT_EQ(4u, writer_->frame_count()); |
- EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
- } else { |
- EXPECT_EQ(3u, writer_->frame_count()); |
- } |
+ EXPECT_EQ(4u, writer_->frame_count()); |
+ EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
EXPECT_FALSE(writer_->ack_frames().empty()); |
ASSERT_EQ(2u, writer_->stream_frames().size()); |
EXPECT_EQ(kClientDataStreamId1, writer_->stream_frames()[0].stream_id); |
@@ -1846,11 +1818,11 @@ TEST_P(QuicConnectionTest, RetransmitOnNack) { |
// Don't lose a packet on an ack, and nothing is retransmitted. |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- QuicAckFrame ack_one = InitAckFrame(1, 0); |
+ QuicAckFrame ack_one = InitAckFrame(1); |
ProcessAckPacket(&ack_one); |
// Lose a packet and ensure it triggers retransmission. |
- QuicAckFrame nack_two = InitAckFrame(3, 0); |
+ QuicAckFrame nack_two = InitAckFrame(3); |
NackPacket(2, &nack_two); |
SequenceNumberSet lost_packets; |
lost_packets.insert(2); |
@@ -1872,7 +1844,7 @@ TEST_P(QuicConnectionTest, DiscardRetransmit) { |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
// Instigate a loss with an ack. |
- QuicAckFrame nack_two = InitAckFrame(3, 0); |
+ QuicAckFrame nack_two = InitAckFrame(3); |
NackPacket(2, &nack_two); |
// The first nack should trigger a fast retransmission, but we'll be |
// write blocked, so the packet will be queued. |
@@ -1888,7 +1860,7 @@ TEST_P(QuicConnectionTest, DiscardRetransmit) { |
// Now, ack the previous transmission. |
EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _)) |
.WillOnce(Return(SequenceNumberSet())); |
- QuicAckFrame ack_all = InitAckFrame(3, 0); |
+ QuicAckFrame ack_all = InitAckFrame(3); |
ProcessAckPacket(&ack_all); |
// Unblock the socket and attempt to send the queued packets. However, |
@@ -1912,7 +1884,7 @@ TEST_P(QuicConnectionTest, RetransmitNackedLargestObserved) { |
Return(true))); |
connection_.SendStreamDataWithString(3, "foo", 0, !kFin, NULL); |
- QuicAckFrame frame = InitAckFrame(1, largest_observed); |
+ QuicAckFrame frame = InitAckFrame(1); |
NackPacket(largest_observed, &frame); |
// The first nack should retransmit the largest observed packet. |
SequenceNumberSet lost_packets; |
@@ -1970,7 +1942,7 @@ TEST_P(QuicConnectionTest, WriteBlockedAckedThenSent) { |
// Ack the sent packet before the callback returns, which happens in |
// rare circumstances with write blocked sockets. |
- QuicAckFrame ack = InitAckFrame(1, 0); |
+ QuicAckFrame ack = InitAckFrame(1); |
ProcessAckPacket(&ack); |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0); |
@@ -1992,7 +1964,7 @@ TEST_P(QuicConnectionTest, RetransmitWriteBlockedAckedOriginalThenSent) { |
// Ack the sent packet before the callback returns, which happens in |
// rare circumstances with write blocked sockets. |
- QuicAckFrame ack = InitAckFrame(1, 0); |
+ QuicAckFrame ack = InitAckFrame(1); |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
EXPECT_CALL(*send_algorithm_, RevertRetransmissionTimeout()); |
ProcessAckPacket(&ack); |
@@ -2031,7 +2003,7 @@ TEST_P(QuicConnectionTest, NoLimitPacketsPerNack) { |
// Ack 15, nack 1-14. |
SequenceNumberSet lost_packets; |
- QuicAckFrame nack = InitAckFrame(15, 0); |
+ QuicAckFrame nack = InitAckFrame(15); |
for (int i = 1; i < 15; ++i) { |
NackPacket(i, &nack); |
lost_packets.insert(i); |
@@ -2063,14 +2035,14 @@ TEST_P(QuicConnectionTest, MultipleAcks) { |
// Client will ack packets 1, 2, [!3], 4, 5. |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- QuicAckFrame frame1 = InitAckFrame(5, 0); |
+ QuicAckFrame frame1 = InitAckFrame(5); |
NackPacket(3, &frame1); |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
ProcessAckPacket(&frame1); |
// Now the client implicitly acks 3, and explicitly acks 6. |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- QuicAckFrame frame2 = InitAckFrame(6, 0); |
+ QuicAckFrame frame2 = InitAckFrame(6); |
ProcessAckPacket(&frame2); |
} |
@@ -2083,36 +2055,37 @@ TEST_P(QuicConnectionTest, DontLatchUnackedPacket) { |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- QuicAckFrame frame = InitAckFrame(1, 0); |
+ QuicAckFrame frame = InitAckFrame(1); |
ProcessAckPacket(&frame); |
// Verify that our internal state has least-unacked as 2, because we're still |
// waiting for a potential ack for 2. |
- EXPECT_EQ(2u, outgoing_ack()->sent_info.least_unacked); |
+ |
+ EXPECT_EQ(2u, stop_waiting()->least_unacked); |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- frame = InitAckFrame(2, 0); |
+ frame = InitAckFrame(2); |
ProcessAckPacket(&frame); |
- EXPECT_EQ(3u, outgoing_ack()->sent_info.least_unacked); |
+ EXPECT_EQ(3u, stop_waiting()->least_unacked); |
// When we send an ack, we make sure our least-unacked makes sense. In this |
// case since we're not waiting on an ack for 2 and all packets are acked, we |
// set it to 3. |
SendAckPacketToPeer(); // Packet 3 |
// Least_unacked remains at 3 until another ack is received. |
- EXPECT_EQ(3u, outgoing_ack()->sent_info.least_unacked); |
+ EXPECT_EQ(3u, stop_waiting()->least_unacked); |
// Check that the outgoing ack had its sequence number as least_unacked. |
EXPECT_EQ(3u, least_unacked()); |
// Ack the ack, which updates the rtt and raises the least unacked. |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- frame = InitAckFrame(3, 0); |
+ frame = InitAckFrame(3); |
ProcessAckPacket(&frame); |
ON_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) |
.WillByDefault(Return(true)); |
SendStreamDataToPeer(1, "bar", 3, false, NULL); // Packet 4 |
- EXPECT_EQ(4u, outgoing_ack()->sent_info.least_unacked); |
+ EXPECT_EQ(4u, stop_waiting()->least_unacked); |
ON_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) |
.WillByDefault(Return(false)); |
SendAckPacketToPeer(); // Packet 5 |
@@ -2126,12 +2099,12 @@ TEST_P(QuicConnectionTest, DontLatchUnackedPacket) { |
SendStreamDataToPeer(1, "bar", 9, false, NULL); // Packet 7 |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- frame = InitAckFrame(7, 0); |
+ frame = InitAckFrame(7); |
NackPacket(5, &frame); |
NackPacket(6, &frame); |
ProcessAckPacket(&frame); |
- EXPECT_EQ(6u, outgoing_ack()->sent_info.least_unacked); |
+ EXPECT_EQ(6u, stop_waiting()->least_unacked); |
} |
TEST_P(QuicConnectionTest, ReviveMissingPacketAfterFecPacket) { |
@@ -2251,7 +2224,7 @@ TEST_P(QuicConnectionTest, TLP) { |
QuicConnectionPeer::GetSentPacketManager(&connection_), 1); |
SendStreamDataToPeer(3, "foo", 0, !kFin, NULL); |
- EXPECT_EQ(1u, outgoing_ack()->sent_info.least_unacked); |
+ EXPECT_EQ(1u, stop_waiting()->least_unacked); |
QuicTime retransmission_time = |
connection_.GetRetransmissionAlarm()->deadline(); |
EXPECT_NE(QuicTime::Zero(), retransmission_time); |
@@ -2264,14 +2237,14 @@ TEST_P(QuicConnectionTest, TLP) { |
connection_.GetRetransmissionAlarm()->Fire(); |
EXPECT_EQ(2u, writer_->header().packet_sequence_number); |
// We do not raise the high water mark yet. |
- EXPECT_EQ(1u, outgoing_ack()->sent_info.least_unacked); |
+ EXPECT_EQ(1u, stop_waiting()->least_unacked); |
} |
TEST_P(QuicConnectionTest, RTO) { |
QuicTime default_retransmission_time = clock_.ApproximateNow().Add( |
DefaultRetransmissionTime()); |
SendStreamDataToPeer(3, "foo", 0, !kFin, NULL); |
- EXPECT_EQ(1u, outgoing_ack()->sent_info.least_unacked); |
+ EXPECT_EQ(1u, stop_waiting()->least_unacked); |
EXPECT_EQ(1u, writer_->header().packet_sequence_number); |
EXPECT_EQ(default_retransmission_time, |
@@ -2283,7 +2256,7 @@ TEST_P(QuicConnectionTest, RTO) { |
connection_.GetRetransmissionAlarm()->Fire(); |
EXPECT_EQ(2u, writer_->header().packet_sequence_number); |
// We do not raise the high water mark yet. |
- EXPECT_EQ(1u, outgoing_ack()->sent_info.least_unacked); |
+ EXPECT_EQ(1u, stop_waiting()->least_unacked); |
} |
TEST_P(QuicConnectionTest, RTOWithSameEncryptionLevel) { |
@@ -2494,7 +2467,7 @@ TEST_P(QuicConnectionTest, RetransmissionCountCalculation) { |
.Times(AnyNumber()); |
EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) |
.WillOnce(DoAll(SaveArg<2>(&nack_sequence_number), Return(true))); |
- QuicAckFrame ack = InitAckFrame(rto_sequence_number, 0); |
+ QuicAckFrame ack = InitAckFrame(rto_sequence_number); |
// Nack the retransmitted packet. |
NackPacket(original_sequence_number, &ack); |
NackPacket(rto_sequence_number, &ack); |
@@ -2536,7 +2509,7 @@ TEST_P(QuicConnectionTest, DelayRTOWithAckReceipt) { |
// packet to delay the RTO. |
clock_.AdvanceTime(DefaultRetransmissionTime()); |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- QuicAckFrame ack = InitAckFrame(1, 0); |
+ QuicAckFrame ack = InitAckFrame(1); |
ProcessAckPacket(&ack); |
EXPECT_TRUE(retransmission_alarm->IsSet()); |
EXPECT_GT(retransmission_alarm->deadline(), clock_.Now()); |
@@ -2583,13 +2556,8 @@ TEST_P(QuicConnectionTest, CloseFecGroup) { |
// Now send non-fec protected ack packet and close the group. |
peer_creator_.set_sequence_number(4); |
- if (version() > QUIC_VERSION_15) { |
- QuicStopWaitingFrame frame = InitStopWaitingFrame(5); |
- ProcessStopWaitingPacket(&frame); |
- } else { |
- QuicAckFrame frame = InitAckFrame(0, 5); |
- ProcessAckPacket(&frame); |
- } |
+ QuicStopWaitingFrame frame = InitStopWaitingFrame(5); |
+ ProcessStopWaitingPacket(&frame); |
ASSERT_EQ(0u, connection_.NumFecGroups()); |
} |
@@ -2668,7 +2636,7 @@ TEST_P(QuicConnectionTest, PingAfterSend) { |
// Now recevie and ACK of the previous packet, which will move the |
// ping alarm forward. |
clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(5)); |
- QuicAckFrame frame = InitAckFrame(1, 0); |
+ QuicAckFrame frame = InitAckFrame(1); |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
ProcessAckPacket(&frame); |
@@ -2842,7 +2810,7 @@ TEST_P(QuicConnectionTest, SendSchedulerDelayThenAckAndSend) { |
// Now send non-retransmitting information, that we're not going to |
// retransmit 3. The far end should stop waiting for it. |
- QuicAckFrame frame = InitAckFrame(0, 1); |
+ QuicAckFrame frame = InitAckFrame(0); |
EXPECT_CALL(*send_algorithm_, |
TimeUntilSend(_, _, _)).WillRepeatedly( |
testing::Return(QuicTime::Delta::Zero())); |
@@ -2867,7 +2835,7 @@ TEST_P(QuicConnectionTest, SendSchedulerDelayThenAckAndHold) { |
// Now send non-retransmitting information, that we're not going to |
// retransmit 3. The far end should stop waiting for it. |
- QuicAckFrame frame = InitAckFrame(0, 1); |
+ QuicAckFrame frame = InitAckFrame(0); |
EXPECT_CALL(*send_algorithm_, |
TimeUntilSend(_, _, _)).WillOnce( |
testing::Return(QuicTime::Delta::FromMicroseconds(1))); |
@@ -2956,12 +2924,8 @@ TEST_P(QuicConnectionTest, SendDelayedAck) { |
// Simulate delayed ack alarm firing. |
connection_.GetAckAlarm()->Fire(); |
// Check that ack is sent and that delayed ack alarm is reset. |
- if (version() > QUIC_VERSION_15) { |
- EXPECT_EQ(2u, writer_->frame_count()); |
- EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
- } else { |
- EXPECT_EQ(1u, writer_->frame_count()); |
- } |
+ EXPECT_EQ(2u, writer_->frame_count()); |
+ EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
EXPECT_FALSE(writer_->ack_frames().empty()); |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
} |
@@ -2978,12 +2942,8 @@ TEST_P(QuicConnectionTest, SendEarlyDelayedAckForCrypto) { |
// Simulate delayed ack alarm firing. |
connection_.GetAckAlarm()->Fire(); |
// Check that ack is sent and that delayed ack alarm is reset. |
- if (version() > QUIC_VERSION_15) { |
- EXPECT_EQ(2u, writer_->frame_count()); |
- EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
- } else { |
- EXPECT_EQ(1u, writer_->frame_count()); |
- } |
+ EXPECT_EQ(2u, writer_->frame_count()); |
+ EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
EXPECT_FALSE(writer_->ack_frames().empty()); |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
} |
@@ -2993,12 +2953,8 @@ TEST_P(QuicConnectionTest, SendDelayedAckOnSecondPacket) { |
ProcessPacket(1); |
ProcessPacket(2); |
// Check that ack is sent and that delayed ack alarm is reset. |
- if (version() > QUIC_VERSION_15) { |
- EXPECT_EQ(2u, writer_->frame_count()); |
- EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
- } else { |
- EXPECT_EQ(1u, writer_->frame_count()); |
- } |
+ EXPECT_EQ(2u, writer_->frame_count()); |
+ EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
EXPECT_FALSE(writer_->ack_frames().empty()); |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
} |
@@ -3007,7 +2963,7 @@ TEST_P(QuicConnectionTest, NoAckOnOldNacks) { |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
// Drop one packet, triggering a sequence of acks. |
ProcessPacket(2); |
- size_t frames_per_ack = version() > QUIC_VERSION_15 ? 2 : 1; |
+ size_t frames_per_ack = 2; |
EXPECT_EQ(frames_per_ack, writer_->frame_count()); |
EXPECT_FALSE(writer_->ack_frames().empty()); |
writer_->Reset(); |
@@ -3036,12 +2992,8 @@ TEST_P(QuicConnectionTest, SendDelayedAckOnOutgoingPacket) { |
!kFin, NULL); |
// Check that ack is bundled with outgoing data and that delayed ack |
// alarm is reset. |
- if (version() > QUIC_VERSION_15) { |
- EXPECT_EQ(3u, writer_->frame_count()); |
- EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
- } else { |
- EXPECT_EQ(2u, writer_->frame_count()); |
- } |
+ EXPECT_EQ(3u, writer_->frame_count()); |
+ EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
EXPECT_FALSE(writer_->ack_frames().empty()); |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
} |
@@ -3051,7 +3003,7 @@ TEST_P(QuicConnectionTest, SendDelayedAckOnOutgoingCryptoPacket) { |
ProcessPacket(1); |
connection_.SendStreamDataWithString(kCryptoStreamId, "foo", 0, !kFin, NULL); |
// Check that ack is bundled with outgoing crypto data. |
- EXPECT_EQ(version() <= QUIC_VERSION_15 ? 2u : 3u, writer_->frame_count()); |
+ EXPECT_EQ(3u, writer_->frame_count()); |
EXPECT_FALSE(writer_->ack_frames().empty()); |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
} |
@@ -3067,12 +3019,8 @@ TEST_P(QuicConnectionTest, BundleAckForSecondCHLO) { |
// immediately send an ack, due to the packet gap. |
ProcessPacket(2); |
// Check that ack is sent and that delayed ack alarm is reset. |
- if (version() > QUIC_VERSION_15) { |
- EXPECT_EQ(3u, writer_->frame_count()); |
- EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
- } else { |
- EXPECT_EQ(2u, writer_->frame_count()); |
- } |
+ EXPECT_EQ(3u, writer_->frame_count()); |
+ EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
EXPECT_EQ(1u, writer_->stream_frames().size()); |
EXPECT_FALSE(writer_->ack_frames().empty()); |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
@@ -3085,7 +3033,7 @@ TEST_P(QuicConnectionTest, BundleAckWithDataOnIncomingAck) { |
connection_.SendStreamDataWithString(kClientDataStreamId1, "foo", 3, |
!kFin, NULL); |
// Ack the second packet, which will retransmit the first packet. |
- QuicAckFrame ack = InitAckFrame(2, 0); |
+ QuicAckFrame ack = InitAckFrame(2); |
NackPacket(1, &ack); |
SequenceNumberSet lost_packets; |
lost_packets.insert(1); |
@@ -3099,7 +3047,7 @@ TEST_P(QuicConnectionTest, BundleAckWithDataOnIncomingAck) { |
// Now ack the retransmission, which will both raise the high water mark |
// and see if there is more data to send. |
- ack = InitAckFrame(3, 0); |
+ ack = InitAckFrame(3); |
NackPacket(1, &ack); |
EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _)) |
.WillOnce(Return(SequenceNumberSet())); |
@@ -3112,7 +3060,7 @@ TEST_P(QuicConnectionTest, BundleAckWithDataOnIncomingAck) { |
writer_->Reset(); |
// Send the same ack, but send both data and an ack together. |
- ack = InitAckFrame(3, 0); |
+ ack = InitAckFrame(3); |
NackPacket(1, &ack); |
EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _)) |
.WillOnce(Return(SequenceNumberSet())); |
@@ -3124,12 +3072,8 @@ TEST_P(QuicConnectionTest, BundleAckWithDataOnIncomingAck) { |
// Check that ack is bundled with outgoing data and the delayed ack |
// alarm is reset. |
- if (version() > QUIC_VERSION_15) { |
- EXPECT_EQ(3u, writer_->frame_count()); |
- EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
- } else { |
- EXPECT_EQ(2u, writer_->frame_count()); |
- } |
+ EXPECT_EQ(3u, writer_->frame_count()); |
+ EXPECT_FALSE(writer_->stop_waiting_frames().empty()); |
EXPECT_FALSE(writer_->ack_frames().empty()); |
EXPECT_EQ(1u, writer_->stream_frames().size()); |
EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); |
@@ -3211,13 +3155,8 @@ TEST_P(QuicConnectionTest, MissingPacketsBeforeLeastUnacked) { |
// Set the sequence number of the ack packet to be least unacked (4). |
peer_creator_.set_sequence_number(3); |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
- if (version() > QUIC_VERSION_15) { |
- QuicStopWaitingFrame frame = InitStopWaitingFrame(4); |
- ProcessStopWaitingPacket(&frame); |
- } else { |
- QuicAckFrame ack = InitAckFrame(0, 4); |
- ProcessAckPacket(&ack); |
- } |
+ QuicStopWaitingFrame frame = InitStopWaitingFrame(4); |
+ ProcessStopWaitingPacket(&frame); |
EXPECT_TRUE(outgoing_ack()->received_info.missing_packets.empty()); |
} |
@@ -3253,18 +3192,10 @@ TEST_P(QuicConnectionTest, UpdateEntropyForReceivedPackets) { |
peer_creator_.set_sequence_number(5); |
QuicPacketEntropyHash six_packet_entropy_hash = 0; |
QuicPacketEntropyHash kRandomEntropyHash = 129u; |
- if (version() > QUIC_VERSION_15) { |
- QuicStopWaitingFrame frame = InitStopWaitingFrame(4); |
- frame.entropy_hash = kRandomEntropyHash; |
- if (ProcessStopWaitingPacket(&frame)) { |
- six_packet_entropy_hash = 1 << 6; |
- } |
- } else { |
- QuicAckFrame ack = InitAckFrame(0, 4); |
- ack.sent_info.entropy_hash = kRandomEntropyHash; |
- if (ProcessAckPacket(&ack)) { |
- six_packet_entropy_hash = 1 << 6; |
- } |
+ QuicStopWaitingFrame frame = InitStopWaitingFrame(4); |
+ frame.entropy_hash = kRandomEntropyHash; |
+ if (ProcessStopWaitingPacket(&frame)) { |
+ six_packet_entropy_hash = 1 << 6; |
} |
EXPECT_EQ((kRandomEntropyHash + (1 << 5) + six_packet_entropy_hash), |
@@ -3282,15 +3213,9 @@ TEST_P(QuicConnectionTest, UpdateEntropyHashUptoCurrentPacket) { |
QuicPacketEntropyHash kRandomEntropyHash = 85u; |
// Current packet is the least unacked packet. |
QuicPacketEntropyHash ack_entropy_hash; |
- if (version() > QUIC_VERSION_15) { |
- QuicStopWaitingFrame frame = InitStopWaitingFrame(23); |
- frame.entropy_hash = kRandomEntropyHash; |
- ack_entropy_hash = ProcessStopWaitingPacket(&frame); |
- } else { |
- QuicAckFrame ack = InitAckFrame(0, 23); |
- ack.sent_info.entropy_hash = kRandomEntropyHash; |
- ack_entropy_hash = ProcessAckPacket(&ack); |
- } |
+ QuicStopWaitingFrame frame = InitStopWaitingFrame(23); |
+ frame.entropy_hash = kRandomEntropyHash; |
+ ack_entropy_hash = ProcessStopWaitingPacket(&frame); |
EXPECT_EQ((kRandomEntropyHash + ack_entropy_hash), |
outgoing_ack()->received_info.entropy_hash); |
ProcessDataPacket(25, 1, kEntropyFlag); |
@@ -3551,7 +3476,7 @@ TEST_P(QuicConnectionTest, CheckSendStats) { |
connection_.GetRetransmissionAlarm()->Fire(); |
// Retransmit due to explicit nacks. |
- QuicAckFrame nack_three = InitAckFrame(4, 0); |
+ QuicAckFrame nack_three = InitAckFrame(4); |
NackPacket(3, &nack_three); |
NackPacket(1, &nack_three); |
SequenceNumberSet lost_packets; |
@@ -3735,7 +3660,7 @@ TEST_P(QuicConnectionTest, AckNotifierTriggerCallback) { |
// Process an ACK from the server which should trigger the callback. |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- QuicAckFrame frame = InitAckFrame(1, 0); |
+ QuicAckFrame frame = InitAckFrame(1); |
ProcessAckPacket(&frame); |
} |
@@ -3756,7 +3681,7 @@ TEST_P(QuicConnectionTest, AckNotifierFailToTriggerCallback) { |
// Now we receive ACK for packets 2 and 3, but importantly missing packet 1 |
// which we registered to be notified about. |
- QuicAckFrame frame = InitAckFrame(3, 0); |
+ QuicAckFrame frame = InitAckFrame(3); |
NackPacket(1, &frame); |
SequenceNumberSet lost_packets; |
lost_packets.insert(1); |
@@ -3780,7 +3705,7 @@ TEST_P(QuicConnectionTest, AckNotifierCallbackAfterRetransmission) { |
connection_.SendStreamDataWithString(3, "qux", 0, !kFin, NULL); |
// Now we receive ACK for packets 1, 3, and 4 and lose 2. |
- QuicAckFrame frame = InitAckFrame(4, 0); |
+ QuicAckFrame frame = InitAckFrame(4); |
NackPacket(2, &frame); |
SequenceNumberSet lost_packets; |
lost_packets.insert(2); |
@@ -3795,7 +3720,7 @@ TEST_P(QuicConnectionTest, AckNotifierCallbackAfterRetransmission) { |
EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _)) |
.WillRepeatedly(Return(SequenceNumberSet())); |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- QuicAckFrame second_ack_frame = InitAckFrame(5, 0); |
+ QuicAckFrame second_ack_frame = InitAckFrame(5); |
ProcessAckPacket(&second_ack_frame); |
} |
@@ -3812,7 +3737,7 @@ TEST_P(QuicConnectionTest, AckNotifierCallbackForAckAfterRTO) { |
QuicTime default_retransmission_time = clock_.ApproximateNow().Add( |
DefaultRetransmissionTime()); |
connection_.SendStreamDataWithString(3, "foo", 0, !kFin, delegate.get()); |
- EXPECT_EQ(1u, outgoing_ack()->sent_info.least_unacked); |
+ EXPECT_EQ(1u, stop_waiting()->least_unacked); |
EXPECT_EQ(1u, writer_->header().packet_sequence_number); |
EXPECT_EQ(default_retransmission_time, |
@@ -3824,19 +3749,19 @@ TEST_P(QuicConnectionTest, AckNotifierCallbackForAckAfterRTO) { |
connection_.GetRetransmissionAlarm()->Fire(); |
EXPECT_EQ(2u, writer_->header().packet_sequence_number); |
// We do not raise the high water mark yet. |
- EXPECT_EQ(1u, outgoing_ack()->sent_info.least_unacked); |
+ EXPECT_EQ(1u, stop_waiting()->least_unacked); |
// Ack the original packet, which will revert the RTO. |
EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
EXPECT_CALL(*delegate, OnAckNotification(1, _, 1, _, _)); |
EXPECT_CALL(*send_algorithm_, RevertRetransmissionTimeout()); |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- QuicAckFrame ack_frame = InitAckFrame(1, 0); |
+ QuicAckFrame ack_frame = InitAckFrame(1); |
ProcessAckPacket(&ack_frame); |
// Delegate is not notified again when the retransmit is acked. |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- QuicAckFrame second_ack_frame = InitAckFrame(2, 0); |
+ QuicAckFrame second_ack_frame = InitAckFrame(2); |
ProcessAckPacket(&second_ack_frame); |
} |
@@ -3857,7 +3782,7 @@ TEST_P(QuicConnectionTest, AckNotifierCallbackForAckOfNackedPacket) { |
connection_.SendStreamDataWithString(3, "qux", 0, !kFin, NULL); |
// Now we receive ACK for packets 1, 3, and 4 and lose 2. |
- QuicAckFrame frame = InitAckFrame(4, 0); |
+ QuicAckFrame frame = InitAckFrame(4); |
NackPacket(2, &frame); |
SequenceNumberSet lost_packets; |
lost_packets.insert(2); |
@@ -3873,7 +3798,7 @@ TEST_P(QuicConnectionTest, AckNotifierCallbackForAckOfNackedPacket) { |
EXPECT_CALL(*delegate, OnAckNotification(1, _, 1, _, _)); |
EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _)) |
.WillOnce(Return(no_lost_packets)); |
- QuicAckFrame second_ack_frame = InitAckFrame(4, 0); |
+ QuicAckFrame second_ack_frame = InitAckFrame(4); |
ProcessAckPacket(&second_ack_frame); |
// Verify that the delegate is not notified again when the |
@@ -3881,7 +3806,7 @@ TEST_P(QuicConnectionTest, AckNotifierCallbackForAckOfNackedPacket) { |
EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _)) |
.WillOnce(Return(no_lost_packets)); |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- QuicAckFrame third_ack_frame = InitAckFrame(5, 0); |
+ QuicAckFrame third_ack_frame = InitAckFrame(5); |
ProcessAckPacket(&third_ack_frame); |
} |
@@ -3900,7 +3825,7 @@ TEST_P(QuicConnectionTest, AckNotifierFECTriggerCallback) { |
// Process an ACK from the server with a revived packet, which should trigger |
// the callback. |
EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
- QuicAckFrame frame = InitAckFrame(2, 0); |
+ QuicAckFrame frame = InitAckFrame(2); |
NackPacket(1, &frame); |
frame.received_info.revived_packets.insert(1); |
ProcessAckPacket(&frame); |
@@ -3926,7 +3851,7 @@ TEST_P(QuicConnectionTest, AckNotifierCallbackAfterFECRecovery) { |
// Should recover the Ack packet and trigger the notification callback. |
QuicFrames frames; |
- QuicAckFrame ack_frame = InitAckFrame(1, 0); |
+ QuicAckFrame ack_frame = InitAckFrame(1); |
frames.push_back(QuicFrame(&ack_frame)); |
// Dummy stream frame to satisfy expectations set elsewhere. |