| Index: net/quic/quic_packet_creator_test.cc
|
| diff --git a/net/quic/quic_packet_creator_test.cc b/net/quic/quic_packet_creator_test.cc
|
| index 08acdc71effeefabb13dcc056c9549b1e5bbd3a8..4e03e3ac2b9e11bccdf08ecc1354f3cc5008055a 100644
|
| --- a/net/quic/quic_packet_creator_test.cc
|
| +++ b/net/quic/quic_packet_creator_test.cc
|
| @@ -466,6 +466,52 @@ TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) {
|
| delete serialized.packet;
|
| }
|
|
|
| +TEST_P(QuicPacketCreatorTest, ReserializeFramesWithPadding) {
|
| + scoped_ptr<QuicStreamFrame> stream_frame(
|
| + new QuicStreamFrame(kCryptoStreamId, /*fin=*/ false, /*offset=*/ 0,
|
| + MakeIOVector("fake handshake message data")));
|
| + frames_.push_back(QuicFrame(stream_frame.get()));
|
| + SerializedPacket serialized =
|
| + creator_.ReserializeAllFrames(frames_,
|
| + creator_.next_sequence_number_length());
|
| +
|
| + EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize),
|
| + serialized.packet->length());
|
| + delete serialized.packet;
|
| +}
|
| +
|
| +TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPacketAndPadding) {
|
| + const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP)
|
| + + GetEncryptionOverhead() + GetStreamFrameOverhead(NOT_IN_FEC_GROUP);
|
| + size_t capacity = kDefaultMaxPacketSize - overhead;
|
| + for (int delta = -5; delta <= 0; ++delta) {
|
| + string data(capacity + delta, 'A');
|
| + size_t bytes_free = 0 - delta;
|
| +
|
| + scoped_ptr<QuicStreamFrame> stream_frame(
|
| + new QuicStreamFrame(kCryptoStreamId, /*fin=*/ false, kOffset,
|
| + MakeIOVector(data)));
|
| + frames_.push_back(QuicFrame(stream_frame.get()));
|
| + SerializedPacket serialized =
|
| + creator_.ReserializeAllFrames(frames_,
|
| + creator_.next_sequence_number_length());
|
| +
|
| + // If there is not enough space in the packet to fit a padding frame
|
| + // (1 byte) and to expand the stream frame (another 2 bytes) the packet
|
| + // will not be padded.
|
| + if (bytes_free < 3) {
|
| + EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize)
|
| + - bytes_free, serialized.packet->length());
|
| + } else {
|
| + EXPECT_EQ(client_framer_.GetMaxPlaintextSize(kDefaultMaxPacketSize),
|
| + serialized.packet->length());
|
| + }
|
| +
|
| + delete serialized.packet;
|
| + frames_.clear();
|
| + }
|
| +}
|
| +
|
| TEST_P(QuicPacketCreatorTest, SerializeConnectionClose) {
|
| QuicConnectionCloseFrame frame;
|
| frame.error_code = QUIC_NO_ERROR;
|
| @@ -760,23 +806,23 @@ TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthLeastAwaiting) {
|
| size_t max_packets_per_fec_group = 10;
|
| creator_.set_max_packets_per_fec_group(max_packets_per_fec_group);
|
| creator_.set_sequence_number(64 - max_packets_per_fec_group);
|
| - creator_.UpdateSequenceNumberLength(2, 10000);
|
| + creator_.UpdateSequenceNumberLength(2, 10000 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER,
|
| creator_.next_sequence_number_length());
|
|
|
| creator_.set_sequence_number(64 * 256 - max_packets_per_fec_group);
|
| - creator_.UpdateSequenceNumberLength(2, 10000);
|
| + creator_.UpdateSequenceNumberLength(2, 10000 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_2BYTE_SEQUENCE_NUMBER,
|
| creator_.next_sequence_number_length());
|
|
|
| creator_.set_sequence_number(64 * 256 * 256 - max_packets_per_fec_group);
|
| - creator_.UpdateSequenceNumberLength(2, 10000);
|
| + creator_.UpdateSequenceNumberLength(2, 10000 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER,
|
| creator_.next_sequence_number_length());
|
|
|
| creator_.set_sequence_number(
|
| GG_UINT64_C(64) * 256 * 256 * 256 * 256 - max_packets_per_fec_group);
|
| - creator_.UpdateSequenceNumberLength(2, 10000);
|
| + creator_.UpdateSequenceNumberLength(2, 10000 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_6BYTE_SEQUENCE_NUMBER,
|
| creator_.next_sequence_number_length());
|
| }
|
| @@ -785,20 +831,21 @@ TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthBandwidth) {
|
| EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER,
|
| creator_.next_sequence_number_length());
|
|
|
| - creator_.UpdateSequenceNumberLength(1, 10000);
|
| + creator_.UpdateSequenceNumberLength(1, 10000 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_1BYTE_SEQUENCE_NUMBER,
|
| creator_.next_sequence_number_length());
|
|
|
| - creator_.UpdateSequenceNumberLength(1, 10000 * 256);
|
| + creator_.UpdateSequenceNumberLength(1, 10000 * 256 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_2BYTE_SEQUENCE_NUMBER,
|
| creator_.next_sequence_number_length());
|
|
|
| - creator_.UpdateSequenceNumberLength(1, 10000 * 256 * 256);
|
| + creator_.UpdateSequenceNumberLength(
|
| + 1, 10000 * 256 * 256 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_4BYTE_SEQUENCE_NUMBER,
|
| creator_.next_sequence_number_length());
|
|
|
| creator_.UpdateSequenceNumberLength(
|
| - 1, GG_UINT64_C(1000) * 256 * 256 * 256 * 256);
|
| + 1, GG_UINT64_C(1000) * 256 * 256 * 256 * 256 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_6BYTE_SEQUENCE_NUMBER,
|
| creator_.next_sequence_number_length());
|
| }
|
|
|