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

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

Issue 15937012: Land Recent QUIC changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Small bug fixes Created 7 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
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_packet_generator.h" 5 #include "net/quic/quic_packet_generator.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "net/quic/crypto/crypto_protocol.h" 9 #include "net/quic/crypto/crypto_protocol.h"
10 #include "net/quic/crypto/null_encrypter.h" 10 #include "net/quic/crypto/null_encrypter.h"
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 SerializedPacket packet5_; 190 SerializedPacket packet5_;
191 191
192 private: 192 private:
193 scoped_ptr<char[]> data_array_; 193 scoped_ptr<char[]> data_array_;
194 }; 194 };
195 195
196 TEST_F(QuicPacketGeneratorTest, ShouldSendAck_NotWritable) { 196 TEST_F(QuicPacketGeneratorTest, ShouldSendAck_NotWritable) {
197 delegate_.SetCanWrite(false); 197 delegate_.SetCanWrite(false);
198 198
199 generator_.SetShouldSendAck(false); 199 generator_.SetShouldSendAck(false);
200 EXPECT_TRUE(generator_.HasQueuedData()); 200 EXPECT_TRUE(generator_.HasQueuedFrames());
201 } 201 }
202 202
203 TEST_F(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldNotFlush) { 203 TEST_F(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldNotFlush) {
204 delegate_.SetCanWrite(true); 204 delegate_.SetCanWrite(true);
205 generator_.StartBatchOperations(); 205 generator_.StartBatchOperations();
206 206
207 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame())); 207 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame()));
208 208
209 generator_.SetShouldSendAck(false); 209 generator_.SetShouldSendAck(false);
210 EXPECT_TRUE(generator_.HasQueuedData()); 210 EXPECT_TRUE(generator_.HasQueuedFrames());
211 } 211 }
212 212
213 TEST_F(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldFlush) { 213 TEST_F(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldFlush) {
214 delegate_.SetCanWrite(true); 214 delegate_.SetCanWrite(true);
215 215
216 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame())); 216 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame()));
217 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 217 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
218 DoAll(SaveArg<0>(&packet_), Return(true))); 218 DoAll(SaveArg<0>(&packet_), Return(true)));
219 219
220 generator_.SetShouldSendAck(false); 220 generator_.SetShouldSendAck(false);
221 EXPECT_FALSE(generator_.HasQueuedData()); 221 EXPECT_FALSE(generator_.HasQueuedFrames());
222 222
223 PacketContents contents; 223 PacketContents contents;
224 contents.num_ack_frames = 1; 224 contents.num_ack_frames = 1;
225 CheckPacketContains(contents, packet_); 225 CheckPacketContains(contents, packet_);
226 } 226 }
227 227
228 TEST_F(QuicPacketGeneratorTest, 228 TEST_F(QuicPacketGeneratorTest,
229 ShouldSendAckWithFeedback_WritableAndShouldNotFlush) { 229 ShouldSendAckWithFeedback_WritableAndShouldNotFlush) {
230 delegate_.SetCanWrite(true); 230 delegate_.SetCanWrite(true);
231 generator_.StartBatchOperations(); 231 generator_.StartBatchOperations();
232 232
233 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame())); 233 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame()));
234 EXPECT_CALL(delegate_, CreateFeedbackFrame()).WillOnce( 234 EXPECT_CALL(delegate_, CreateFeedbackFrame()).WillOnce(
235 Return(CreateFeedbackFrame())); 235 Return(CreateFeedbackFrame()));
236 236
237 generator_.SetShouldSendAck(true); 237 generator_.SetShouldSendAck(true);
238 EXPECT_TRUE(generator_.HasQueuedData()); 238 EXPECT_TRUE(generator_.HasQueuedFrames());
239 } 239 }
240 240
241 TEST_F(QuicPacketGeneratorTest, 241 TEST_F(QuicPacketGeneratorTest,
242 ShouldSendAckWithFeedback_WritableAndShouldFlush) { 242 ShouldSendAckWithFeedback_WritableAndShouldFlush) {
243 delegate_.SetCanWrite(true); 243 delegate_.SetCanWrite(true);
244 244
245 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame())); 245 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame()));
246 EXPECT_CALL(delegate_, CreateFeedbackFrame()).WillOnce( 246 EXPECT_CALL(delegate_, CreateFeedbackFrame()).WillOnce(
247 Return(CreateFeedbackFrame())); 247 Return(CreateFeedbackFrame()));
248 248
249 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 249 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
250 DoAll(SaveArg<0>(&packet_), Return(true))); 250 DoAll(SaveArg<0>(&packet_), Return(true)));
251 251
252 generator_.SetShouldSendAck(true); 252 generator_.SetShouldSendAck(true);
253 EXPECT_FALSE(generator_.HasQueuedData()); 253 EXPECT_FALSE(generator_.HasQueuedFrames());
254 254
255 PacketContents contents; 255 PacketContents contents;
256 contents.num_ack_frames = 1; 256 contents.num_ack_frames = 1;
257 contents.num_feedback_frames = 1; 257 contents.num_feedback_frames = 1;
258 CheckPacketContains(contents, packet_); 258 CheckPacketContains(contents, packet_);
259 } 259 }
260 260
261 TEST_F(QuicPacketGeneratorTest, AddControlFrame_NotWritable) { 261 TEST_F(QuicPacketGeneratorTest, AddControlFrame_NotWritable) {
262 delegate_.SetCanWrite(false); 262 delegate_.SetCanWrite(false);
263 263
264 generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); 264 generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame()));
265 EXPECT_TRUE(generator_.HasQueuedData()); 265 EXPECT_TRUE(generator_.HasQueuedFrames());
266 } 266 }
267 267
268 TEST_F(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldNotFlush) { 268 TEST_F(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldNotFlush) {
269 delegate_.SetCanWrite(true); 269 delegate_.SetCanWrite(true);
270 generator_.StartBatchOperations(); 270 generator_.StartBatchOperations();
271 271
272 generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); 272 generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame()));
273 EXPECT_TRUE(generator_.HasQueuedData()); 273 EXPECT_TRUE(generator_.HasQueuedFrames());
274 } 274 }
275 275
276 TEST_F(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldFlush) { 276 TEST_F(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldFlush) {
277 delegate_.SetCanWrite(true); 277 delegate_.SetCanWrite(true);
278 278
279 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 279 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
280 DoAll(SaveArg<0>(&packet_), Return(true))); 280 DoAll(SaveArg<0>(&packet_), Return(true)));
281 281
282 generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); 282 generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame()));
283 EXPECT_FALSE(generator_.HasQueuedData()); 283 EXPECT_FALSE(generator_.HasQueuedFrames());
284 284
285 PacketContents contents; 285 PacketContents contents;
286 contents.num_rst_stream_frames = 1; 286 contents.num_rst_stream_frames = 1;
287 CheckPacketContains(contents, packet_); 287 CheckPacketContains(contents, packet_);
288 } 288 }
289 289
290 TEST_F(QuicPacketGeneratorTest, ConsumeData_NotWritable) { 290 TEST_F(QuicPacketGeneratorTest, ConsumeData_NotWritable) {
291 delegate_.SetCanWrite(false); 291 delegate_.SetCanWrite(false);
292 292
293 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 2, true); 293 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 2, true);
294 EXPECT_EQ(0u, consumed.bytes_consumed); 294 EXPECT_EQ(0u, consumed.bytes_consumed);
295 EXPECT_FALSE(consumed.fin_consumed); 295 EXPECT_FALSE(consumed.fin_consumed);
296 EXPECT_FALSE(generator_.HasQueuedData()); 296 EXPECT_FALSE(generator_.HasQueuedFrames());
297 } 297 }
298 298
299 TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldNotFlush) { 299 TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldNotFlush) {
300 delegate_.SetCanWrite(true); 300 delegate_.SetCanWrite(true);
301 generator_.StartBatchOperations(); 301 generator_.StartBatchOperations();
302 302
303 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 2, true); 303 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 2, true);
304 EXPECT_EQ(3u, consumed.bytes_consumed); 304 EXPECT_EQ(3u, consumed.bytes_consumed);
305 EXPECT_TRUE(consumed.fin_consumed); 305 EXPECT_TRUE(consumed.fin_consumed);
306 EXPECT_TRUE(generator_.HasQueuedData()); 306 EXPECT_TRUE(generator_.HasQueuedFrames());
307 } 307 }
308 308
309 TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldFlush) { 309 TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldFlush) {
310 delegate_.SetCanWrite(true); 310 delegate_.SetCanWrite(true);
311 311
312 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 312 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
313 DoAll(SaveArg<0>(&packet_), Return(true))); 313 DoAll(SaveArg<0>(&packet_), Return(true)));
314 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 2, true); 314 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 2, true);
315 EXPECT_EQ(3u, consumed.bytes_consumed); 315 EXPECT_EQ(3u, consumed.bytes_consumed);
316 EXPECT_TRUE(consumed.fin_consumed); 316 EXPECT_TRUE(consumed.fin_consumed);
317 EXPECT_FALSE(generator_.HasQueuedData()); 317 EXPECT_FALSE(generator_.HasQueuedFrames());
318 318
319 PacketContents contents; 319 PacketContents contents;
320 contents.num_stream_frames = 1; 320 contents.num_stream_frames = 1;
321 CheckPacketContains(contents, packet_); 321 CheckPacketContains(contents, packet_);
322 } 322 }
323 323
324 TEST_F(QuicPacketGeneratorTest, 324 TEST_F(QuicPacketGeneratorTest,
325 ConsumeDataMultipleTimes_WritableAndShouldNotFlush) { 325 ConsumeDataMultipleTimes_WritableAndShouldNotFlush) {
326 delegate_.SetCanWrite(true); 326 delegate_.SetCanWrite(true);
327 generator_.StartBatchOperations(); 327 generator_.StartBatchOperations();
328 328
329 generator_.ConsumeData(1, "foo", 2, true); 329 generator_.ConsumeData(1, "foo", 2, true);
330 QuicConsumedData consumed = generator_.ConsumeData(3, "quux", 7, false); 330 QuicConsumedData consumed = generator_.ConsumeData(3, "quux", 7, false);
331 EXPECT_EQ(4u, consumed.bytes_consumed); 331 EXPECT_EQ(4u, consumed.bytes_consumed);
332 EXPECT_FALSE(consumed.fin_consumed); 332 EXPECT_FALSE(consumed.fin_consumed);
333 EXPECT_TRUE(generator_.HasQueuedData()); 333 EXPECT_TRUE(generator_.HasQueuedFrames());
334 } 334 }
335 335
336 TEST_F(QuicPacketGeneratorTest, ConsumeData_BatchOperations) { 336 TEST_F(QuicPacketGeneratorTest, ConsumeData_BatchOperations) {
337 delegate_.SetCanWrite(true); 337 delegate_.SetCanWrite(true);
338 generator_.StartBatchOperations(); 338 generator_.StartBatchOperations();
339 339
340 generator_.ConsumeData(1, "foo", 2, true); 340 generator_.ConsumeData(1, "foo", 2, true);
341 QuicConsumedData consumed = generator_.ConsumeData(3, "quux", 7, false); 341 QuicConsumedData consumed = generator_.ConsumeData(3, "quux", 7, false);
342 EXPECT_EQ(4u, consumed.bytes_consumed); 342 EXPECT_EQ(4u, consumed.bytes_consumed);
343 EXPECT_FALSE(consumed.fin_consumed); 343 EXPECT_FALSE(consumed.fin_consumed);
344 EXPECT_TRUE(generator_.HasQueuedData()); 344 EXPECT_TRUE(generator_.HasQueuedFrames());
345 345
346 // Now both frames will be flushed out. 346 // Now both frames will be flushed out.
347 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 347 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
348 DoAll(SaveArg<0>(&packet_), Return(true))); 348 DoAll(SaveArg<0>(&packet_), Return(true)));
349 generator_.FinishBatchOperations(); 349 generator_.FinishBatchOperations();
350 EXPECT_FALSE(generator_.HasQueuedData()); 350 EXPECT_FALSE(generator_.HasQueuedFrames());
351 351
352 PacketContents contents; 352 PacketContents contents;
353 contents.num_stream_frames = 2; 353 contents.num_stream_frames = 2;
354 CheckPacketContains(contents, packet_); 354 CheckPacketContains(contents, packet_);
355 } 355 }
356 356
357 TEST_F(QuicPacketGeneratorTest, ConsumeDataFEC) { 357 TEST_F(QuicPacketGeneratorTest, ConsumeDataFEC) {
358 delegate_.SetCanWrite(true); 358 delegate_.SetCanWrite(true);
359 359
360 // Send FEC every two packets. 360 // Send FEC every two packets.
(...skipping 12 matching lines...) Expand all
373 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 373 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
374 DoAll(SaveArg<0>(&packet5_), Return(true))); 374 DoAll(SaveArg<0>(&packet5_), Return(true)));
375 } 375 }
376 376
377 // Send enough data to create 3 packets: two full and one partial. 377 // Send enough data to create 3 packets: two full and one partial.
378 size_t data_len = 2 * kMaxPacketSize + 100; 378 size_t data_len = 2 * kMaxPacketSize + 100;
379 QuicConsumedData consumed = 379 QuicConsumedData consumed =
380 generator_.ConsumeData(3, CreateData(data_len), 0, true); 380 generator_.ConsumeData(3, CreateData(data_len), 0, true);
381 EXPECT_EQ(data_len, consumed.bytes_consumed); 381 EXPECT_EQ(data_len, consumed.bytes_consumed);
382 EXPECT_TRUE(consumed.fin_consumed); 382 EXPECT_TRUE(consumed.fin_consumed);
383 EXPECT_FALSE(generator_.HasQueuedData()); 383 EXPECT_FALSE(generator_.HasQueuedFrames());
384 384
385 CheckPacketHasSingleStreamFrame(packet_); 385 CheckPacketHasSingleStreamFrame(packet_);
386 CheckPacketHasSingleStreamFrame(packet2_); 386 CheckPacketHasSingleStreamFrame(packet2_);
387 CheckPacketIsFec(packet3_, 1); 387 CheckPacketIsFec(packet3_, 1);
388 388
389 CheckPacketHasSingleStreamFrame(packet4_); 389 CheckPacketHasSingleStreamFrame(packet4_);
390 CheckPacketIsFec(packet5_, 4); 390 CheckPacketIsFec(packet5_, 4);
391 } 391 }
392 392
393 TEST_F(QuicPacketGeneratorTest, ConsumeDataSendsFecAtEnd) { 393 TEST_F(QuicPacketGeneratorTest, ConsumeDataSendsFecAtEnd) {
(...skipping 11 matching lines...) Expand all
405 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 405 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
406 DoAll(SaveArg<0>(&packet3_), Return(true))); 406 DoAll(SaveArg<0>(&packet3_), Return(true)));
407 } 407 }
408 408
409 // Send enough data to create 2 packets: one full and one partial. 409 // Send enough data to create 2 packets: one full and one partial.
410 size_t data_len = 1 * kMaxPacketSize + 100; 410 size_t data_len = 1 * kMaxPacketSize + 100;
411 QuicConsumedData consumed = 411 QuicConsumedData consumed =
412 generator_.ConsumeData(3, CreateData(data_len), 0, true); 412 generator_.ConsumeData(3, CreateData(data_len), 0, true);
413 EXPECT_EQ(data_len, consumed.bytes_consumed); 413 EXPECT_EQ(data_len, consumed.bytes_consumed);
414 EXPECT_TRUE(consumed.fin_consumed); 414 EXPECT_TRUE(consumed.fin_consumed);
415 EXPECT_FALSE(generator_.HasQueuedData()); 415 EXPECT_FALSE(generator_.HasQueuedFrames());
416 416
417 CheckPacketHasSingleStreamFrame(packet_); 417 CheckPacketHasSingleStreamFrame(packet_);
418 CheckPacketHasSingleStreamFrame(packet2_); 418 CheckPacketHasSingleStreamFrame(packet2_);
419 CheckPacketIsFec(packet3_, 1); 419 CheckPacketIsFec(packet3_, 1);
420 } 420 }
421 421
422 TEST_F(QuicPacketGeneratorTest, NotWritableThenBatchOperations) { 422 TEST_F(QuicPacketGeneratorTest, NotWritableThenBatchOperations) {
423 delegate_.SetCanWrite(false); 423 delegate_.SetCanWrite(false);
424 424
425 generator_.SetShouldSendAck(true); 425 generator_.SetShouldSendAck(true);
426 generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); 426 generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame()));
427 EXPECT_TRUE(generator_.HasQueuedData()); 427 EXPECT_TRUE(generator_.HasQueuedFrames());
428 428
429 delegate_.SetCanWrite(true); 429 delegate_.SetCanWrite(true);
430 430
431 generator_.StartBatchOperations(); 431 generator_.StartBatchOperations();
432 432
433 // When the first write operation is invoked, the ack and feedback 433 // When the first write operation is invoked, the ack and feedback
434 // frames will be returned. 434 // frames will be returned.
435 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame())); 435 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame()));
436 EXPECT_CALL(delegate_, CreateFeedbackFrame()).WillOnce( 436 EXPECT_CALL(delegate_, CreateFeedbackFrame()).WillOnce(
437 Return(CreateFeedbackFrame())); 437 Return(CreateFeedbackFrame()));
438 438
439 // Send some data and a control frame 439 // Send some data and a control frame
440 generator_.ConsumeData(3, "quux", 7, false); 440 generator_.ConsumeData(3, "quux", 7, false);
441 generator_.AddControlFrame(QuicFrame(CreateGoAwayFrame())); 441 generator_.AddControlFrame(QuicFrame(CreateGoAwayFrame()));
442 442
443 // All five frames will be flushed out in a single packet. 443 // All five frames will be flushed out in a single packet.
444 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 444 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
445 DoAll(SaveArg<0>(&packet_), Return(true))); 445 DoAll(SaveArg<0>(&packet_), Return(true)));
446 generator_.FinishBatchOperations(); 446 generator_.FinishBatchOperations();
447 EXPECT_FALSE(generator_.HasQueuedData()); 447 EXPECT_FALSE(generator_.HasQueuedFrames());
448 448
449 PacketContents contents; 449 PacketContents contents;
450 contents.num_ack_frames = 1; 450 contents.num_ack_frames = 1;
451 contents.num_goaway_frames = 1; 451 contents.num_goaway_frames = 1;
452 contents.num_feedback_frames = 1; 452 contents.num_feedback_frames = 1;
453 contents.num_rst_stream_frames = 1; 453 contents.num_rst_stream_frames = 1;
454 contents.num_stream_frames = 1; 454 contents.num_stream_frames = 1;
455 CheckPacketContains(contents, packet_); 455 CheckPacketContains(contents, packet_);
456 } 456 }
457 457
458 TEST_F(QuicPacketGeneratorTest, NotWritableThenBatchOperations2) { 458 TEST_F(QuicPacketGeneratorTest, NotWritableThenBatchOperations2) {
459 delegate_.SetCanWrite(false); 459 delegate_.SetCanWrite(false);
460 460
461 generator_.SetShouldSendAck(true); 461 generator_.SetShouldSendAck(true);
462 generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); 462 generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame()));
463 EXPECT_TRUE(generator_.HasQueuedData()); 463 EXPECT_TRUE(generator_.HasQueuedFrames());
464 464
465 delegate_.SetCanWrite(true); 465 delegate_.SetCanWrite(true);
466 466
467 generator_.StartBatchOperations(); 467 generator_.StartBatchOperations();
468 468
469 // When the first write operation is invoked, the ack and feedback 469 // When the first write operation is invoked, the ack and feedback
470 // frames will be returned. 470 // frames will be returned.
471 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame())); 471 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame()));
472 EXPECT_CALL(delegate_, CreateFeedbackFrame()).WillOnce( 472 EXPECT_CALL(delegate_, CreateFeedbackFrame()).WillOnce(
473 Return(CreateFeedbackFrame())); 473 Return(CreateFeedbackFrame()));
474 474
475 { 475 {
476 InSequence dummy; 476 InSequence dummy;
477 // All five frames will be flushed out in a single packet 477 // All five frames will be flushed out in a single packet
478 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 478 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
479 DoAll(SaveArg<0>(&packet_), Return(true))); 479 DoAll(SaveArg<0>(&packet_), Return(true)));
480 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 480 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
481 DoAll(SaveArg<0>(&packet2_), Return(true))); 481 DoAll(SaveArg<0>(&packet2_), Return(true)));
482 } 482 }
483 483
484 // Send enough data to exceed one packet 484 // Send enough data to exceed one packet
485 size_t data_len = kMaxPacketSize + 100; 485 size_t data_len = kMaxPacketSize + 100;
486 QuicConsumedData consumed = 486 QuicConsumedData consumed =
487 generator_.ConsumeData(3, CreateData(data_len), 0, true); 487 generator_.ConsumeData(3, CreateData(data_len), 0, true);
488 EXPECT_EQ(data_len, consumed.bytes_consumed); 488 EXPECT_EQ(data_len, consumed.bytes_consumed);
489 EXPECT_TRUE(consumed.fin_consumed); 489 EXPECT_TRUE(consumed.fin_consumed);
490 generator_.AddControlFrame(QuicFrame(CreateGoAwayFrame())); 490 generator_.AddControlFrame(QuicFrame(CreateGoAwayFrame()));
491 491
492 generator_.FinishBatchOperations(); 492 generator_.FinishBatchOperations();
493 EXPECT_FALSE(generator_.HasQueuedData()); 493 EXPECT_FALSE(generator_.HasQueuedFrames());
494 494
495 // The first packet should have the queued data and part of the stream data. 495 // The first packet should have the queued data and part of the stream data.
496 PacketContents contents; 496 PacketContents contents;
497 contents.num_ack_frames = 1; 497 contents.num_ack_frames = 1;
498 contents.num_feedback_frames = 1; 498 contents.num_feedback_frames = 1;
499 contents.num_rst_stream_frames = 1; 499 contents.num_rst_stream_frames = 1;
500 contents.num_stream_frames = 1; 500 contents.num_stream_frames = 1;
501 CheckPacketContains(contents, packet_); 501 CheckPacketContains(contents, packet_);
502 502
503 // The second should have the remainder of the stream data. 503 // The second should have the remainder of the stream data.
504 PacketContents contents2; 504 PacketContents contents2;
505 contents2.num_goaway_frames = 1; 505 contents2.num_goaway_frames = 1;
506 contents2.num_stream_frames = 1; 506 contents2.num_stream_frames = 1;
507 CheckPacketContains(contents2, packet2_); 507 CheckPacketContains(contents2, packet2_);
508 } 508 }
509 509
510 } // namespace test 510 } // namespace test
511 } // namespace net 511 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698