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

Unified Diff: net/quic/quic_stream_sequencer_test.cc

Issue 1237623014: relnote: Convert the map into a list in QuicStreamSequencer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Allow_QuicClient_to_set_MTU_97160807
Patch Set: Created 5 years, 5 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/quic_stream_sequencer.cc ('k') | net/quic/test_tools/quic_stream_sequencer_peer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_stream_sequencer_test.cc
diff --git a/net/quic/quic_stream_sequencer_test.cc b/net/quic/quic_stream_sequencer_test.cc
index 80193edb0cb1793cba62932ea8f76add8d0d9a27..41f98196edfdb0b1dfd69b8c4992f78e7ab4d5bf 100644
--- a/net/quic/quic_stream_sequencer_test.cc
+++ b/net/quic/quic_stream_sequencer_test.cc
@@ -359,10 +359,13 @@ class QuicSequencerRandomTest : public QuicStreamSequencerTest {
to_process = base::RandInt(0, len);
}
output_.append(data, to_process);
+ peeked_.append(data, to_process);
return to_process;
}
string output_;
+ // Data which peek at using GetReadableRegion if we back up.
+ string peeked_;
FrameList list_;
};
@@ -385,6 +388,51 @@ TEST_F(QuicSequencerRandomTest, RandomFramesNoDroppingNoBackup) {
}
}
+TEST_F(QuicSequencerRandomTest, RandomFramesNoDroppingBackup) {
ramant (doing other things) 2015/07/17 01:27:45 Hi Ryan, While porting this CL, found this test
+ char buffer[10];
+ iovec iov[2];
+ iov[0].iov_base = &buffer[0];
+ iov[0].iov_len = 5;
+ iov[1].iov_base = &buffer[5];
+ iov[1].iov_len = 5;
+
+ EXPECT_CALL(stream_, ProcessRawData(_, _))
+ .Times(AnyNumber())
+ .WillRepeatedly(
+ Invoke(this, &QuicSequencerRandomTest::MaybeProcessMaybeBuffer));
+
+ while (output_.size() != arraysize(kPayload) - 1) {
+ if (!list_.empty() && (base::RandUint64() % 2 == 0)) { // Send data
+ int index = OneToN(list_.size()) - 1;
+ OnFrame(list_[index].first, list_[index].second.data());
+ list_.erase(list_.begin() + index);
+ } else { // Read data
+ bool has_bytes = sequencer_->HasBytesToRead();
+ iovec peek_iov[20];
+ int iovs_peeked = sequencer_->GetReadableRegions(peek_iov, 20);
+ if (has_bytes) {
+ ASSERT_LT(0, iovs_peeked);
+ } else {
+ ASSERT_EQ(0, iovs_peeked);
+ }
+ int total_bytes_to_peek = arraysize(buffer);
+ for (int i = 0; i < iovs_peeked; ++i) {
+ int bytes_to_peek = min<int>(peek_iov[i].iov_len, total_bytes_to_peek);
+ peeked_.append(static_cast<char*>(peek_iov[i].iov_base), bytes_to_peek);
+ total_bytes_to_peek -= bytes_to_peek;
+ if (total_bytes_to_peek == 0) {
+ break;
+ }
+ }
+ int bytes_read = sequencer_->Readv(iov, 2);
+ output_.append(buffer, bytes_read);
+ ASSERT_EQ(output_.size(), peeked_.size());
+ }
+ }
+ EXPECT_EQ(0, strcmp(kPayload, output_.data()));
+ EXPECT_EQ(0, strcmp(kPayload, peeked_.data()));
+}
+
// Same as above, just using a different method for reading.
TEST_F(QuicStreamSequencerTest, MarkConsumed) {
InSequence s;
« no previous file with comments | « net/quic/quic_stream_sequencer.cc ('k') | net/quic/test_tools/quic_stream_sequencer_peer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698