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

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

Issue 23691073: Land Recent QUIC changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Compiler/unittests fix Created 7 years, 3 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_packet_generator.cc ('k') | net/quic/quic_sent_packet_manager.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_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 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 EXPECT_FALSE(generator_.HasQueuedFrames()); 320 EXPECT_FALSE(generator_.HasQueuedFrames());
321 321
322 PacketContents contents; 322 PacketContents contents;
323 contents.num_rst_stream_frames = 1; 323 contents.num_rst_stream_frames = 1;
324 CheckPacketContains(contents, packet_); 324 CheckPacketContains(contents, packet_);
325 } 325 }
326 326
327 TEST_F(QuicPacketGeneratorTest, ConsumeData_NotWritable) { 327 TEST_F(QuicPacketGeneratorTest, ConsumeData_NotWritable) {
328 delegate_.SetCanNotWrite(); 328 delegate_.SetCanNotWrite();
329 329
330 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 2, true); 330 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 2, true, NULL);
331 EXPECT_EQ(0u, consumed.bytes_consumed); 331 EXPECT_EQ(0u, consumed.bytes_consumed);
332 EXPECT_FALSE(consumed.fin_consumed); 332 EXPECT_FALSE(consumed.fin_consumed);
333 EXPECT_FALSE(generator_.HasQueuedFrames()); 333 EXPECT_FALSE(generator_.HasQueuedFrames());
334 } 334 }
335 335
336 TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldNotFlush) { 336 TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldNotFlush) {
337 delegate_.SetCanWriteAnything(); 337 delegate_.SetCanWriteAnything();
338 generator_.StartBatchOperations(); 338 generator_.StartBatchOperations();
339 339
340 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 2, true); 340 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 2, true, NULL);
341 EXPECT_EQ(3u, consumed.bytes_consumed); 341 EXPECT_EQ(3u, consumed.bytes_consumed);
342 EXPECT_TRUE(consumed.fin_consumed); 342 EXPECT_TRUE(consumed.fin_consumed);
343 EXPECT_TRUE(generator_.HasQueuedFrames()); 343 EXPECT_TRUE(generator_.HasQueuedFrames());
344 } 344 }
345 345
346 TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldFlush) { 346 TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldFlush) {
347 delegate_.SetCanWriteAnything(); 347 delegate_.SetCanWriteAnything();
348 348
349 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 349 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
350 DoAll(SaveArg<0>(&packet_), Return(true))); 350 DoAll(SaveArg<0>(&packet_), Return(true)));
351 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 2, true); 351 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 2, true, NULL);
352 EXPECT_EQ(3u, consumed.bytes_consumed); 352 EXPECT_EQ(3u, consumed.bytes_consumed);
353 EXPECT_TRUE(consumed.fin_consumed); 353 EXPECT_TRUE(consumed.fin_consumed);
354 EXPECT_FALSE(generator_.HasQueuedFrames()); 354 EXPECT_FALSE(generator_.HasQueuedFrames());
355 355
356 PacketContents contents; 356 PacketContents contents;
357 contents.num_stream_frames = 1; 357 contents.num_stream_frames = 1;
358 CheckPacketContains(contents, packet_); 358 CheckPacketContains(contents, packet_);
359 } 359 }
360 360
361 TEST_F(QuicPacketGeneratorTest, 361 TEST_F(QuicPacketGeneratorTest,
362 ConsumeDataMultipleTimes_WritableAndShouldNotFlush) { 362 ConsumeDataMultipleTimes_WritableAndShouldNotFlush) {
363 delegate_.SetCanWriteAnything(); 363 delegate_.SetCanWriteAnything();
364 generator_.StartBatchOperations(); 364 generator_.StartBatchOperations();
365 365
366 generator_.ConsumeData(1, "foo", 2, true); 366 generator_.ConsumeData(1, "foo", 2, true, NULL);
367 QuicConsumedData consumed = generator_.ConsumeData(3, "quux", 7, false); 367 QuicConsumedData consumed = generator_.ConsumeData(3, "quux", 7, false, NULL);
368 EXPECT_EQ(4u, consumed.bytes_consumed); 368 EXPECT_EQ(4u, consumed.bytes_consumed);
369 EXPECT_FALSE(consumed.fin_consumed); 369 EXPECT_FALSE(consumed.fin_consumed);
370 EXPECT_TRUE(generator_.HasQueuedFrames()); 370 EXPECT_TRUE(generator_.HasQueuedFrames());
371 } 371 }
372 372
373 TEST_F(QuicPacketGeneratorTest, ConsumeData_BatchOperations) { 373 TEST_F(QuicPacketGeneratorTest, ConsumeData_BatchOperations) {
374 delegate_.SetCanWriteAnything(); 374 delegate_.SetCanWriteAnything();
375 generator_.StartBatchOperations(); 375 generator_.StartBatchOperations();
376 376
377 generator_.ConsumeData(1, "foo", 2, true); 377 generator_.ConsumeData(1, "foo", 2, true, NULL);
378 QuicConsumedData consumed = generator_.ConsumeData(3, "quux", 7, false); 378 QuicConsumedData consumed = generator_.ConsumeData(3, "quux", 7, false, NULL);
379 EXPECT_EQ(4u, consumed.bytes_consumed); 379 EXPECT_EQ(4u, consumed.bytes_consumed);
380 EXPECT_FALSE(consumed.fin_consumed); 380 EXPECT_FALSE(consumed.fin_consumed);
381 EXPECT_TRUE(generator_.HasQueuedFrames()); 381 EXPECT_TRUE(generator_.HasQueuedFrames());
382 382
383 // Now both frames will be flushed out. 383 // Now both frames will be flushed out.
384 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 384 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
385 DoAll(SaveArg<0>(&packet_), Return(true))); 385 DoAll(SaveArg<0>(&packet_), Return(true)));
386 generator_.FinishBatchOperations(); 386 generator_.FinishBatchOperations();
387 EXPECT_FALSE(generator_.HasQueuedFrames()); 387 EXPECT_FALSE(generator_.HasQueuedFrames());
388 388
(...skipping 18 matching lines...) Expand all
407 DoAll(SaveArg<0>(&packet3_), Return(true))); 407 DoAll(SaveArg<0>(&packet3_), Return(true)));
408 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 408 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
409 DoAll(SaveArg<0>(&packet4_), Return(true))); 409 DoAll(SaveArg<0>(&packet4_), Return(true)));
410 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 410 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
411 DoAll(SaveArg<0>(&packet5_), Return(true))); 411 DoAll(SaveArg<0>(&packet5_), Return(true)));
412 } 412 }
413 413
414 // Send enough data to create 3 packets: two full and one partial. 414 // Send enough data to create 3 packets: two full and one partial.
415 size_t data_len = 2 * kMaxPacketSize + 100; 415 size_t data_len = 2 * kMaxPacketSize + 100;
416 QuicConsumedData consumed = 416 QuicConsumedData consumed =
417 generator_.ConsumeData(3, CreateData(data_len), 0, true); 417 generator_.ConsumeData(3, CreateData(data_len), 0, true, NULL);
418 EXPECT_EQ(data_len, consumed.bytes_consumed); 418 EXPECT_EQ(data_len, consumed.bytes_consumed);
419 EXPECT_TRUE(consumed.fin_consumed); 419 EXPECT_TRUE(consumed.fin_consumed);
420 EXPECT_FALSE(generator_.HasQueuedFrames()); 420 EXPECT_FALSE(generator_.HasQueuedFrames());
421 421
422 CheckPacketHasSingleStreamFrame(packet_); 422 CheckPacketHasSingleStreamFrame(packet_);
423 CheckPacketHasSingleStreamFrame(packet2_); 423 CheckPacketHasSingleStreamFrame(packet2_);
424 CheckPacketIsFec(packet3_, 1); 424 CheckPacketIsFec(packet3_, 1);
425 425
426 CheckPacketHasSingleStreamFrame(packet4_); 426 CheckPacketHasSingleStreamFrame(packet4_);
427 CheckPacketIsFec(packet5_, 4); 427 CheckPacketIsFec(packet5_, 4);
(...skipping 11 matching lines...) Expand all
439 DoAll(SaveArg<0>(&packet_), Return(true))); 439 DoAll(SaveArg<0>(&packet_), Return(true)));
440 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 440 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
441 DoAll(SaveArg<0>(&packet2_), Return(true))); 441 DoAll(SaveArg<0>(&packet2_), Return(true)));
442 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 442 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
443 DoAll(SaveArg<0>(&packet3_), Return(true))); 443 DoAll(SaveArg<0>(&packet3_), Return(true)));
444 } 444 }
445 445
446 // Send enough data to create 2 packets: one full and one partial. 446 // Send enough data to create 2 packets: one full and one partial.
447 size_t data_len = 1 * kMaxPacketSize + 100; 447 size_t data_len = 1 * kMaxPacketSize + 100;
448 QuicConsumedData consumed = 448 QuicConsumedData consumed =
449 generator_.ConsumeData(3, CreateData(data_len), 0, true); 449 generator_.ConsumeData(3, CreateData(data_len), 0, true, NULL);
450 EXPECT_EQ(data_len, consumed.bytes_consumed); 450 EXPECT_EQ(data_len, consumed.bytes_consumed);
451 EXPECT_TRUE(consumed.fin_consumed); 451 EXPECT_TRUE(consumed.fin_consumed);
452 EXPECT_FALSE(generator_.HasQueuedFrames()); 452 EXPECT_FALSE(generator_.HasQueuedFrames());
453 453
454 CheckPacketHasSingleStreamFrame(packet_); 454 CheckPacketHasSingleStreamFrame(packet_);
455 CheckPacketHasSingleStreamFrame(packet2_); 455 CheckPacketHasSingleStreamFrame(packet2_);
456 CheckPacketIsFec(packet3_, 1); 456 CheckPacketIsFec(packet3_, 1);
457 } 457 }
458 458
459 TEST_F(QuicPacketGeneratorTest, ConsumeData_FramesPreviouslyQueued) { 459 TEST_F(QuicPacketGeneratorTest, ConsumeData_FramesPreviouslyQueued) {
(...skipping 13 matching lines...) Expand all
473 { 473 {
474 InSequence dummy; 474 InSequence dummy;
475 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 475 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
476 DoAll(SaveArg<0>(&packet_), Return(true))); 476 DoAll(SaveArg<0>(&packet_), Return(true)));
477 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 477 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
478 DoAll(SaveArg<0>(&packet2_), Return(true))); 478 DoAll(SaveArg<0>(&packet2_), Return(true)));
479 } 479 }
480 generator_.StartBatchOperations(); 480 generator_.StartBatchOperations();
481 // Queue enough data to prevent a stream frame with a non-zero offset from 481 // Queue enough data to prevent a stream frame with a non-zero offset from
482 // fitting. 482 // fitting.
483 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 0, false); 483 QuicConsumedData consumed = generator_.ConsumeData(1, "foo", 0, false, NULL);
484 EXPECT_EQ(3u, consumed.bytes_consumed); 484 EXPECT_EQ(3u, consumed.bytes_consumed);
485 EXPECT_FALSE(consumed.fin_consumed); 485 EXPECT_FALSE(consumed.fin_consumed);
486 EXPECT_TRUE(generator_.HasQueuedFrames()); 486 EXPECT_TRUE(generator_.HasQueuedFrames());
487 487
488 // This frame will not fit with the existing frame, causing the queued frame 488 // This frame will not fit with the existing frame, causing the queued frame
489 // to be serialized, and it will not fit with another frame like it, so it is 489 // to be serialized, and it will not fit with another frame like it, so it is
490 // serialized by itself. 490 // serialized by itself.
491 consumed = generator_.ConsumeData(1, "bar", 3, true); 491 consumed = generator_.ConsumeData(1, "bar", 3, true, NULL);
492 EXPECT_EQ(3u, consumed.bytes_consumed); 492 EXPECT_EQ(3u, consumed.bytes_consumed);
493 EXPECT_TRUE(consumed.fin_consumed); 493 EXPECT_TRUE(consumed.fin_consumed);
494 EXPECT_FALSE(generator_.HasQueuedFrames()); 494 EXPECT_FALSE(generator_.HasQueuedFrames());
495 495
496 PacketContents contents; 496 PacketContents contents;
497 contents.num_stream_frames = 1; 497 contents.num_stream_frames = 1;
498 CheckPacketContains(contents, packet_); 498 CheckPacketContains(contents, packet_);
499 CheckPacketContains(contents, packet2_); 499 CheckPacketContains(contents, packet2_);
500 } 500 }
501 501
502 TEST_F(QuicPacketGeneratorTest, NotWritableThenBatchOperations) { 502 TEST_F(QuicPacketGeneratorTest, NotWritableThenBatchOperations) {
503 delegate_.SetCanNotWrite(); 503 delegate_.SetCanNotWrite();
504 504
505 generator_.SetShouldSendAck(true); 505 generator_.SetShouldSendAck(true);
506 generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame())); 506 generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame()));
507 EXPECT_TRUE(generator_.HasQueuedFrames()); 507 EXPECT_TRUE(generator_.HasQueuedFrames());
508 508
509 delegate_.SetCanWriteAnything(); 509 delegate_.SetCanWriteAnything();
510 510
511 generator_.StartBatchOperations(); 511 generator_.StartBatchOperations();
512 512
513 // When the first write operation is invoked, the ack and feedback 513 // When the first write operation is invoked, the ack and feedback
514 // frames will be returned. 514 // frames will be returned.
515 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame())); 515 EXPECT_CALL(delegate_, CreateAckFrame()).WillOnce(Return(CreateAckFrame()));
516 EXPECT_CALL(delegate_, CreateFeedbackFrame()).WillOnce( 516 EXPECT_CALL(delegate_, CreateFeedbackFrame()).WillOnce(
517 Return(CreateFeedbackFrame())); 517 Return(CreateFeedbackFrame()));
518 518
519 // Send some data and a control frame 519 // Send some data and a control frame
520 generator_.ConsumeData(3, "quux", 7, false); 520 generator_.ConsumeData(3, "quux", 7, false, NULL);
521 generator_.AddControlFrame(QuicFrame(CreateGoAwayFrame())); 521 generator_.AddControlFrame(QuicFrame(CreateGoAwayFrame()));
522 522
523 // All five frames will be flushed out in a single packet. 523 // All five frames will be flushed out in a single packet.
524 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 524 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
525 DoAll(SaveArg<0>(&packet_), Return(true))); 525 DoAll(SaveArg<0>(&packet_), Return(true)));
526 generator_.FinishBatchOperations(); 526 generator_.FinishBatchOperations();
527 EXPECT_FALSE(generator_.HasQueuedFrames()); 527 EXPECT_FALSE(generator_.HasQueuedFrames());
528 528
529 PacketContents contents; 529 PacketContents contents;
530 contents.num_ack_frames = 1; 530 contents.num_ack_frames = 1;
(...skipping 26 matching lines...) Expand all
557 // All five frames will be flushed out in a single packet 557 // All five frames will be flushed out in a single packet
558 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 558 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
559 DoAll(SaveArg<0>(&packet_), Return(true))); 559 DoAll(SaveArg<0>(&packet_), Return(true)));
560 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce( 560 EXPECT_CALL(delegate_, OnSerializedPacket(_)).WillOnce(
561 DoAll(SaveArg<0>(&packet2_), Return(true))); 561 DoAll(SaveArg<0>(&packet2_), Return(true)));
562 } 562 }
563 563
564 // Send enough data to exceed one packet 564 // Send enough data to exceed one packet
565 size_t data_len = kMaxPacketSize + 100; 565 size_t data_len = kMaxPacketSize + 100;
566 QuicConsumedData consumed = 566 QuicConsumedData consumed =
567 generator_.ConsumeData(3, CreateData(data_len), 0, true); 567 generator_.ConsumeData(3, CreateData(data_len), 0, true, NULL);
568 EXPECT_EQ(data_len, consumed.bytes_consumed); 568 EXPECT_EQ(data_len, consumed.bytes_consumed);
569 EXPECT_TRUE(consumed.fin_consumed); 569 EXPECT_TRUE(consumed.fin_consumed);
570 generator_.AddControlFrame(QuicFrame(CreateGoAwayFrame())); 570 generator_.AddControlFrame(QuicFrame(CreateGoAwayFrame()));
571 571
572 generator_.FinishBatchOperations(); 572 generator_.FinishBatchOperations();
573 EXPECT_FALSE(generator_.HasQueuedFrames()); 573 EXPECT_FALSE(generator_.HasQueuedFrames());
574 574
575 // The first packet should have the queued data and part of the stream data. 575 // The first packet should have the queued data and part of the stream data.
576 PacketContents contents; 576 PacketContents contents;
577 contents.num_ack_frames = 1; 577 contents.num_ack_frames = 1;
578 contents.num_feedback_frames = 1; 578 contents.num_feedback_frames = 1;
579 contents.num_rst_stream_frames = 1; 579 contents.num_rst_stream_frames = 1;
580 contents.num_stream_frames = 1; 580 contents.num_stream_frames = 1;
581 CheckPacketContains(contents, packet_); 581 CheckPacketContains(contents, packet_);
582 582
583 // The second should have the remainder of the stream data. 583 // The second should have the remainder of the stream data.
584 PacketContents contents2; 584 PacketContents contents2;
585 contents2.num_goaway_frames = 1; 585 contents2.num_goaway_frames = 1;
586 contents2.num_stream_frames = 1; 586 contents2.num_stream_frames = 1;
587 CheckPacketContains(contents2, packet2_); 587 CheckPacketContains(contents2, packet2_);
588 } 588 }
589 589
590 } // namespace test 590 } // namespace test
591 } // namespace net 591 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_packet_generator.cc ('k') | net/quic/quic_sent_packet_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698