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

Unified Diff: net/quic/stream_sequencer_buffer_test.cc

Issue 1811043002: Landing Recent QUIC changes until 2016-03-15 16:26 UTC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add an export clause. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/stream_sequencer_buffer.cc ('k') | net/quic/test_tools/quic_connection_peer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/stream_sequencer_buffer_test.cc
diff --git a/net/quic/stream_sequencer_buffer_test.cc b/net/quic/stream_sequencer_buffer_test.cc
index ccebb73539ea7e7a7abd9f9678988f40defe8da7..348205ffd2c7e04fd95d25e9f47880d2bc811576 100644
--- a/net/quic/stream_sequencer_buffer_test.cc
+++ b/net/quic/stream_sequencer_buffer_test.cc
@@ -135,6 +135,12 @@ class StreamSequencerBufferPeer {
return &(buffer_->frame_arrival_time_map_);
}
+ void set_total_bytes_read(QuicStreamOffset total_bytes_read) {
+ buffer_->total_bytes_read_ = total_bytes_read;
+ }
+
+ void set_gaps(const std::list<Gap>& gaps) { buffer_->gaps_ = gaps; }
+
private:
StreamSequencerBuffer* buffer_;
};
@@ -277,6 +283,39 @@ TEST_F(StreamSequencerBufferTest, OnStreamDataWithoutOverlap) {
EXPECT_TRUE(helper_->CheckBufferInvariants());
}
+TEST_F(StreamSequencerBufferTest, OnStreamDataInLongStreamWithOverlap) {
+ // Assume a stream has already buffered almost 4GB.
+ uint64_t total_bytes_read = pow(2, 32) - 1;
+ helper_->set_total_bytes_read(total_bytes_read);
+ helper_->set_gaps(std::list<Gap>(
+ 1, Gap(total_bytes_read, std::numeric_limits<QuicStreamOffset>::max())));
+
+ // Three new out of order frames arrive.
+ const size_t kBytesToWrite = 100;
+ string source(kBytesToWrite, 'a');
+ size_t written;
+ // Frame [2^32 + 500, 2^32 + 600).
+ QuicStreamOffset offset = pow(2, 32) + 500;
+ EXPECT_EQ(
+ QUIC_NO_ERROR,
+ buffer_->OnStreamData(offset, source, clock_.ApproximateNow(), &written));
+ EXPECT_EQ(2, helper_->GapSize());
+
+ // Frame [2^32 + 700, 2^32 + 800).
+ offset = pow(2, 32) + 700;
+ EXPECT_EQ(
+ QUIC_NO_ERROR,
+ buffer_->OnStreamData(offset, source, clock_.ApproximateNow(), &written));
+ EXPECT_EQ(3, helper_->GapSize());
+
+ // Another frame [2^32 + 300, 2^32 + 400).
+ offset = pow(2, 32) + 300;
+ EXPECT_EQ(
+ QUIC_NO_ERROR,
+ buffer_->OnStreamData(offset, source, clock_.ApproximateNow(), &written));
+ EXPECT_EQ(4, helper_->GapSize());
+}
+
TEST_F(StreamSequencerBufferTest, OnStreamDataTillEnd) {
// Write 50 bytes to the end.
const size_t kBytesToWrite = 50;
« no previous file with comments | « net/quic/stream_sequencer_buffer.cc ('k') | net/quic/test_tools/quic_connection_peer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698