OLD | NEW |
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 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
635 &frame); | 635 &frame); |
636 EXPECT_EQ(0u, consumed); | 636 EXPECT_EQ(0u, consumed); |
637 CheckStreamFrame(frame, 1u, string(), 0u, true); | 637 CheckStreamFrame(frame, 1u, string(), 0u, true); |
638 delete frame.stream_frame; | 638 delete frame.stream_frame; |
639 } | 639 } |
640 | 640 |
641 TEST_P(QuicPacketCreatorTest, CreateAllFreeBytesForStreamFrames) { | 641 TEST_P(QuicPacketCreatorTest, CreateAllFreeBytesForStreamFrames) { |
642 const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP) | 642 const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP) |
643 + GetEncryptionOverhead(); | 643 + GetEncryptionOverhead(); |
644 for (size_t i = overhead; i < overhead + 100; ++i) { | 644 for (size_t i = overhead; i < overhead + 100; ++i) { |
645 creator_.set_max_packet_length(i); | 645 creator_.SetMaxPacketLength(i); |
646 const bool should_have_room = i > overhead + GetStreamFrameOverhead( | 646 const bool should_have_room = i > overhead + GetStreamFrameOverhead( |
647 NOT_IN_FEC_GROUP); | 647 NOT_IN_FEC_GROUP); |
648 ASSERT_EQ(should_have_room, creator_.HasRoomForStreamFrame( | 648 ASSERT_EQ(should_have_room, creator_.HasRoomForStreamFrame( |
649 kClientDataStreamId1, kOffset)); | 649 kClientDataStreamId1, kOffset)); |
650 if (should_have_room) { | 650 if (should_have_room) { |
651 QuicFrame frame; | 651 QuicFrame frame; |
652 size_t bytes_consumed = creator_.CreateStreamFrame( | 652 size_t bytes_consumed = creator_.CreateStreamFrame( |
653 kClientDataStreamId1, MakeIOVector("testdata"), kOffset, false, | 653 kClientDataStreamId1, MakeIOVector("testdata"), kOffset, false, |
654 &frame); | 654 &frame); |
655 EXPECT_LT(0u, bytes_consumed); | 655 EXPECT_LT(0u, bytes_consumed); |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
877 header.public_header.version_flag); | 877 header.public_header.version_flag); |
878 delete serialized.packet; | 878 delete serialized.packet; |
879 } | 879 } |
880 | 880 |
881 TEST_P(QuicPacketCreatorTest, CreateStreamFrameTooLarge) { | 881 TEST_P(QuicPacketCreatorTest, CreateStreamFrameTooLarge) { |
882 if (!GetParam().version_serialization) { | 882 if (!GetParam().version_serialization) { |
883 creator_.StopSendingVersion(); | 883 creator_.StopSendingVersion(); |
884 } | 884 } |
885 // A string larger than fits into a frame. | 885 // A string larger than fits into a frame. |
886 size_t payload_length; | 886 size_t payload_length; |
887 creator_.set_max_packet_length(GetPacketLengthForOneStream( | 887 creator_.SetMaxPacketLength(GetPacketLengthForOneStream( |
888 client_framer_.version(), | 888 client_framer_.version(), |
889 QuicPacketCreatorPeer::SendVersionInPacket(&creator_), | 889 QuicPacketCreatorPeer::SendVersionInPacket(&creator_), |
890 creator_.connection_id_length(), | 890 creator_.connection_id_length(), |
891 PACKET_1BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP, &payload_length)); | 891 PACKET_1BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP, &payload_length)); |
892 QuicFrame frame; | 892 QuicFrame frame; |
893 const string too_long_payload(payload_length * 2, 'a'); | 893 const string too_long_payload(payload_length * 2, 'a'); |
894 size_t consumed = creator_.CreateStreamFrame( | 894 size_t consumed = creator_.CreateStreamFrame( |
895 1u, MakeIOVector(too_long_payload), 0u, true, &frame); | 895 1u, MakeIOVector(too_long_payload), 0u, true, &frame); |
896 EXPECT_EQ(payload_length, consumed); | 896 EXPECT_EQ(payload_length, consumed); |
897 const string payload(payload_length, 'a'); | 897 const string payload(payload_length, 'a'); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
951 QuicPacketCreatorPeer::SendVersionInPacket(&creator_), | 951 QuicPacketCreatorPeer::SendVersionInPacket(&creator_), |
952 PACKET_1BYTE_SEQUENCE_NUMBER, | 952 PACKET_1BYTE_SEQUENCE_NUMBER, |
953 NOT_IN_FEC_GROUP), | 953 NOT_IN_FEC_GROUP), |
954 creator_.BytesFree()); | 954 creator_.BytesFree()); |
955 } | 955 } |
956 | 956 |
957 TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithLargePacketSize) { | 957 TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithLargePacketSize) { |
958 if (!GetParam().version_serialization) { | 958 if (!GetParam().version_serialization) { |
959 creator_.StopSendingVersion(); | 959 creator_.StopSendingVersion(); |
960 } | 960 } |
961 creator_.set_max_packet_length(kMaxPacketSize); | 961 creator_.SetMaxPacketLength(kMaxPacketSize); |
962 | 962 |
963 // Serialized length of ack frame with 2000 nack ranges should be limited by | 963 // Serialized length of ack frame with 2000 nack ranges should be limited by |
964 // the number of nack ranges that can be fit in an ack frame. | 964 // the number of nack ranges that can be fit in an ack frame. |
965 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(2000u, 0u); | 965 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(2000u, 0u); |
966 size_t frame_len = client_framer_.GetSerializedFrameLength( | 966 size_t frame_len = client_framer_.GetSerializedFrameLength( |
967 QuicFrame(&ack_frame), creator_.BytesFree(), true, true, | 967 QuicFrame(&ack_frame), creator_.BytesFree(), true, true, |
968 NOT_IN_FEC_GROUP, PACKET_1BYTE_SEQUENCE_NUMBER); | 968 NOT_IN_FEC_GROUP, PACKET_1BYTE_SEQUENCE_NUMBER); |
969 EXPECT_GT(creator_.BytesFree(), frame_len); | 969 EXPECT_GT(creator_.BytesFree(), frame_len); |
970 EXPECT_GT(creator_.max_packet_length(), creator_.PacketSize()); | 970 EXPECT_GT(creator_.max_packet_length(), creator_.PacketSize()); |
971 | 971 |
(...skipping 22 matching lines...) Expand all Loading... |
994 EXPECT_EQ(est_packet_size, | 994 EXPECT_EQ(est_packet_size, |
995 client_framer_.GetMaxPlaintextSize(serialized.packet->length())); | 995 client_framer_.GetMaxPlaintextSize(serialized.packet->length())); |
996 delete serialized.retransmittable_frames; | 996 delete serialized.retransmittable_frames; |
997 delete serialized.packet; | 997 delete serialized.packet; |
998 } | 998 } |
999 | 999 |
1000 TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithSmallPacketSize) { | 1000 TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithSmallPacketSize) { |
1001 if (!GetParam().version_serialization) { | 1001 if (!GetParam().version_serialization) { |
1002 creator_.StopSendingVersion(); | 1002 creator_.StopSendingVersion(); |
1003 } | 1003 } |
1004 creator_.set_max_packet_length(500u); | 1004 creator_.SetMaxPacketLength(500u); |
1005 | 1005 |
1006 const size_t max_plaintext_size = | 1006 const size_t max_plaintext_size = |
1007 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()); | 1007 client_framer_.GetMaxPlaintextSize(creator_.max_packet_length()); |
1008 EXPECT_EQ(max_plaintext_size - creator_.PacketSize(), creator_.BytesFree()); | 1008 EXPECT_EQ(max_plaintext_size - creator_.PacketSize(), creator_.BytesFree()); |
1009 | 1009 |
1010 // Serialized length of ack frame with 2000 nack ranges should be limited by | 1010 // Serialized length of ack frame with 2000 nack ranges should be limited by |
1011 // the packet size. | 1011 // the packet size. |
1012 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(2000u, 0u); | 1012 QuicAckFrame ack_frame = MakeAckFrameWithNackRanges(2000u, 0u); |
1013 size_t frame_len = client_framer_.GetSerializedFrameLength( | 1013 size_t frame_len = client_framer_.GetSerializedFrameLength( |
1014 QuicFrame(&ack_frame), creator_.BytesFree(), true, true, | 1014 QuicFrame(&ack_frame), creator_.BytesFree(), true, true, |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1054 // After 64 calls, BoolSource will refresh the bucket - make sure it does. | 1054 // After 64 calls, BoolSource will refresh the bucket - make sure it does. |
1055 mock_random_.ChangeValue(); | 1055 mock_random_.ChangeValue(); |
1056 } | 1056 } |
1057 | 1057 |
1058 delete frames_[0].stream_frame; | 1058 delete frames_[0].stream_frame; |
1059 } | 1059 } |
1060 | 1060 |
1061 } // namespace | 1061 } // namespace |
1062 } // namespace test | 1062 } // namespace test |
1063 } // namespace net | 1063 } // namespace net |
OLD | NEW |