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

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

Issue 1495243002: Remove EncryptionLevel from QUIC's RetransmittableFrames and add it to TransmissionInfo. No functi… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@108735153
Patch Set: Created 5 years 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
« no previous file with comments | « net/quic/quic_packet_creator.cc ('k') | net/quic/quic_packet_generator.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_creator.h" 5 #include "net/quic/quic_packet_creator.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "net/quic/crypto/null_encrypter.h" 10 #include "net/quic/crypto/null_encrypter.h"
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) { 532 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) {
533 // If the original packet number length, the current packet number 533 // If the original packet number length, the current packet number
534 // length, and the configured send packet number length are different, the 534 // length, and the configured send packet number length are different, the
535 // retransmit must sent with the original length and the others do not change. 535 // retransmit must sent with the original length and the others do not change.
536 QuicPacketCreatorPeer::SetNextPacketNumberLength(&creator_, 536 QuicPacketCreatorPeer::SetNextPacketNumberLength(&creator_,
537 PACKET_4BYTE_PACKET_NUMBER); 537 PACKET_4BYTE_PACKET_NUMBER);
538 QuicPacketCreatorPeer::SetPacketNumberLength(&creator_, 538 QuicPacketCreatorPeer::SetPacketNumberLength(&creator_,
539 PACKET_2BYTE_PACKET_NUMBER); 539 PACKET_2BYTE_PACKET_NUMBER);
540 QuicStreamFrame* stream_frame = 540 QuicStreamFrame* stream_frame =
541 new QuicStreamFrame(kCryptoStreamId, /*fin=*/false, 0u, StringPiece()); 541 new QuicStreamFrame(kCryptoStreamId, /*fin=*/false, 0u, StringPiece());
542 RetransmittableFrames frames(ENCRYPTION_NONE); 542 RetransmittableFrames frames;
543 frames.AddFrame(QuicFrame(stream_frame)); 543 frames.AddFrame(QuicFrame(stream_frame));
544 char buffer[kMaxPacketSize]; 544 char buffer[kMaxPacketSize];
545 SerializedPacket serialized = creator_.ReserializeAllFrames( 545 SerializedPacket serialized = creator_.ReserializeAllFrames(
546 frames, PACKET_1BYTE_PACKET_NUMBER, buffer, kMaxPacketSize); 546 frames, ENCRYPTION_NONE, PACKET_1BYTE_PACKET_NUMBER, buffer,
547 kMaxPacketSize);
547 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, 548 EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
548 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); 549 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
549 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER, 550 EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER,
550 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); 551 QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
551 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, serialized.packet_number_length); 552 EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, serialized.packet_number_length);
552 553
553 { 554 {
554 InSequence s; 555 InSequence s;
555 EXPECT_CALL(framer_visitor_, OnPacket()); 556 EXPECT_CALL(framer_visitor_, OnPacket());
556 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); 557 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
557 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); 558 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_));
558 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); 559 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_));
559 EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); 560 EXPECT_CALL(framer_visitor_, OnPacketHeader(_));
560 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); 561 EXPECT_CALL(framer_visitor_, OnStreamFrame(_));
561 EXPECT_CALL(framer_visitor_, OnPacketComplete()); 562 EXPECT_CALL(framer_visitor_, OnPacketComplete());
562 } 563 }
563 ProcessPacket(serialized.packet); 564 ProcessPacket(serialized.packet);
564 delete serialized.packet; 565 delete serialized.packet;
565 } 566 }
566 567
567 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithPadding) { 568 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithPadding) {
568 QuicFrame frame; 569 QuicFrame frame;
569 QuicIOVector io_vector(MakeIOVector("fake handshake message data")); 570 QuicIOVector io_vector(MakeIOVector("fake handshake message data"));
570 UniqueStreamBuffer stream_buffer; 571 UniqueStreamBuffer stream_buffer;
571 QuicPacketCreatorPeer::CreateStreamFrame(&creator_, kCryptoStreamId, 572 QuicPacketCreatorPeer::CreateStreamFrame(&creator_, kCryptoStreamId,
572 io_vector, 0u, 0u, false, &frame, 573 io_vector, 0u, 0u, false, &frame);
573 &stream_buffer); 574 RetransmittableFrames frames;
574 RetransmittableFrames frames(ENCRYPTION_NONE);
575 frames.AddFrame(frame); 575 frames.AddFrame(frame);
576 frames.set_needs_padding(true); 576 frames.set_needs_padding(true);
577 char buffer[kMaxPacketSize]; 577 char buffer[kMaxPacketSize];
578 SerializedPacket serialized = creator_.ReserializeAllFrames( 578 SerializedPacket serialized = creator_.ReserializeAllFrames(
579 frames, QuicPacketCreatorPeer::NextPacketNumberLength(&creator_), buffer, 579 frames, ENCRYPTION_NONE,
580 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_), buffer,
580 kMaxPacketSize); 581 kMaxPacketSize);
581 EXPECT_EQ(kDefaultMaxPacketSize, serialized.packet->length()); 582 EXPECT_EQ(kDefaultMaxPacketSize, serialized.packet->length());
582 delete serialized.packet; 583 delete serialized.packet;
583 } 584 }
584 585
585 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPacketAndPadding) { 586 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPacketAndPadding) {
586 const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP) 587 const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP)
587 + GetEncryptionOverhead() + GetStreamFrameOverhead(NOT_IN_FEC_GROUP); 588 + GetEncryptionOverhead() + GetStreamFrameOverhead(NOT_IN_FEC_GROUP);
588 size_t capacity = kDefaultMaxPacketSize - overhead; 589 size_t capacity = kDefaultMaxPacketSize - overhead;
589 for (int delta = -5; delta <= 0; ++delta) { 590 for (int delta = -5; delta <= 0; ++delta) {
590 string data(capacity + delta, 'A'); 591 string data(capacity + delta, 'A');
591 size_t bytes_free = 0 - delta; 592 size_t bytes_free = 0 - delta;
592 593
593 QuicFrame frame; 594 QuicFrame frame;
594 QuicIOVector io_vector(MakeIOVector(data)); 595 QuicIOVector io_vector(MakeIOVector(data));
595 UniqueStreamBuffer stream_buffer; 596 UniqueStreamBuffer stream_buffer;
596 QuicPacketCreatorPeer::CreateStreamFrame(&creator_, kCryptoStreamId, 597 QuicPacketCreatorPeer::CreateStreamFrame(
597 io_vector, 0, kOffset, false, 598 &creator_, kCryptoStreamId, io_vector, 0, kOffset, false, &frame);
598 &frame, &stream_buffer); 599 RetransmittableFrames frames;
599 RetransmittableFrames frames(ENCRYPTION_NONE);
600 frames.AddFrame(frame); 600 frames.AddFrame(frame);
601 frames.set_needs_padding(true); 601 frames.set_needs_padding(true);
602 char buffer[kMaxPacketSize]; 602 char buffer[kMaxPacketSize];
603 SerializedPacket serialized = creator_.ReserializeAllFrames( 603 SerializedPacket serialized = creator_.ReserializeAllFrames(
604 frames, QuicPacketCreatorPeer::NextPacketNumberLength(&creator_), 604 frames, ENCRYPTION_NONE,
605 buffer, kMaxPacketSize); 605 QuicPacketCreatorPeer::NextPacketNumberLength(&creator_), buffer,
606 kMaxPacketSize);
606 607
607 // If there is not enough space in the packet to fit a padding frame 608 // If there is not enough space in the packet to fit a padding frame
608 // (1 byte) and to expand the stream frame (another 2 bytes) the packet 609 // (1 byte) and to expand the stream frame (another 2 bytes) the packet
609 // will not be padded. 610 // will not be padded.
610 if (bytes_free < 3) { 611 if (bytes_free < 3) {
611 EXPECT_EQ(kDefaultMaxPacketSize - bytes_free, 612 EXPECT_EQ(kDefaultMaxPacketSize - bytes_free,
612 serialized.packet->length()); 613 serialized.packet->length());
613 } else { 614 } else {
614 EXPECT_EQ(kDefaultMaxPacketSize, serialized.packet->length()); 615 EXPECT_EQ(kDefaultMaxPacketSize, serialized.packet->length());
615 } 616 }
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
788 GetStreamFrameOverhead(NOT_IN_FEC_GROUP); 789 GetStreamFrameOverhead(NOT_IN_FEC_GROUP);
789 size_t capacity = kDefaultMaxPacketSize - overhead; 790 size_t capacity = kDefaultMaxPacketSize - overhead;
790 // Now, test various sizes around this size. 791 // Now, test various sizes around this size.
791 for (int delta = -5; delta <= 5; ++delta) { 792 for (int delta = -5; delta <= 5; ++delta) {
792 string data(capacity + delta, 'A'); 793 string data(capacity + delta, 'A');
793 size_t bytes_free = delta > 0 ? 0 : 0 - delta; 794 size_t bytes_free = delta > 0 ? 0 : 0 - delta;
794 QuicFrame frame; 795 QuicFrame frame;
795 QuicIOVector io_vector(MakeIOVector(data)); 796 QuicIOVector io_vector(MakeIOVector(data));
796 UniqueStreamBuffer stream_buffer; 797 UniqueStreamBuffer stream_buffer;
797 size_t bytes_consumed = QuicPacketCreatorPeer::CreateStreamFrame( 798 size_t bytes_consumed = QuicPacketCreatorPeer::CreateStreamFrame(
798 &creator_, kClientDataStreamId1, io_vector, 0u, kOffset, false, &frame, 799 &creator_, kClientDataStreamId1, io_vector, 0u, kOffset, false, &frame);
799 &stream_buffer);
800 EXPECT_EQ(capacity - bytes_free, bytes_consumed); 800 EXPECT_EQ(capacity - bytes_free, bytes_consumed);
801 801
802 ASSERT_TRUE(creator_.AddSavedFrame(frame)); 802 ASSERT_TRUE(creator_.AddSavedFrame(frame));
803 // BytesFree() returns bytes available for the next frame, which will 803 // BytesFree() returns bytes available for the next frame, which will
804 // be two bytes smaller since the stream frame would need to be grown. 804 // be two bytes smaller since the stream frame would need to be grown.
805 EXPECT_EQ(2u, creator_.ExpansionOnNewFrame()); 805 EXPECT_EQ(2u, creator_.ExpansionOnNewFrame());
806 size_t expected_bytes_free = bytes_free < 3 ? 0 : bytes_free - 2; 806 size_t expected_bytes_free = bytes_free < 3 ? 0 : bytes_free - 2;
807 EXPECT_EQ(expected_bytes_free, creator_.BytesFree()) << "delta: " << delta; 807 EXPECT_EQ(expected_bytes_free, creator_.BytesFree()) << "delta: " << delta;
808 EXPECT_CALL(delegate_, OnSerializedPacket(_)) 808 EXPECT_CALL(delegate_, OnSerializedPacket(_))
809 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); 809 .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
(...skipping 12 matching lines...) Expand all
822 GetStreamFrameOverhead(IN_FEC_GROUP); 822 GetStreamFrameOverhead(IN_FEC_GROUP);
823 size_t capacity = kDefaultMaxPacketSize - overhead; 823 size_t capacity = kDefaultMaxPacketSize - overhead;
824 // Now, test various sizes around this size. 824 // Now, test various sizes around this size.
825 for (int delta = -5; delta <= 5; ++delta) { 825 for (int delta = -5; delta <= 5; ++delta) {
826 string data(capacity + delta, 'A'); 826 string data(capacity + delta, 'A');
827 size_t bytes_free = delta > 0 ? 0 : 0 - delta; 827 size_t bytes_free = delta > 0 ? 0 : 0 - delta;
828 QuicFrame frame; 828 QuicFrame frame;
829 QuicIOVector io_vector(MakeIOVector(data)); 829 QuicIOVector io_vector(MakeIOVector(data));
830 UniqueStreamBuffer stream_buffer; 830 UniqueStreamBuffer stream_buffer;
831 size_t bytes_consumed = QuicPacketCreatorPeer::CreateStreamFrame( 831 size_t bytes_consumed = QuicPacketCreatorPeer::CreateStreamFrame(
832 &creator_, kClientDataStreamId1, io_vector, 0u, kOffset, false, &frame, 832 &creator_, kClientDataStreamId1, io_vector, 0u, kOffset, false, &frame);
833 &stream_buffer);
834 EXPECT_EQ(capacity - bytes_free, bytes_consumed); 833 EXPECT_EQ(capacity - bytes_free, bytes_consumed);
835 834
836 ASSERT_TRUE(creator_.AddSavedFrame(frame)); 835 ASSERT_TRUE(creator_.AddSavedFrame(frame));
837 // BytesFree() returns bytes available for the next frame. Since stream 836 // BytesFree() returns bytes available for the next frame. Since stream
838 // frame does not grow for FEC protected packets, this should be the same 837 // frame does not grow for FEC protected packets, this should be the same
839 // as bytes_free (bound by 0). 838 // as bytes_free (bound by 0).
840 EXPECT_EQ(0u, creator_.ExpansionOnNewFrame()); 839 EXPECT_EQ(0u, creator_.ExpansionOnNewFrame());
841 size_t expected_bytes_free = bytes_free > 0 ? bytes_free : 0; 840 size_t expected_bytes_free = bytes_free > 0 ? bytes_free : 0;
842 EXPECT_EQ(expected_bytes_free, creator_.BytesFree()) << "delta: " << delta; 841 EXPECT_EQ(expected_bytes_free, creator_.BytesFree()) << "delta: " << delta;
843 EXPECT_CALL(delegate_, OnSerializedPacket(_)) 842 EXPECT_CALL(delegate_, OnSerializedPacket(_))
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
1295 creator_.set_fec_send_policy(FEC_ALARM_TRIGGER); 1294 creator_.set_fec_send_policy(FEC_ALARM_TRIGGER);
1296 creator_.set_should_fec_protect(true); 1295 creator_.set_should_fec_protect(true);
1297 creator_.MaybeSendFecPacketAndCloseGroup(/*force_send_fec=*/true, 1296 creator_.MaybeSendFecPacketAndCloseGroup(/*force_send_fec=*/true,
1298 /*is_fec_timeout=*/false); 1297 /*is_fec_timeout=*/false);
1299 EXPECT_FALSE(creator_.IsFecGroupOpen()); 1298 EXPECT_FALSE(creator_.IsFecGroupOpen());
1300 } 1299 }
1301 1300
1302 } // namespace 1301 } // namespace
1303 } // namespace test 1302 } // namespace test
1304 } // namespace net 1303 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_packet_creator.cc ('k') | net/quic/quic_packet_generator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698