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 9b1ff0307a092396401afb0585c219f4ca7eeafd..2324516e019606a07854dc9101bd9c69023fa60d 100644 |
--- a/net/quic/quic_packet_creator_test.cc |
+++ b/net/quic/quic_packet_creator_test.cc |
@@ -102,13 +102,19 @@ class QuicPacketCreatorTest : public ::testing::TestWithParam<TestParams> { |
if (serialized_packet == nullptr) { |
return; |
} |
- |
+ delete[] serialized_packet_.encrypted_buffer; |
serialized_packet_ = *serialized_packet; |
- serialized_packet_.packet = serialized_packet->packet->Clone(); |
- delete serialized_packet->packet; |
+ serialized_packet_.encrypted_buffer = |
+ QuicUtils::CopyBuffer(*serialized_packet); |
serialized_packet->retransmittable_frames.clear(); |
} |
+ void DeleteSerializedPacket() { |
+ delete[] serialized_packet_.encrypted_buffer; |
+ serialized_packet_.encrypted_buffer = nullptr; |
+ ClearSerializedPacket(&serialized_packet_); |
+ } |
+ |
protected: |
QuicPacketCreatorTest() |
: server_framer_(SupportedVersions(GetParam().version), |
@@ -138,7 +144,10 @@ class QuicPacketCreatorTest : public ::testing::TestWithParam<TestParams> { |
FLAGS_quic_no_unencrypted_fec = false; |
} |
- ~QuicPacketCreatorTest() override {} |
+ ~QuicPacketCreatorTest() override { |
+ delete[] serialized_packet_.encrypted_buffer; |
+ ClearSerializedPacket(&serialized_packet_); |
+ } |
SerializedPacket SerializeAllFrames(const QuicFrames& frames) { |
SerializedPacket packet = QuicPacketCreatorPeer::SerializeAllFrames( |
@@ -148,8 +157,10 @@ class QuicPacketCreatorTest : public ::testing::TestWithParam<TestParams> { |
return packet; |
} |
- void ProcessPacket(QuicEncryptedPacket* encrypted) { |
- server_framer_.ProcessPacket(*encrypted); |
+ void ProcessPacket(const SerializedPacket& packet) { |
+ QuicEncryptedPacket encrypted_packet(packet.encrypted_buffer, |
+ packet.encrypted_length); |
+ server_framer_.ProcessPacket(encrypted_packet); |
} |
void CheckStreamFrame(const QuicFrame& frame, |
@@ -258,8 +269,7 @@ TEST_P(QuicPacketCreatorTest, SerializeFrames) { |
EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
- ProcessPacket(serialized.packet); |
- delete serialized.packet; |
+ ProcessPacket(serialized); |
} |
} |
@@ -291,8 +301,8 @@ TEST_P(QuicPacketCreatorTest, SerializeWithFEC) { |
EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
- ProcessPacket(serialized_packet_.packet); |
- ClearSerializedPacket(&serialized_packet_); |
+ ProcessPacket(serialized_packet_); |
+ DeleteSerializedPacket(); |
// Should return false since we do not have enough packets in the FEC group to |
// trigger an FEC packet. |
@@ -315,8 +325,8 @@ TEST_P(QuicPacketCreatorTest, SerializeWithFEC) { |
EXPECT_CALL(framer_visitor_, OnFecData(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
- ProcessPacket(serialized_packet_.packet); |
- ClearSerializedPacket(&serialized_packet_); |
+ ProcessPacket(serialized_packet_); |
+ DeleteSerializedPacket(); |
} |
TEST_P(QuicPacketCreatorTest, SerializeChangingSequenceNumberLength) { |
@@ -343,8 +353,8 @@ TEST_P(QuicPacketCreatorTest, SerializeChangingSequenceNumberLength) { |
EXPECT_CALL(framer_visitor_, OnAckFrame(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
- ProcessPacket(serialized_packet_.packet); |
- ClearSerializedPacket(&serialized_packet_); |
+ ProcessPacket(serialized_packet_); |
+ DeleteSerializedPacket(); |
creator_.AddSavedFrame(frames_[0]); |
creator_.Flush(); |
@@ -363,8 +373,8 @@ TEST_P(QuicPacketCreatorTest, SerializeChangingSequenceNumberLength) { |
EXPECT_CALL(framer_visitor_, OnAckFrame(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
- ProcessPacket(serialized_packet_.packet); |
- ClearSerializedPacket(&serialized_packet_); |
+ ProcessPacket(serialized_packet_); |
+ DeleteSerializedPacket(); |
} |
TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacket) { |
@@ -393,7 +403,7 @@ TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacket) { |
.WillRepeatedly( |
Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
creator_.Flush(); |
- ASSERT_TRUE(serialized_packet_.packet); |
+ ASSERT_TRUE(serialized_packet_.encrypted_buffer); |
EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
serialized_packet_.packet_number_length); |
@@ -411,10 +421,10 @@ TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacket) { |
EXPECT_CALL(framer_visitor_, OnStopWaitingFrame(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
- ProcessPacket(serialized_packet_.packet); |
+ ProcessPacket(serialized_packet_); |
EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, |
header.public_header.packet_number_length); |
- ClearSerializedPacket(&serialized_packet_); |
+ DeleteSerializedPacket(); |
// Packet 2. |
EXPECT_FALSE(creator_.HasPendingFrames()); |
@@ -425,7 +435,7 @@ TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacket) { |
// Ensure the packet is successfully created. |
creator_.Flush(); |
- ASSERT_TRUE(serialized_packet_.packet); |
+ ASSERT_TRUE(serialized_packet_.encrypted_buffer); |
EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
serialized_packet_.packet_number_length); |
@@ -441,11 +451,11 @@ TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacket) { |
EXPECT_CALL(framer_visitor_, OnStopWaitingFrame(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
- ProcessPacket(serialized_packet_.packet); |
+ ProcessPacket(serialized_packet_); |
EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
header.public_header.packet_number_length); |
- ClearSerializedPacket(&serialized_packet_); |
+ DeleteSerializedPacket(); |
delete ack_frame.ack_frame; |
} |
@@ -487,8 +497,8 @@ TEST_P(QuicPacketCreatorTest, SerializeWithFECChangingSequenceNumberLength) { |
EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
- ProcessPacket(serialized_packet_.packet); |
- ClearSerializedPacket(&serialized_packet_); |
+ ProcessPacket(serialized_packet_); |
+ DeleteSerializedPacket(); |
// Generate Packet 2. |
ASSERT_TRUE(creator_.ConsumeData(2u, io_vector, 0u, 0u, false, false, &frame, |
@@ -508,8 +518,8 @@ TEST_P(QuicPacketCreatorTest, SerializeWithFECChangingSequenceNumberLength) { |
EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
- ProcessPacket(serialized_packet_.packet); |
- ClearSerializedPacket(&serialized_packet_); |
+ ProcessPacket(serialized_packet_); |
+ DeleteSerializedPacket(); |
// Should return false since we do not have enough packets in the FEC group to |
// trigger an FEC packet. |
@@ -537,8 +547,8 @@ TEST_P(QuicPacketCreatorTest, SerializeWithFECChangingSequenceNumberLength) { |
EXPECT_CALL(framer_visitor_, OnFecData(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
- ProcessPacket(serialized_packet_.packet); |
- ClearSerializedPacket(&serialized_packet_); |
+ ProcessPacket(serialized_packet_); |
+ DeleteSerializedPacket(); |
// Ensure the next FEC group starts using the new packet number length. |
ASSERT_TRUE(creator_.ConsumeData(3u, io_vector, 0u, 0u, false, false, &frame, |
@@ -549,7 +559,7 @@ TEST_P(QuicPacketCreatorTest, SerializeWithFECChangingSequenceNumberLength) { |
creator_.Flush(); |
EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER, |
serialized_packet_.packet_number_length); |
- ClearSerializedPacket(&serialized_packet_); |
+ DeleteSerializedPacket(); |
} |
TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) { |
@@ -593,8 +603,7 @@ TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) { |
EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
- ProcessPacket(serialized.packet); |
- delete serialized.packet; |
+ ProcessPacket(serialized); |
delete stream_frame; |
} |
@@ -619,7 +628,6 @@ TEST_P(QuicPacketCreatorTest, ReserializeCryptoFrameWithForwardSecurity) { |
serialized = serialized_packet_; |
} |
EXPECT_EQ(ENCRYPTION_NONE, serialized.encryption_level); |
- delete serialized.packet; |
delete stream_frame; |
} |
@@ -644,7 +652,6 @@ TEST_P(QuicPacketCreatorTest, ReserializeFrameWithForwardSecurity) { |
serialized = serialized_packet_; |
} |
EXPECT_EQ(ENCRYPTION_FORWARD_SECURE, serialized.encryption_level); |
- delete serialized.packet; |
delete stream_frame; |
} |
@@ -669,8 +676,7 @@ TEST_P(QuicPacketCreatorTest, ReserializeFramesWithPadding) { |
if (FLAGS_quic_retransmit_via_onserializedpacket) { |
serialized = serialized_packet_; |
} |
- EXPECT_EQ(kDefaultMaxPacketSize, serialized.packet->length()); |
- delete serialized.packet; |
+ EXPECT_EQ(kDefaultMaxPacketSize, serialized.encrypted_length); |
delete frame.stream_frame; |
} |
@@ -710,12 +716,11 @@ TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPacketAndPadding) { |
// will not be padded. |
if (bytes_free < 3) { |
EXPECT_EQ(kDefaultMaxPacketSize - bytes_free, |
- serialized.packet->length()); |
+ serialized.encrypted_length); |
} else { |
- EXPECT_EQ(kDefaultMaxPacketSize, serialized.packet->length()); |
+ EXPECT_EQ(kDefaultMaxPacketSize, serialized.encrypted_length); |
} |
- delete serialized.packet; |
delete frame.stream_frame; |
frames_.clear(); |
} |
@@ -742,8 +747,7 @@ TEST_P(QuicPacketCreatorTest, SerializeConnectionClose) { |
EXPECT_CALL(framer_visitor_, OnConnectionCloseFrame(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
- ProcessPacket(serialized.packet); |
- delete serialized.packet; |
+ ProcessPacket(serialized); |
} |
TEST_P(QuicPacketCreatorTest, SwitchFecOnOffWithGroupInProgress) { |
@@ -912,8 +916,8 @@ TEST_P(QuicPacketCreatorTest, StreamFrameConsumption) { |
EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
.WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
creator_.Flush(); |
- ASSERT_TRUE(serialized_packet_.packet); |
- ClearSerializedPacket(&serialized_packet_); |
+ ASSERT_TRUE(serialized_packet_.encrypted_buffer); |
+ DeleteSerializedPacket(); |
} |
} |
@@ -964,8 +968,8 @@ TEST_P(QuicPacketCreatorTest, StreamFrameConsumptionWithFec) { |
} |
} |
creator_.Flush(); |
- ASSERT_TRUE(serialized_packet_.packet); |
- ClearSerializedPacket(&serialized_packet_); |
+ ASSERT_TRUE(serialized_packet_.encrypted_buffer); |
+ DeleteSerializedPacket(); |
} |
} |
@@ -992,17 +996,17 @@ TEST_P(QuicPacketCreatorTest, CryptoStreamFramePacketPadding) { |
size_t bytes_consumed = frame.stream_frame->frame_length; |
EXPECT_LT(0u, bytes_consumed); |
creator_.Flush(); |
- ASSERT_TRUE(serialized_packet_.packet); |
+ ASSERT_TRUE(serialized_packet_.encrypted_buffer); |
// 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(kDefaultMaxPacketSize - bytes_free, |
- serialized_packet_.packet->length()); |
+ serialized_packet_.encrypted_length); |
} else { |
- EXPECT_EQ(kDefaultMaxPacketSize, serialized_packet_.packet->length()); |
+ EXPECT_EQ(kDefaultMaxPacketSize, serialized_packet_.encrypted_length); |
} |
- ClearSerializedPacket(&serialized_packet_); |
+ DeleteSerializedPacket(); |
} |
} |
@@ -1029,14 +1033,14 @@ TEST_P(QuicPacketCreatorTest, NonCryptoStreamFramePacketNonPadding) { |
size_t bytes_consumed = frame.stream_frame->frame_length; |
EXPECT_LT(0u, bytes_consumed); |
creator_.Flush(); |
- ASSERT_TRUE(serialized_packet_.packet); |
+ ASSERT_TRUE(serialized_packet_.encrypted_buffer); |
if (bytes_free > 0) { |
EXPECT_EQ(kDefaultMaxPacketSize - bytes_free, |
- serialized_packet_.packet->length()); |
+ serialized_packet_.encrypted_length); |
} else { |
- EXPECT_EQ(kDefaultMaxPacketSize, serialized_packet_.packet->length()); |
+ EXPECT_EQ(kDefaultMaxPacketSize, serialized_packet_.encrypted_length); |
} |
- ClearSerializedPacket(&serialized_packet_); |
+ DeleteSerializedPacket(); |
} |
} |
@@ -1133,10 +1137,9 @@ TEST_P(QuicPacketCreatorTest, SerializeFrame) { |
EXPECT_CALL(framer_visitor_, OnStreamFrame(_)); |
EXPECT_CALL(framer_visitor_, OnPacketComplete()); |
} |
- ProcessPacket(serialized.packet); |
+ ProcessPacket(serialized); |
EXPECT_EQ(GetParam().version_serialization, |
header.public_header.version_flag); |
- delete serialized.packet; |
} |
TEST_P(QuicPacketCreatorTest, ConsumeDataLargerThanOneStreamFrame) { |
@@ -1164,7 +1167,7 @@ TEST_P(QuicPacketCreatorTest, ConsumeDataLargerThanOneStreamFrame) { |
const string payload(payload_length, 'a'); |
CheckStreamFrame(frame, 1u, payload, 0u, false); |
creator_.Flush(); |
- ClearSerializedPacket(&serialized_packet_); |
+ DeleteSerializedPacket(); |
} |
TEST_P(QuicPacketCreatorTest, AddFrameAndFlush) { |
@@ -1207,13 +1210,13 @@ TEST_P(QuicPacketCreatorTest, AddFrameAndFlush) { |
EXPECT_FALSE(creator_.AddSavedFrame(QuicFrame(&ack_frame))); |
// Ensure the packet is successfully created. |
- ASSERT_TRUE(serialized_packet_.packet); |
+ ASSERT_TRUE(serialized_packet_.encrypted_buffer); |
ASSERT_FALSE(serialized_packet_.retransmittable_frames.empty()); |
const QuicFrames& retransmittable = serialized_packet_.retransmittable_frames; |
ASSERT_EQ(1u, retransmittable.size()); |
EXPECT_EQ(STREAM_FRAME, retransmittable[0].type); |
ASSERT_TRUE(retransmittable[0].stream_frame); |
- ClearSerializedPacket(&serialized_packet_); |
+ DeleteSerializedPacket(); |
EXPECT_FALSE(creator_.HasPendingFrames()); |
EXPECT_EQ(max_plaintext_size - |
@@ -1263,10 +1266,10 @@ TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithLargePacketSize) { |
.WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
size_t est_packet_size = creator_.PacketSize(); |
creator_.Flush(); |
- ASSERT_TRUE(serialized_packet_.packet); |
+ ASSERT_TRUE(serialized_packet_.encrypted_buffer); |
EXPECT_EQ(est_packet_size, client_framer_.GetMaxPlaintextSize( |
- serialized_packet_.packet->length())); |
- ClearSerializedPacket(&serialized_packet_); |
+ serialized_packet_.encrypted_length)); |
+ DeleteSerializedPacket(); |
} |
TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithSmallPacketSize) { |
@@ -1301,10 +1304,10 @@ TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithSmallPacketSize) { |
EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
.WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); |
creator_.Flush(); |
- ASSERT_TRUE(serialized_packet_.packet); |
+ ASSERT_TRUE(serialized_packet_.encrypted_buffer); |
EXPECT_GE(est_packet_size, client_framer_.GetMaxPlaintextSize( |
- serialized_packet_.packet->length())); |
- ClearSerializedPacket(&serialized_packet_); |
+ serialized_packet_.encrypted_length)); |
+ DeleteSerializedPacket(); |
} |
TEST_P(QuicPacketCreatorTest, EntropyFlag) { |
@@ -1322,7 +1325,6 @@ TEST_P(QuicPacketCreatorTest, EntropyFlag) { |
uint8_t rest_of_hash = serialized.entropy_hash & ~(1 << ((j + 1) % 8)); |
EXPECT_EQ(expected_rand_bool, observed_rand_bool); |
EXPECT_EQ(0, rest_of_hash); |
- delete serialized.packet; |
} |
// After 64 calls, BoolSource will refresh the bucket - make sure it does. |
mock_random_.ChangeValue(); |
@@ -1396,7 +1398,7 @@ TEST_P(QuicPacketCreatorTest, ResetFecGroup) { |
creator_.MaybeSendFecPacketAndCloseGroup(/*force_send_fec=*/true, |
/*is_fec_timeout=*/false); |
ASSERT_EQ(3u, serialized_packet_.packet_number); |
- ClearSerializedPacket(&serialized_packet_); |
+ DeleteSerializedPacket(); |
} |
TEST_P(QuicPacketCreatorTest, ResetFecGroupWithQueuedFrames) { |
@@ -1615,7 +1617,7 @@ TEST_P(QuicPacketCreatorTest, SerializePacketOnDifferentPath) { |
EXPECT_EQ(1u, creator_.packet_number()); |
// Verify serialized data packet's path id. |
EXPECT_EQ(kDefaultPathId, serialized_packet_.path_id); |
- ClearSerializedPacket(&serialized_packet_); |
+ DeleteSerializedPacket(); |
// Change to path 1. |
QuicPathId kPathId1 = 1; |
@@ -1636,7 +1638,7 @@ TEST_P(QuicPacketCreatorTest, SerializePacketOnDifferentPath) { |
creator_.Flush(); |
// Verify serialized data packet's path id. |
EXPECT_EQ(kPathId1, serialized_packet_.path_id); |
- ClearSerializedPacket(&serialized_packet_); |
+ DeleteSerializedPacket(); |
} |
TEST_P(QuicPacketCreatorTest, AddUnencryptedStreamDataClosesConnection) { |