| 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 |