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

Side by Side Diff: net/quic/quic_stream_sequencer_test.cc

Issue 329403003: (minor) rename frames_ to buffered_frames_ in QuicStreamSequencer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_stream_sequencer.cc ('k') | net/quic/test_tools/quic_stream_sequencer_peer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_stream_sequencer.h" 5 #include "net/quic/quic_stream_sequencer.h"
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 static const char kPayload[] = 56 static const char kPayload[] =
57 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 57 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
58 58
59 class QuicStreamSequencerTest : public ::testing::Test { 59 class QuicStreamSequencerTest : public ::testing::Test {
60 protected: 60 protected:
61 QuicStreamSequencerTest() 61 QuicStreamSequencerTest()
62 : connection_(new MockConnection(false)), 62 : connection_(new MockConnection(false)),
63 session_(connection_), 63 session_(connection_),
64 stream_(&session_, 1), 64 stream_(&session_, 1),
65 sequencer_(new QuicStreamSequencer(&stream_)), 65 sequencer_(new QuicStreamSequencer(&stream_)),
66 frames_(QuicStreamSequencerPeer::GetFrames(sequencer_.get())) { 66 buffered_frames_(
67 QuicStreamSequencerPeer::GetBufferedFrames(sequencer_.get())) {
67 } 68 }
68 69
69 bool VerifyReadableRegions(const char** expected, size_t num_expected) { 70 bool VerifyReadableRegions(const char** expected, size_t num_expected) {
70 iovec iovecs[5]; 71 iovec iovecs[5];
71 size_t num_iovecs = sequencer_->GetReadableRegions(iovecs, 72 size_t num_iovecs = sequencer_->GetReadableRegions(iovecs,
72 arraysize(iovecs)); 73 arraysize(iovecs));
73 return VerifyIovecs(iovecs, num_iovecs, expected, num_expected); 74 return VerifyIovecs(iovecs, num_iovecs, expected, num_expected);
74 } 75 }
75 76
76 bool VerifyIovecs(iovec* iovecs, 77 bool VerifyIovecs(iovec* iovecs,
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 frame.offset = byte_offset; 120 frame.offset = byte_offset;
120 frame.data.Append(const_cast<char*>(data), strlen(data)); 121 frame.data.Append(const_cast<char*>(data), strlen(data));
121 frame.fin = false; 122 frame.fin = false;
122 return sequencer_->OnStreamFrame(frame); 123 return sequencer_->OnStreamFrame(frame);
123 } 124 }
124 125
125 MockConnection* connection_; 126 MockConnection* connection_;
126 MockSession session_; 127 MockSession session_;
127 testing::StrictMock<MockStream> stream_; 128 testing::StrictMock<MockStream> stream_;
128 scoped_ptr<QuicStreamSequencer> sequencer_; 129 scoped_ptr<QuicStreamSequencer> sequencer_;
129 map<QuicStreamOffset, string>* frames_; 130 map<QuicStreamOffset, string>* buffered_frames_;
130 }; 131 };
131 132
132 TEST_F(QuicStreamSequencerTest, RejectOldFrame) { 133 TEST_F(QuicStreamSequencerTest, RejectOldFrame) {
133 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(3)); 134 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(3));
134 135
135 EXPECT_TRUE(OnFrame(0, "abc")); 136 EXPECT_TRUE(OnFrame(0, "abc"));
136 EXPECT_EQ(0u, frames_->size()); 137 EXPECT_EQ(0u, buffered_frames_->size());
137 EXPECT_EQ(3u, sequencer_->num_bytes_consumed()); 138 EXPECT_EQ(3u, sequencer_->num_bytes_consumed());
138 // Ignore this - it matches a past sequence number and we should not see it 139 // Ignore this - it matches a past sequence number and we should not see it
139 // again. 140 // again.
140 EXPECT_TRUE(OnFrame(0, "def")); 141 EXPECT_TRUE(OnFrame(0, "def"));
141 EXPECT_EQ(0u, frames_->size()); 142 EXPECT_EQ(0u, buffered_frames_->size());
142 } 143 }
143 144
144 TEST_F(QuicStreamSequencerTest, RejectBufferedFrame) { 145 TEST_F(QuicStreamSequencerTest, RejectBufferedFrame) {
145 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)); 146 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3));
146 147
147 EXPECT_TRUE(OnFrame(0, "abc")); 148 EXPECT_TRUE(OnFrame(0, "abc"));
148 EXPECT_EQ(1u, frames_->size()); 149 EXPECT_EQ(1u, buffered_frames_->size());
149 EXPECT_EQ(0u, sequencer_->num_bytes_consumed()); 150 EXPECT_EQ(0u, sequencer_->num_bytes_consumed());
150 // Ignore this - it matches a buffered frame. 151 // Ignore this - it matches a buffered frame.
151 // Right now there's no checking that the payload is consistent. 152 // Right now there's no checking that the payload is consistent.
152 EXPECT_TRUE(OnFrame(0, "def")); 153 EXPECT_TRUE(OnFrame(0, "def"));
153 EXPECT_EQ(1u, frames_->size()); 154 EXPECT_EQ(1u, buffered_frames_->size());
154 } 155 }
155 156
156 TEST_F(QuicStreamSequencerTest, FullFrameConsumed) { 157 TEST_F(QuicStreamSequencerTest, FullFrameConsumed) {
157 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(3)); 158 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(3));
158 159
159 EXPECT_TRUE(OnFrame(0, "abc")); 160 EXPECT_TRUE(OnFrame(0, "abc"));
160 EXPECT_EQ(0u, frames_->size()); 161 EXPECT_EQ(0u, buffered_frames_->size());
161 EXPECT_EQ(3u, sequencer_->num_bytes_consumed()); 162 EXPECT_EQ(3u, sequencer_->num_bytes_consumed());
162 } 163 }
163 164
164 TEST_F(QuicStreamSequencerTest, BlockedThenFullFrameConsumed) { 165 TEST_F(QuicStreamSequencerTest, BlockedThenFullFrameConsumed) {
165 sequencer_->SetBlockedUntilFlush(); 166 sequencer_->SetBlockedUntilFlush();
166 167
167 EXPECT_TRUE(OnFrame(0, "abc")); 168 EXPECT_TRUE(OnFrame(0, "abc"));
168 EXPECT_EQ(1u, frames_->size()); 169 EXPECT_EQ(1u, buffered_frames_->size());
169 EXPECT_EQ(0u, sequencer_->num_bytes_consumed()); 170 EXPECT_EQ(0u, sequencer_->num_bytes_consumed());
170 171
171 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(3)); 172 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(3));
172 sequencer_->FlushBufferedFrames(); 173 sequencer_->FlushBufferedFrames();
173 EXPECT_EQ(0u, frames_->size()); 174 EXPECT_EQ(0u, buffered_frames_->size());
174 EXPECT_EQ(3u, sequencer_->num_bytes_consumed()); 175 EXPECT_EQ(3u, sequencer_->num_bytes_consumed());
175 176
176 EXPECT_CALL(stream_, ProcessRawData(StrEq("def"), 3)).WillOnce(Return(3)); 177 EXPECT_CALL(stream_, ProcessRawData(StrEq("def"), 3)).WillOnce(Return(3));
177 EXPECT_CALL(stream_, OnFinRead()); 178 EXPECT_CALL(stream_, OnFinRead());
178 EXPECT_TRUE(OnFinFrame(3, "def")); 179 EXPECT_TRUE(OnFinFrame(3, "def"));
179 } 180 }
180 181
181 TEST_F(QuicStreamSequencerTest, BlockedThenFullFrameAndFinConsumed) { 182 TEST_F(QuicStreamSequencerTest, BlockedThenFullFrameAndFinConsumed) {
182 sequencer_->SetBlockedUntilFlush(); 183 sequencer_->SetBlockedUntilFlush();
183 184
184 EXPECT_TRUE(OnFinFrame(0, "abc")); 185 EXPECT_TRUE(OnFinFrame(0, "abc"));
185 EXPECT_EQ(1u, frames_->size()); 186 EXPECT_EQ(1u, buffered_frames_->size());
186 EXPECT_EQ(0u, sequencer_->num_bytes_consumed()); 187 EXPECT_EQ(0u, sequencer_->num_bytes_consumed());
187 188
188 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(3)); 189 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(3));
189 EXPECT_CALL(stream_, OnFinRead()); 190 EXPECT_CALL(stream_, OnFinRead());
190 sequencer_->FlushBufferedFrames(); 191 sequencer_->FlushBufferedFrames();
191 EXPECT_EQ(0u, frames_->size()); 192 EXPECT_EQ(0u, buffered_frames_->size());
192 EXPECT_EQ(3u, sequencer_->num_bytes_consumed()); 193 EXPECT_EQ(3u, sequencer_->num_bytes_consumed());
193 } 194 }
194 195
195 TEST_F(QuicStreamSequencerTest, EmptyFrame) { 196 TEST_F(QuicStreamSequencerTest, EmptyFrame) {
196 EXPECT_CALL(stream_, 197 EXPECT_CALL(stream_,
197 CloseConnectionWithDetails(QUIC_INVALID_STREAM_FRAME, _)); 198 CloseConnectionWithDetails(QUIC_INVALID_STREAM_FRAME, _));
198 EXPECT_FALSE(OnFrame(0, "")); 199 EXPECT_FALSE(OnFrame(0, ""));
199 EXPECT_EQ(0u, frames_->size()); 200 EXPECT_EQ(0u, buffered_frames_->size());
200 EXPECT_EQ(0u, sequencer_->num_bytes_consumed()); 201 EXPECT_EQ(0u, sequencer_->num_bytes_consumed());
201 } 202 }
202 203
203 TEST_F(QuicStreamSequencerTest, EmptyFinFrame) { 204 TEST_F(QuicStreamSequencerTest, EmptyFinFrame) {
204 EXPECT_CALL(stream_, OnFinRead()); 205 EXPECT_CALL(stream_, OnFinRead());
205 EXPECT_TRUE(OnFinFrame(0, "")); 206 EXPECT_TRUE(OnFinFrame(0, ""));
206 EXPECT_EQ(0u, frames_->size()); 207 EXPECT_EQ(0u, buffered_frames_->size());
207 EXPECT_EQ(0u, sequencer_->num_bytes_consumed()); 208 EXPECT_EQ(0u, sequencer_->num_bytes_consumed());
208 } 209 }
209 210
210 TEST_F(QuicStreamSequencerTest, PartialFrameConsumed) { 211 TEST_F(QuicStreamSequencerTest, PartialFrameConsumed) {
211 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(2)); 212 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(2));
212 213
213 EXPECT_TRUE(OnFrame(0, "abc")); 214 EXPECT_TRUE(OnFrame(0, "abc"));
214 EXPECT_EQ(1u, frames_->size()); 215 EXPECT_EQ(1u, buffered_frames_->size());
215 EXPECT_EQ(2u, sequencer_->num_bytes_consumed()); 216 EXPECT_EQ(2u, sequencer_->num_bytes_consumed());
216 EXPECT_EQ("c", frames_->find(2)->second); 217 EXPECT_EQ("c", buffered_frames_->find(2)->second);
217 } 218 }
218 219
219 TEST_F(QuicStreamSequencerTest, NextxFrameNotConsumed) { 220 TEST_F(QuicStreamSequencerTest, NextxFrameNotConsumed) {
220 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(0)); 221 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(0));
221 222
222 EXPECT_TRUE(OnFrame(0, "abc")); 223 EXPECT_TRUE(OnFrame(0, "abc"));
223 EXPECT_EQ(1u, frames_->size()); 224 EXPECT_EQ(1u, buffered_frames_->size());
224 EXPECT_EQ(0u, sequencer_->num_bytes_consumed()); 225 EXPECT_EQ(0u, sequencer_->num_bytes_consumed());
225 EXPECT_EQ("abc", frames_->find(0)->second); 226 EXPECT_EQ("abc", buffered_frames_->find(0)->second);
226 } 227 }
227 228
228 TEST_F(QuicStreamSequencerTest, FutureFrameNotProcessed) { 229 TEST_F(QuicStreamSequencerTest, FutureFrameNotProcessed) {
229 EXPECT_TRUE(OnFrame(3, "abc")); 230 EXPECT_TRUE(OnFrame(3, "abc"));
230 EXPECT_EQ(1u, frames_->size()); 231 EXPECT_EQ(1u, buffered_frames_->size());
231 EXPECT_EQ(0u, sequencer_->num_bytes_consumed()); 232 EXPECT_EQ(0u, sequencer_->num_bytes_consumed());
232 EXPECT_EQ("abc", frames_->find(3)->second); 233 EXPECT_EQ("abc", buffered_frames_->find(3)->second);
233 } 234 }
234 235
235 TEST_F(QuicStreamSequencerTest, OutOfOrderFrameProcessed) { 236 TEST_F(QuicStreamSequencerTest, OutOfOrderFrameProcessed) {
236 // Buffer the first 237 // Buffer the first
237 EXPECT_TRUE(OnFrame(6, "ghi")); 238 EXPECT_TRUE(OnFrame(6, "ghi"));
238 EXPECT_EQ(1u, frames_->size()); 239 EXPECT_EQ(1u, buffered_frames_->size());
239 EXPECT_EQ(0u, sequencer_->num_bytes_consumed()); 240 EXPECT_EQ(0u, sequencer_->num_bytes_consumed());
240 EXPECT_EQ(3u, sequencer_->num_bytes_buffered()); 241 EXPECT_EQ(3u, sequencer_->num_bytes_buffered());
241 // Buffer the second 242 // Buffer the second
242 EXPECT_TRUE(OnFrame(3, "def")); 243 EXPECT_TRUE(OnFrame(3, "def"));
243 EXPECT_EQ(2u, frames_->size()); 244 EXPECT_EQ(2u, buffered_frames_->size());
244 EXPECT_EQ(0u, sequencer_->num_bytes_consumed()); 245 EXPECT_EQ(0u, sequencer_->num_bytes_consumed());
245 EXPECT_EQ(6u, sequencer_->num_bytes_buffered()); 246 EXPECT_EQ(6u, sequencer_->num_bytes_buffered());
246 247
247 InSequence s; 248 InSequence s;
248 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(3)); 249 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(3));
249 EXPECT_CALL(stream_, ProcessRawData(StrEq("def"), 3)).WillOnce(Return(3)); 250 EXPECT_CALL(stream_, ProcessRawData(StrEq("def"), 3)).WillOnce(Return(3));
250 EXPECT_CALL(stream_, ProcessRawData(StrEq("ghi"), 3)).WillOnce(Return(3)); 251 EXPECT_CALL(stream_, ProcessRawData(StrEq("ghi"), 3)).WillOnce(Return(3));
251 252
252 // Ack right away 253 // Ack right away
253 EXPECT_TRUE(OnFrame(0, "abc")); 254 EXPECT_TRUE(OnFrame(0, "abc"));
254 EXPECT_EQ(9u, sequencer_->num_bytes_consumed()); 255 EXPECT_EQ(9u, sequencer_->num_bytes_consumed());
255 EXPECT_EQ(0u, sequencer_->num_bytes_buffered()); 256 EXPECT_EQ(0u, sequencer_->num_bytes_buffered());
256 257
257 EXPECT_EQ(0u, frames_->size()); 258 EXPECT_EQ(0u, buffered_frames_->size());
258 } 259 }
259 260
260 TEST_F(QuicStreamSequencerTest, BasicHalfCloseOrdered) { 261 TEST_F(QuicStreamSequencerTest, BasicHalfCloseOrdered) {
261 InSequence s; 262 InSequence s;
262 263
263 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(3)); 264 EXPECT_CALL(stream_, ProcessRawData(StrEq("abc"), 3)).WillOnce(Return(3));
264 EXPECT_CALL(stream_, OnFinRead()); 265 EXPECT_CALL(stream_, OnFinRead());
265 EXPECT_TRUE(OnFinFrame(0, "abc")); 266 EXPECT_TRUE(OnFinFrame(0, "abc"));
266 267
267 EXPECT_EQ(3u, QuicStreamSequencerPeer::GetCloseOffset(sequencer_.get())); 268 EXPECT_EQ(3u, QuicStreamSequencerPeer::GetCloseOffset(sequencer_.get()));
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 LOG(ERROR) << "Sending index " << index << " " << list_[index].second; 375 LOG(ERROR) << "Sending index " << index << " " << list_[index].second;
375 EXPECT_TRUE(OnFrame(list_[index].first, list_[index].second.data())); 376 EXPECT_TRUE(OnFrame(list_[index].first, list_[index].second.data()));
376 377
377 list_.erase(list_.begin() + index); 378 list_.erase(list_.begin() + index);
378 } 379 }
379 } 380 }
380 381
381 } // namespace 382 } // namespace
382 } // namespace test 383 } // namespace test
383 } // namespace net 384 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_stream_sequencer.cc ('k') | net/quic/test_tools/quic_stream_sequencer_peer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698