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

Unified Diff: net/quic/core/quic_headers_stream_test.cc

Issue 2916033003: Landing Recent QUIC changes until 03:18 AM, May 28, UTC (Closed)
Patch Set: A few more EXPORTs. Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/core/quic_headers_stream.cc ('k') | net/quic/core/quic_sent_packet_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/core/quic_headers_stream_test.cc
diff --git a/net/quic/core/quic_headers_stream_test.cc b/net/quic/core/quic_headers_stream_test.cc
index a2e16a4246198caf5fda5790076e4b90dc5cf874..14401ee6afaf8bd771fd3331372000681d85e2ff 100644
--- a/net/quic/core/quic_headers_stream_test.cc
+++ b/net/quic/core/quic_headers_stream_test.cc
@@ -972,7 +972,7 @@ TEST_P(QuicHeadersStreamTest, WritevStreamData) {
framer_->ProcessInput(saved_data_.data(), saved_data_.length());
EXPECT_EQ(saved_payloads_, data);
- if (use_ack_listener) {
+ if (use_ack_listener && !session_.use_stream_notifier()) {
// Notice, acked bytes doesn't include extra bytes used by
// HTTP/2 DATA frame headers.
EXPECT_EQ(ack_listener->total_acked_bytes(), data_len);
@@ -1041,6 +1041,65 @@ TEST_P(QuicHeadersStreamTest, WritevStreamDataSendBlocked) {
EXPECT_EQ(consumed_data.fin_consumed, false);
}
+TEST_P(QuicHeadersStreamTest, AckSentData) {
+ if (!session_.use_stream_notifier()) {
+ return;
+ }
+ EXPECT_CALL(session_,
+ WritevData(headers_stream_, kHeadersStreamId, _, _, NO_FIN, _))
+ .WillRepeatedly(
+ WithArgs<2>(Invoke(this, &QuicHeadersStreamTest::SaveIov)));
+ InSequence s;
+ QuicReferenceCountedPointer<MockAckListener> ack_listener1(
+ new MockAckListener());
+ QuicReferenceCountedPointer<MockAckListener> ack_listener2(
+ new MockAckListener());
+ QuicReferenceCountedPointer<MockAckListener> ack_listener3(
+ new MockAckListener());
+
+ // Packet 1.
+ headers_stream_->WriteOrBufferData("Header5", false, ack_listener1);
+ headers_stream_->WriteOrBufferData("Header5", false, ack_listener1);
+ headers_stream_->WriteOrBufferData("Header7", false, ack_listener2);
+
+ // Packet 2.
+ headers_stream_->WriteOrBufferData("Header9", false, ack_listener3);
+ headers_stream_->WriteOrBufferData("Header7", false, ack_listener2);
+
+ // Packet 3.
+ headers_stream_->WriteOrBufferData("Header9", false, ack_listener3);
+
+ QuicStreamFrame frame1(kHeadersStreamId, false, 0, "Header5");
+ QuicStreamFrame frame2(kHeadersStreamId, false, 7, "Header5");
+ // This is a bad frame3.
+ QuicStreamFrame frame3(kHeadersStreamId, false, 14, "BadHeader7");
+ QuicStreamFrame frame4(kHeadersStreamId, false, 21, "Header9");
+ QuicStreamFrame frame5(kHeadersStreamId, false, 28, "Header7");
+ QuicStreamFrame frame6(kHeadersStreamId, false, 35, "Header9");
+ // Packet 2 gets retransmitted.
+ EXPECT_CALL(*ack_listener3, OnPacketRetransmitted(7)).Times(1);
+ EXPECT_CALL(*ack_listener2, OnPacketRetransmitted(7)).Times(1);
+ headers_stream_->OnStreamFrameRetransmitted(frame4);
+ headers_stream_->OnStreamFrameRetransmitted(frame5);
+
+ // Packets are acked in order: 2, 3, 1.
+ EXPECT_CALL(*ack_listener3, OnPacketAcked(7, _));
+ EXPECT_CALL(*ack_listener2, OnPacketAcked(7, _));
+ headers_stream_->OnStreamFrameAcked(frame4, QuicTime::Delta::Zero());
+ headers_stream_->OnStreamFrameAcked(frame5, QuicTime::Delta::Zero());
+
+ EXPECT_CALL(*ack_listener3, OnPacketAcked(7, _));
+ headers_stream_->OnStreamFrameAcked(frame6, QuicTime::Delta::Zero());
+
+ EXPECT_CALL(*ack_listener1, OnPacketAcked(7, _));
+ EXPECT_CALL(*ack_listener1, OnPacketAcked(7, _));
+ headers_stream_->OnStreamFrameAcked(frame1, QuicTime::Delta::Zero());
+ headers_stream_->OnStreamFrameAcked(frame2, QuicTime::Delta::Zero());
+ // Unsent data is acked.
+ EXPECT_CALL(*connection_, CloseConnection(QUIC_INTERNAL_ERROR, _, _));
+ headers_stream_->OnStreamFrameAcked(frame3, QuicTime::Delta::Zero());
+}
+
} // namespace
} // namespace test
} // namespace net
« no previous file with comments | « net/quic/core/quic_headers_stream.cc ('k') | net/quic/core/quic_sent_packet_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698