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

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

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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
« 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 "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "net/quic/crypto/null_encrypter.h" 8 #include "net/quic/crypto/null_encrypter.h"
9 #include "net/quic/crypto/quic_decrypter.h" 9 #include "net/quic/crypto/quic_decrypter.h"
10 #include "net/quic/crypto/quic_encrypter.h" 10 #include "net/quic/crypto/quic_encrypter.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 data_("foo"), 82 data_("foo"),
83 creator_(connection_id_, &client_framer_, &mock_random_) { 83 creator_(connection_id_, &client_framer_, &mock_random_) {
84 creator_.set_connection_id_length(GetParam().connection_id_length); 84 creator_.set_connection_id_length(GetParam().connection_id_length);
85 client_framer_.set_visitor(&framer_visitor_); 85 client_framer_.set_visitor(&framer_visitor_);
86 client_framer_.set_received_entropy_calculator(&entropy_calculator_); 86 client_framer_.set_received_entropy_calculator(&entropy_calculator_);
87 server_framer_.set_visitor(&framer_visitor_); 87 server_framer_.set_visitor(&framer_visitor_);
88 } 88 }
89 89
90 ~QuicPacketCreatorTest() override {} 90 ~QuicPacketCreatorTest() override {}
91 91
92 void ProcessPacket(QuicPacket* packet) { 92 void ProcessPacket(QuicEncryptedPacket* encrypted) {
93 scoped_ptr<QuicEncryptedPacket> encrypted(
94 server_framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number_,
95 *packet));
96 server_framer_.ProcessPacket(*encrypted); 93 server_framer_.ProcessPacket(*encrypted);
97 } 94 }
98 95
99 void CheckStreamFrame(const QuicFrame& frame, 96 void CheckStreamFrame(const QuicFrame& frame,
100 QuicStreamId stream_id, 97 QuicStreamId stream_id,
101 const string& data, 98 const string& data,
102 QuicStreamOffset offset, 99 QuicStreamOffset offset,
103 bool fin) { 100 bool fin) {
104 EXPECT_EQ(STREAM_FRAME, frame.type); 101 EXPECT_EQ(STREAM_FRAME, frame.type);
105 ASSERT_TRUE(frame.stream_frame); 102 ASSERT_TRUE(frame.stream_frame);
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 delete serialized.packet; 431 delete serialized.packet;
435 } 432 }
436 433
437 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) { 434 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) {
438 // If the original packet sequence number length, the current sequence number 435 // If the original packet sequence number length, the current sequence number
439 // length, and the configured send sequence number length are different, the 436 // length, and the configured send sequence number length are different, the
440 // retransmit must sent with the original length and the others do not change. 437 // retransmit must sent with the original length and the others do not change.
441 creator_.set_next_sequence_number_length(PACKET_4BYTE_SEQUENCE_NUMBER); 438 creator_.set_next_sequence_number_length(PACKET_4BYTE_SEQUENCE_NUMBER);
442 QuicPacketCreatorPeer::SetSequenceNumberLength(&creator_, 439 QuicPacketCreatorPeer::SetSequenceNumberLength(&creator_,
443 PACKET_2BYTE_SEQUENCE_NUMBER); 440 PACKET_2BYTE_SEQUENCE_NUMBER);
444 frames_.push_back(QuicFrame(new QuicStreamFrame(0u, false, 0u, IOVector()))); 441 QuicStreamFrame* stream_frame =
442 new QuicStreamFrame(kCryptoStreamId, /*fin=*/false, 0u, IOVector());
443 RetransmittableFrames frames;
444 frames.set_encryption_level(ENCRYPTION_NONE);
445 frames.AddStreamFrame(stream_frame);
445 SerializedPacket serialized = 446 SerializedPacket serialized =
446 creator_.ReserializeAllFrames(frames_, PACKET_1BYTE_SEQUENCE_NUMBER); 447 creator_.ReserializeAllFrames(frames, PACKET_1BYTE_SEQUENCE_NUMBER);
447 EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER, 448 EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER,
448 creator_.next_sequence_number_length()); 449 creator_.next_sequence_number_length());
449 EXPECT_EQ(PACKET_2BYTE_SEQUENCE_NUMBER, 450 EXPECT_EQ(PACKET_2BYTE_SEQUENCE_NUMBER,
450 QuicPacketCreatorPeer::GetSequenceNumberLength(&creator_)); 451 QuicPacketCreatorPeer::GetSequenceNumberLength(&creator_));
451 EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER, serialized.sequence_number_length); 452 EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER, serialized.sequence_number_length);
452 delete frames_[0].stream_frame;
453 453
454 { 454 {
455 InSequence s; 455 InSequence s;
456 EXPECT_CALL(framer_visitor_, OnPacket()); 456 EXPECT_CALL(framer_visitor_, OnPacket());
457 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_)); 457 EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
458 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_)); 458 EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_));
459 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_)); 459 EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_));
460 EXPECT_CALL(framer_visitor_, OnPacketHeader(_)); 460 EXPECT_CALL(framer_visitor_, OnPacketHeader(_));
461 EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); 461 EXPECT_CALL(framer_visitor_, OnStreamFrame(_));
462 EXPECT_CALL(framer_visitor_, OnPacketComplete()); 462 EXPECT_CALL(framer_visitor_, OnPacketComplete());
463 } 463 }
464 ProcessPacket(serialized.packet); 464 ProcessPacket(serialized.packet);
465 delete serialized.packet; 465 delete serialized.packet;
466 } 466 }
467 467
468 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithPadding) { 468 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithPadding) {
469 scoped_ptr<QuicStreamFrame> stream_frame( 469 QuicStreamFrame* stream_frame =
470 new QuicStreamFrame(kCryptoStreamId, /*fin=*/ false, /*offset=*/ 0, 470 new QuicStreamFrame(kCryptoStreamId, /*fin=*/false, /*offset=*/0,
471 MakeIOVector("fake handshake message data"))); 471 MakeIOVector("fake handshake message data"));
472 frames_.push_back(QuicFrame(stream_frame.get())); 472 RetransmittableFrames frames;
473 SerializedPacket serialized = 473 frames.set_encryption_level(ENCRYPTION_NONE);
474 creator_.ReserializeAllFrames(frames_, 474 frames.AddStreamFrame(stream_frame);
475 creator_.next_sequence_number_length()); 475 SerializedPacket serialized = creator_.ReserializeAllFrames(
476 476 frames, creator_.next_sequence_number_length());
477 EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize), 477 EXPECT_EQ(kDefaultMaxPacketSize, serialized.packet->length());
478 serialized.packet->length());
479 delete serialized.packet; 478 delete serialized.packet;
480 } 479 }
481 480
482 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPacketAndPadding) { 481 TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPacketAndPadding) {
483 const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP) 482 const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP)
484 + GetEncryptionOverhead() + GetStreamFrameOverhead(NOT_IN_FEC_GROUP); 483 + GetEncryptionOverhead() + GetStreamFrameOverhead(NOT_IN_FEC_GROUP);
485 size_t capacity = kDefaultMaxPacketSize - overhead; 484 size_t capacity = kDefaultMaxPacketSize - overhead;
486 for (int delta = -5; delta <= 0; ++delta) { 485 for (int delta = -5; delta <= 0; ++delta) {
487 string data(capacity + delta, 'A'); 486 string data(capacity + delta, 'A');
488 size_t bytes_free = 0 - delta; 487 size_t bytes_free = 0 - delta;
489 488
490 scoped_ptr<QuicStreamFrame> stream_frame( 489 QuicStreamFrame* stream_frame = new QuicStreamFrame(
491 new QuicStreamFrame(kCryptoStreamId, /*fin=*/ false, kOffset, 490 kCryptoStreamId, /*fin=*/false, kOffset, MakeIOVector(data));
492 MakeIOVector(data))); 491 RetransmittableFrames frames;
493 frames_.push_back(QuicFrame(stream_frame.get())); 492 frames.set_encryption_level(ENCRYPTION_NONE);
494 SerializedPacket serialized = 493 frames.AddStreamFrame(stream_frame);
495 creator_.ReserializeAllFrames(frames_, 494 SerializedPacket serialized = creator_.ReserializeAllFrames(
496 creator_.next_sequence_number_length()); 495 frames, creator_.next_sequence_number_length());
497 496
498 // If there is not enough space in the packet to fit a padding frame 497 // If there is not enough space in the packet to fit a padding frame
499 // (1 byte) and to expand the stream frame (another 2 bytes) the packet 498 // (1 byte) and to expand the stream frame (another 2 bytes) the packet
500 // will not be padded. 499 // will not be padded.
501 if (bytes_free < 3) { 500 if (bytes_free < 3) {
502 EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize) 501 EXPECT_EQ(kDefaultMaxPacketSize - bytes_free,
503 - bytes_free, serialized.packet->length()); 502 serialized.packet->length());
504 } else { 503 } else {
505 EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize), 504 EXPECT_EQ(kDefaultMaxPacketSize, serialized.packet->length());
506 serialized.packet->length());
507 } 505 }
508 506
509 delete serialized.packet; 507 delete serialized.packet;
510 frames_.clear(); 508 frames_.clear();
511 } 509 }
512 } 510 }
513 511
514 TEST_P(QuicPacketCreatorTest, SerializeConnectionClose) { 512 TEST_P(QuicPacketCreatorTest, SerializeConnectionClose) {
515 QuicConnectionCloseFrame frame; 513 QuicConnectionCloseFrame frame;
516 frame.error_code = QUIC_NO_ERROR; 514 frame.error_code = QUIC_NO_ERROR;
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 size_t bytes_consumed = creator_.CreateStreamFrame( 731 size_t bytes_consumed = creator_.CreateStreamFrame(
734 kCryptoStreamId, MakeIOVector(data), kOffset, false, &frame); 732 kCryptoStreamId, MakeIOVector(data), kOffset, false, &frame);
735 EXPECT_LT(0u, bytes_consumed); 733 EXPECT_LT(0u, bytes_consumed);
736 ASSERT_TRUE(creator_.AddSavedFrame(frame)); 734 ASSERT_TRUE(creator_.AddSavedFrame(frame));
737 SerializedPacket serialized_packet = creator_.SerializePacket(); 735 SerializedPacket serialized_packet = creator_.SerializePacket();
738 ASSERT_TRUE(serialized_packet.packet); 736 ASSERT_TRUE(serialized_packet.packet);
739 // If there is not enough space in the packet to fit a padding frame 737 // If there is not enough space in the packet to fit a padding frame
740 // (1 byte) and to expand the stream frame (another 2 bytes) the packet 738 // (1 byte) and to expand the stream frame (another 2 bytes) the packet
741 // will not be padded. 739 // will not be padded.
742 if (bytes_free < 3) { 740 if (bytes_free < 3) {
743 EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize) 741 EXPECT_EQ(kDefaultMaxPacketSize - bytes_free,
744 - bytes_free, serialized_packet.packet->length()); 742 serialized_packet.packet->length());
745 } else { 743 } else {
746 EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize), 744 EXPECT_EQ(kDefaultMaxPacketSize, serialized_packet.packet->length());
747 serialized_packet.packet->length());
748 } 745 }
749 delete serialized_packet.packet; 746 delete serialized_packet.packet;
750 delete serialized_packet.retransmittable_frames; 747 delete serialized_packet.retransmittable_frames;
751 } 748 }
752 } 749 }
753 750
754 TEST_P(QuicPacketCreatorTest, NonCryptoStreamFramePacketNonPadding) { 751 TEST_P(QuicPacketCreatorTest, NonCryptoStreamFramePacketNonPadding) {
755 // Compute the total overhead for a single frame in packet. 752 // Compute the total overhead for a single frame in packet.
756 const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP) 753 const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP)
757 + GetEncryptionOverhead() + GetStreamFrameOverhead(NOT_IN_FEC_GROUP); 754 + GetEncryptionOverhead() + GetStreamFrameOverhead(NOT_IN_FEC_GROUP);
758 ASSERT_GT(kDefaultMaxPacketSize, overhead); 755 ASSERT_GT(kDefaultMaxPacketSize, overhead);
759 size_t capacity = kDefaultMaxPacketSize - overhead; 756 size_t capacity = kDefaultMaxPacketSize - overhead;
760 // Now, test various sizes around this size. 757 // Now, test various sizes around this size.
761 for (int delta = -5; delta <= 5; ++delta) { 758 for (int delta = -5; delta <= 5; ++delta) {
762 string data(capacity + delta, 'A'); 759 string data(capacity + delta, 'A');
763 size_t bytes_free = delta > 0 ? 0 : 0 - delta; 760 size_t bytes_free = delta > 0 ? 0 : 0 - delta;
764 761
765 QuicFrame frame; 762 QuicFrame frame;
766 size_t bytes_consumed = creator_.CreateStreamFrame( 763 size_t bytes_consumed = creator_.CreateStreamFrame(
767 kClientDataStreamId1, MakeIOVector(data), kOffset, false, &frame); 764 kClientDataStreamId1, MakeIOVector(data), kOffset, false, &frame);
768 EXPECT_LT(0u, bytes_consumed); 765 EXPECT_LT(0u, bytes_consumed);
769 ASSERT_TRUE(creator_.AddSavedFrame(frame)); 766 ASSERT_TRUE(creator_.AddSavedFrame(frame));
770 SerializedPacket serialized_packet = creator_.SerializePacket(); 767 SerializedPacket serialized_packet = creator_.SerializePacket();
771 ASSERT_TRUE(serialized_packet.packet); 768 ASSERT_TRUE(serialized_packet.packet);
772 if (bytes_free > 0) { 769 if (bytes_free > 0) {
773 EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize) 770 EXPECT_EQ(kDefaultMaxPacketSize - bytes_free,
774 - bytes_free, serialized_packet.packet->length()); 771 serialized_packet.packet->length());
775 } else { 772 } else {
776 EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize), 773 EXPECT_EQ(kDefaultMaxPacketSize, serialized_packet.packet->length());
777 serialized_packet.packet->length());
778 } 774 }
779 delete serialized_packet.packet; 775 delete serialized_packet.packet;
780 delete serialized_packet.retransmittable_frames; 776 delete serialized_packet.retransmittable_frames;
781 } 777 }
782 } 778 }
783 779
784 TEST_P(QuicPacketCreatorTest, SerializeVersionNegotiationPacket) { 780 TEST_P(QuicPacketCreatorTest, SerializeVersionNegotiationPacket) {
785 QuicFramerPeer::SetIsServer(&client_framer_, true); 781 QuicFramerPeer::SetIsServer(&client_framer_, true);
786 QuicVersionVector versions; 782 QuicVersionVector versions;
787 versions.push_back(test::QuicVersionMax()); 783 versions.push_back(test::QuicVersionMax());
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 PACKET_1BYTE_SEQUENCE_NUMBER, 945 PACKET_1BYTE_SEQUENCE_NUMBER,
950 NOT_IN_FEC_GROUP), 946 NOT_IN_FEC_GROUP),
951 creator_.BytesFree()); 947 creator_.BytesFree());
952 } 948 }
953 949
954 TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithLargePacketSize) { 950 TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithLargePacketSize) {
955 if (!GetParam().version_serialization) { 951 if (!GetParam().version_serialization) {
956 creator_.StopSendingVersion(); 952 creator_.StopSendingVersion();
957 } 953 }
958 creator_.set_max_packet_length(kMaxPacketSize); 954 creator_.set_max_packet_length(kMaxPacketSize);
959 const size_t max_plaintext_size =
960 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length());
961 955
962 // Serialized length of ack frame with 2000 nack ranges should be limited by 956 // Serialized length of ack frame with 2000 nack ranges should be limited by
963 // the number of nack ranges that can be fit in an ack frame. 957 // the number of nack ranges that can be fit in an ack frame.
964 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(2000u, 0u); 958 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(2000u, 0u);
965 size_t frame_len = client_framer_.GetSerializedFrameLength( 959 size_t frame_len = client_framer_.GetSerializedFrameLength(
966 QuicFrame(&ack_frame), creator_.BytesFree(), true, true, 960 QuicFrame(&ack_frame), creator_.BytesFree(), true, true,
967 NOT_IN_FEC_GROUP, PACKET_1BYTE_SEQUENCE_NUMBER); 961 NOT_IN_FEC_GROUP, PACKET_1BYTE_SEQUENCE_NUMBER);
968 EXPECT_GT(creator_.BytesFree(), frame_len); 962 EXPECT_GT(creator_.BytesFree(), frame_len);
969 EXPECT_GT(max_plaintext_size, creator_.PacketSize()); 963 EXPECT_GT(creator_.max_packet_length(), creator_.PacketSize());
970 964
971 // Add ack frame to creator. 965 // Add ack frame to creator.
972 EXPECT_TRUE(creator_.AddSavedFrame(QuicFrame(&ack_frame))); 966 EXPECT_TRUE(creator_.AddSavedFrame(QuicFrame(&ack_frame)));
973 EXPECT_TRUE(creator_.HasPendingFrames()); 967 EXPECT_TRUE(creator_.HasPendingFrames());
974 EXPECT_GT(max_plaintext_size, creator_.PacketSize()); 968 EXPECT_GT(creator_.max_packet_length(), creator_.PacketSize());
975 EXPECT_LT(0u, creator_.BytesFree()); 969 EXPECT_LT(0u, creator_.BytesFree());
976 970
977 // Make sure that an additional stream frame can be added to the packet. 971 // Make sure that an additional stream frame can be added to the packet.
978 QuicFrame stream_frame; 972 QuicFrame stream_frame;
979 size_t consumed = creator_.CreateStreamFrame( 973 size_t consumed = creator_.CreateStreamFrame(
980 2u, MakeIOVector("test"), 0u, false, &stream_frame); 974 2u, MakeIOVector("test"), 0u, false, &stream_frame);
981 EXPECT_EQ(4u, consumed); 975 EXPECT_EQ(4u, consumed);
982 ASSERT_TRUE(stream_frame.stream_frame); 976 ASSERT_TRUE(stream_frame.stream_frame);
983 EXPECT_TRUE(creator_.AddSavedFrame(stream_frame)); 977 EXPECT_TRUE(creator_.AddSavedFrame(stream_frame));
984 EXPECT_TRUE(creator_.HasPendingFrames()); 978 EXPECT_TRUE(creator_.HasPendingFrames());
985 979
986 // Ensure the packet is successfully created, and the packet size estimate 980 // Ensure the packet is successfully created, and the packet size estimate
987 // matches the serialized packet length. 981 // matches the serialized packet length.
988 EXPECT_CALL(entropy_calculator_, 982 EXPECT_CALL(entropy_calculator_,
989 EntropyHash(_)).WillOnce(testing::Return(0)); 983 EntropyHash(_)).WillOnce(testing::Return(0));
990 size_t est_packet_size = creator_.PacketSize(); 984 size_t est_packet_size = creator_.PacketSize();
991 SerializedPacket serialized = creator_.SerializePacket(); 985 SerializedPacket serialized = creator_.SerializePacket();
992 ASSERT_TRUE(serialized.packet); 986 ASSERT_TRUE(serialized.packet);
993 EXPECT_EQ(est_packet_size, serialized.packet->length()); 987 EXPECT_EQ(est_packet_size,
988 client_framer_.GetMaxPlaintextSize(serialized.packet->length()));
994 delete serialized.retransmittable_frames; 989 delete serialized.retransmittable_frames;
995 delete serialized.packet; 990 delete serialized.packet;
996 } 991 }
997 992
998 TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithSmallPacketSize) { 993 TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithSmallPacketSize) {
999 if (!GetParam().version_serialization) { 994 if (!GetParam().version_serialization) {
1000 creator_.StopSendingVersion(); 995 creator_.StopSendingVersion();
1001 } 996 }
1002 creator_.set_max_packet_length(500u); 997 creator_.set_max_packet_length(500u);
1003 998
1004 const size_t max_plaintext_size = 999 const size_t max_plaintext_size =
1005 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()); 1000 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length());
1006 EXPECT_EQ(max_plaintext_size - creator_.PacketSize(), creator_.BytesFree()); 1001 EXPECT_EQ(max_plaintext_size - creator_.PacketSize(), creator_.BytesFree());
1007 1002
1008 // Serialized length of ack frame with 2000 nack ranges should be limited by 1003 // Serialized length of ack frame with 2000 nack ranges should be limited by
1009 // the packet size. 1004 // the packet size.
1010 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(2000u, 0u); 1005 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(2000u, 0u);
1011 size_t frame_len = client_framer_.GetSerializedFrameLength( 1006 size_t frame_len = client_framer_.GetSerializedFrameLength(
1012 QuicFrame(&ack_frame), creator_.BytesFree(), true, true, 1007 QuicFrame(&ack_frame), creator_.BytesFree(), true, true,
1013 NOT_IN_FEC_GROUP, PACKET_1BYTE_SEQUENCE_NUMBER); 1008 NOT_IN_FEC_GROUP, PACKET_1BYTE_SEQUENCE_NUMBER);
1014 EXPECT_EQ(creator_.BytesFree(), frame_len); 1009 EXPECT_EQ(creator_.BytesFree(), frame_len);
1015 1010
1016 // Add ack frame to creator. 1011 // Add ack frame to creator.
1017 EXPECT_TRUE(creator_.AddSavedFrame(QuicFrame(&ack_frame))); 1012 EXPECT_TRUE(creator_.AddSavedFrame(QuicFrame(&ack_frame)));
1018 EXPECT_TRUE(creator_.HasPendingFrames()); 1013 EXPECT_TRUE(creator_.HasPendingFrames());
1019 EXPECT_EQ(max_plaintext_size, creator_.PacketSize()); 1014 EXPECT_EQ(client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()),
1015 creator_.PacketSize());
1020 EXPECT_EQ(0u, creator_.BytesFree()); 1016 EXPECT_EQ(0u, creator_.BytesFree());
1021 1017
1022 // Ensure the packet is successfully created, and the packet size estimate 1018 // Ensure the packet is successfully created, and the packet size estimate
1023 // may not match the serialized packet length. 1019 // may not match the serialized packet length.
1024 EXPECT_CALL(entropy_calculator_, 1020 EXPECT_CALL(entropy_calculator_,
1025 EntropyHash(_)).WillOnce(Return(0)); 1021 EntropyHash(_)).WillOnce(Return(0));
1026 size_t est_packet_size = creator_.PacketSize(); 1022 size_t est_packet_size = creator_.PacketSize();
1027 SerializedPacket serialized = creator_.SerializePacket(); 1023 SerializedPacket serialized = creator_.SerializePacket();
1028 ASSERT_TRUE(serialized.packet); 1024 ASSERT_TRUE(serialized.packet);
1029 EXPECT_GE(est_packet_size, serialized.packet->length()); 1025 EXPECT_GE(est_packet_size,
1026 client_framer_.GetMaxPlaintextSize(serialized.packet->length()));
1030 delete serialized.packet; 1027 delete serialized.packet;
1031 } 1028 }
1032 1029
1033 1030
1034 TEST_P(QuicPacketCreatorTest, EntropyFlag) { 1031 TEST_P(QuicPacketCreatorTest, EntropyFlag) {
1035 frames_.push_back(QuicFrame(new QuicStreamFrame(0u, false, 0u, IOVector()))); 1032 frames_.push_back(QuicFrame(new QuicStreamFrame(0u, false, 0u, IOVector())));
1036 1033
1037 for (int i = 0; i < 2; ++i) { 1034 for (int i = 0; i < 2; ++i) {
1038 for (int j = 0; j < 64; ++j) { 1035 for (int j = 0; j < 64; ++j) {
1039 SerializedPacket serialized = creator_.SerializeAllFrames(frames_); 1036 SerializedPacket serialized = creator_.SerializeAllFrames(frames_);
(...skipping 10 matching lines...) Expand all
1050 // After 64 calls, BoolSource will refresh the bucket - make sure it does. 1047 // After 64 calls, BoolSource will refresh the bucket - make sure it does.
1051 mock_random_.ChangeValue(); 1048 mock_random_.ChangeValue();
1052 } 1049 }
1053 1050
1054 delete frames_[0].stream_frame; 1051 delete frames_[0].stream_frame;
1055 } 1052 }
1056 1053
1057 } // namespace 1054 } // namespace
1058 } // namespace test 1055 } // namespace test
1059 } // namespace net 1056 } // 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