| 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 b5dddcfcf2c44038507d60f77d8dc88950561d37..535d691ab95f532f40cb346ef21756a1ca24455b 100644
|
| --- a/net/quic/quic_packet_creator_test.cc
|
| +++ b/net/quic/quic_packet_creator_test.cc
|
| @@ -82,7 +82,6 @@ class MockDelegate : public QuicPacketCreator::DelegateInterface {
|
| ~MockDelegate() override {}
|
|
|
| MOCK_METHOD1(OnSerializedPacket, void(SerializedPacket* packet));
|
| - MOCK_METHOD0(OnResetFecGroup, void());
|
| MOCK_METHOD2(OnUnrecoverableError,
|
| void(QuicErrorCode, ConnectionCloseSource source));
|
|
|
| @@ -180,11 +179,11 @@ class QuicPacketCreatorTest : public ::testing::TestWithParam<TestParams> {
|
|
|
| // Returns the number of bytes consumed by the header of packet, including
|
| // the version.
|
| - size_t GetPacketHeaderOverhead(InFecGroup is_in_fec_group) {
|
| + size_t GetPacketHeaderOverhead() {
|
| return GetPacketHeaderSize(
|
| creator_.connection_id_length(), kIncludeVersion, !kIncludePathId,
|
| QuicPacketCreatorPeer::NextPacketNumberLength(&creator_),
|
| - is_in_fec_group);
|
| + NOT_IN_FEC_GROUP);
|
| }
|
|
|
| // Returns the number of bytes of overhead that will be added to a packet
|
| @@ -196,9 +195,9 @@ class QuicPacketCreatorTest : public ::testing::TestWithParam<TestParams> {
|
|
|
| // Returns the number of bytes consumed by the non-data fields of a stream
|
| // frame, assuming it is the last frame in the packet
|
| - size_t GetStreamFrameOverhead(InFecGroup is_in_fec_group) {
|
| + size_t GetStreamFrameOverhead() {
|
| return QuicFramer::GetMinStreamFrameSize(kClientDataStreamId1, kOffset,
|
| - true, is_in_fec_group);
|
| + true, NOT_IN_FEC_GROUP);
|
| }
|
|
|
| QuicIOVector MakeIOVector(StringPiece s) {
|
| @@ -274,62 +273,6 @@ TEST_P(QuicPacketCreatorTest, SerializeFrames) {
|
| }
|
| }
|
|
|
| -TEST_P(QuicPacketCreatorTest, SerializeWithFEC) {
|
| - // Send FEC packet every 6 packets.
|
| - creator_.set_max_packets_per_fec_group(6);
|
| - // Should return false since we do not have enough packets in the FEC group to
|
| - // trigger an FEC packet.
|
| - ASSERT_FALSE(creator_.ShouldSendFec(/*force_close=*/false));
|
| - // Turn on FEC protection.
|
| - QuicFrame frame;
|
| - QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| - // Serialize the packet.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
|
| - creator_.Flush();
|
| -
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(framer_visitor_, OnPacket());
|
| - EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_));
|
| - EXPECT_CALL(framer_visitor_, OnPacketHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnFecProtectedPayload(_));
|
| - EXPECT_CALL(framer_visitor_, OnStreamFrame(_));
|
| - EXPECT_CALL(framer_visitor_, OnPacketComplete());
|
| - }
|
| - ProcessPacket(serialized_packet_);
|
| - DeleteSerializedPacket();
|
| -
|
| - // Should return false since we do not have enough packets in the FEC group to
|
| - // trigger an FEC packet.
|
| - ASSERT_FALSE(creator_.ShouldSendFec(/*force_close=*/false));
|
| - // Should return true since there are packets in the FEC group.
|
| - ASSERT_TRUE(creator_.ShouldSendFec(/*force_close=*/true));
|
| -
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
|
| - creator_.MaybeSendFecPacketAndCloseGroup(/*force_send_fec=*/true,
|
| - /*is_fec_timeout=*/false);
|
| - ASSERT_EQ(2u, serialized_packet_.packet_number);
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(framer_visitor_, OnPacket());
|
| - EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_));
|
| - EXPECT_CALL(framer_visitor_, OnPacketHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnFecData(_));
|
| - EXPECT_CALL(framer_visitor_, OnPacketComplete());
|
| - }
|
| - ProcessPacket(serialized_packet_);
|
| - DeleteSerializedPacket();
|
| -}
|
| -
|
| TEST_P(QuicPacketCreatorTest, SerializeChangingSequenceNumberLength) {
|
| frames_.push_back(QuicFrame(new QuicAckFrame(MakeAckFrame(0u))));
|
| creator_.AddSavedFrame(frames_[0]);
|
| @@ -460,109 +403,6 @@ TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacket) {
|
| delete ack_frame.ack_frame;
|
| }
|
|
|
| -TEST_P(QuicPacketCreatorTest, SerializeWithFECChangingSequenceNumberLength) {
|
| - // Test goal is to test the following sequence (P1 => generate Packet 1):
|
| - // P1 <change seq num length> P2 FEC,
|
| - // and we expect that packet number length should not change until the end
|
| - // of the open FEC group.
|
| -
|
| - // Send FEC packet every 6 packets.
|
| - creator_.set_max_packets_per_fec_group(6);
|
| - // Should return false since we do not have enough packets in the FEC group to
|
| - // trigger an FEC packet.
|
| - ASSERT_FALSE(creator_.ShouldSendFec(/*force_close=*/false));
|
| -
|
| - // Generate Packet 1.
|
| - QuicFrame frame;
|
| - QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - // Change the packet number length mid-FEC group and it should not change.
|
| - QuicPacketCreatorPeer::SetNextPacketNumberLength(&creator_,
|
| - PACKET_4BYTE_PACKET_NUMBER);
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillRepeatedly(
|
| - Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
|
| - creator_.Flush();
|
| - EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| - serialized_packet_.packet_number_length);
|
| -
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(framer_visitor_, OnPacket());
|
| - EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_));
|
| - EXPECT_CALL(framer_visitor_, OnPacketHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnFecProtectedPayload(_));
|
| - EXPECT_CALL(framer_visitor_, OnStreamFrame(_));
|
| - EXPECT_CALL(framer_visitor_, OnPacketComplete());
|
| - }
|
| - ProcessPacket(serialized_packet_);
|
| - DeleteSerializedPacket();
|
| -
|
| - // Generate Packet 2.
|
| - ASSERT_TRUE(creator_.ConsumeData(2u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - creator_.Flush();
|
| - EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| - serialized_packet_.packet_number_length);
|
| -
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(framer_visitor_, OnPacket());
|
| - EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_));
|
| - EXPECT_CALL(framer_visitor_, OnPacketHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnFecProtectedPayload(_));
|
| - EXPECT_CALL(framer_visitor_, OnStreamFrame(_));
|
| - EXPECT_CALL(framer_visitor_, OnPacketComplete());
|
| - }
|
| - ProcessPacket(serialized_packet_);
|
| - DeleteSerializedPacket();
|
| -
|
| - // Should return false since we do not have enough packets in the FEC group to
|
| - // trigger an FEC packet.
|
| - ASSERT_FALSE(creator_.ShouldSendFec(/*force_close=*/false));
|
| - // Should return true since there are packets in the FEC group.
|
| - ASSERT_TRUE(creator_.ShouldSendFec(/*force_close=*/true));
|
| -
|
| - // Force generation of FEC packet.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
|
| - // Turn off FEC protection.
|
| - creator_.MaybeSendFecPacketAndCloseGroup(/*force_send_fec=*/true,
|
| - /*is_fec_timeout=*/false);
|
| - EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| - serialized_packet_.packet_number_length);
|
| - ASSERT_EQ(3u, serialized_packet_.packet_number);
|
| -
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(framer_visitor_, OnPacket());
|
| - EXPECT_CALL(framer_visitor_, OnUnauthenticatedPublicHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnUnauthenticatedHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnDecryptedPacket(_));
|
| - EXPECT_CALL(framer_visitor_, OnPacketHeader(_));
|
| - EXPECT_CALL(framer_visitor_, OnFecData(_));
|
| - EXPECT_CALL(framer_visitor_, OnPacketComplete());
|
| - }
|
| - 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,
|
| - MUST_FEC_PROTECT));
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
|
| - creator_.Flush();
|
| - EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
|
| - serialized_packet_.packet_number_length);
|
| - DeleteSerializedPacket();
|
| -}
|
| -
|
| TEST_P(QuicPacketCreatorTest, ReserializeFramesWithSequenceNumberLength) {
|
| // If the original packet number length, the current packet number
|
| // length, and the configured send packet number length are different, the
|
| @@ -659,9 +499,8 @@ TEST_P(QuicPacketCreatorTest, ReserializeFramesWithPadding) {
|
| }
|
|
|
| TEST_P(QuicPacketCreatorTest, ReserializeFramesWithFullPacketAndPadding) {
|
| - const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP) +
|
| - GetEncryptionOverhead() +
|
| - GetStreamFrameOverhead(NOT_IN_FEC_GROUP);
|
| + const size_t overhead = GetPacketHeaderOverhead() + GetEncryptionOverhead() +
|
| + GetStreamFrameOverhead();
|
| size_t capacity = kDefaultMaxPacketSize - overhead;
|
| for (int delta = -5; delta <= 0; ++delta) {
|
| string data(capacity + delta, 'A');
|
| @@ -722,75 +561,11 @@ TEST_P(QuicPacketCreatorTest, SerializeConnectionClose) {
|
| ProcessPacket(serialized);
|
| }
|
|
|
| -TEST_P(QuicPacketCreatorTest, SwitchFecOnOffWithGroupInProgress) {
|
| - // Send FEC packet every 6 packets.
|
| - creator_.set_max_packets_per_fec_group(6);
|
| - // Turn on FEC protection.
|
| - QuicFrame frame;
|
| - QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| - creator_.Flush();
|
| - // We do not have enough packets in the FEC group to trigger an FEC packet.
|
| - EXPECT_FALSE(creator_.ShouldSendFec(/*force_close=*/false));
|
| - // Should return true since there are packets in the FEC group.
|
| - EXPECT_TRUE(creator_.ShouldSendFec(/*force_close=*/true));
|
| -
|
| - // Switching FEC off should not change creator state, since there is an
|
| - // FEC packet under construction.
|
| - EXPECT_DFATAL(QuicPacketCreatorPeer::StopFecProtectingPackets(&creator_),
|
| - "Cannot stop FEC protection with open FEC group.");
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| - // Confirm that FEC packet is still under construction.
|
| - EXPECT_TRUE(creator_.ShouldSendFec(/*force_close=*/true));
|
| -
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| - // Turn off FEC protection.
|
| - creator_.MaybeSendFecPacketAndCloseGroup(/*force_send_fec=*/true,
|
| - /*is_fec_timeout=*/false);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| -}
|
| -
|
| -TEST_P(QuicPacketCreatorTest, SwitchFecOnWithStreamFrameQueued) {
|
| - // Add a stream frame to the creator.
|
| - QuicFrame frame;
|
| - QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| - ASSERT_TRUE(frame.stream_frame);
|
| - size_t consumed = frame.stream_frame->frame_length;
|
| - EXPECT_EQ(4u, consumed);
|
| - EXPECT_TRUE(creator_.HasPendingFrames());
|
| -
|
| - // Enable FEC protection, and send FEC packet every 6 packets.
|
| - creator_.set_max_packets_per_fec_group(6);
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecEnabled(&creator_));
|
| - EXPECT_DFATAL(QuicPacketCreatorPeer::StartFecProtectingPackets(&creator_),
|
| - "Cannot start FEC protection with pending frames.");
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| -
|
| - // Start FEC protection after current open packet is flushed.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| - ASSERT_TRUE(creator_.ConsumeData(2u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - ASSERT_TRUE(frame.stream_frame);
|
| - consumed = frame.stream_frame->frame_length;
|
| - EXPECT_EQ(4u, consumed);
|
| - EXPECT_TRUE(creator_.HasPendingFrames());
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| -}
|
| -
|
| TEST_P(QuicPacketCreatorTest, ConsumeData) {
|
| QuicFrame frame;
|
| QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + ASSERT_TRUE(
|
| + creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| size_t consumed = frame.stream_frame->frame_length;
|
| EXPECT_EQ(4u, consumed);
|
| @@ -801,8 +576,8 @@ TEST_P(QuicPacketCreatorTest, ConsumeData) {
|
| TEST_P(QuicPacketCreatorTest, ConsumeDataFin) {
|
| QuicFrame frame;
|
| QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 10u, true, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + ASSERT_TRUE(
|
| + creator_.ConsumeData(1u, io_vector, 0u, 10u, true, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| size_t consumed = frame.stream_frame->frame_length;
|
| EXPECT_EQ(4u, consumed);
|
| @@ -813,8 +588,7 @@ TEST_P(QuicPacketCreatorTest, ConsumeDataFin) {
|
| TEST_P(QuicPacketCreatorTest, ConsumeDataFinOnly) {
|
| QuicFrame frame;
|
| QuicIOVector io_vector(nullptr, 0, 0);
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, true, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, true, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| size_t consumed = frame.stream_frame->frame_length;
|
| EXPECT_EQ(0u, consumed);
|
| @@ -822,28 +596,11 @@ TEST_P(QuicPacketCreatorTest, ConsumeDataFinOnly) {
|
| EXPECT_TRUE(creator_.HasPendingFrames());
|
| }
|
|
|
| -TEST_P(QuicPacketCreatorTest, ConsumeDataWithFecProtect) {
|
| - creator_.set_max_packets_per_fec_group(6);
|
| - QuicFrame frame;
|
| - QuicIOVector io_vector(MakeIOVector("test"));
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - ASSERT_TRUE(frame.stream_frame);
|
| - size_t consumed = frame.stream_frame->frame_length;
|
| - EXPECT_EQ(4u, consumed);
|
| - CheckStreamFrame(frame, 1u, "test", 0u, false);
|
| - EXPECT_TRUE(creator_.HasPendingFrames());
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| -}
|
| -
|
| TEST_P(QuicPacketCreatorTest, CreateAllFreeBytesForStreamFrames) {
|
| - const size_t overhead =
|
| - GetPacketHeaderOverhead(NOT_IN_FEC_GROUP) + GetEncryptionOverhead();
|
| + const size_t overhead = GetPacketHeaderOverhead() + GetEncryptionOverhead();
|
| for (size_t i = overhead; i < overhead + 100; ++i) {
|
| creator_.SetMaxPacketLength(i);
|
| - const bool should_have_room =
|
| - i > overhead + GetStreamFrameOverhead(NOT_IN_FEC_GROUP);
|
| + const bool should_have_room = i > overhead + GetStreamFrameOverhead();
|
| ASSERT_EQ(should_have_room,
|
| creator_.HasRoomForStreamFrame(kClientDataStreamId1, kOffset));
|
| if (should_have_room) {
|
| @@ -853,8 +610,7 @@ TEST_P(QuicPacketCreatorTest, CreateAllFreeBytesForStreamFrames) {
|
| .WillRepeatedly(
|
| Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| ASSERT_TRUE(creator_.ConsumeData(kClientDataStreamId1, io_vector, 0u,
|
| - kOffset, false, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + kOffset, false, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| size_t bytes_consumed = frame.stream_frame->frame_length;
|
| EXPECT_LT(0u, bytes_consumed);
|
| @@ -865,9 +621,8 @@ TEST_P(QuicPacketCreatorTest, CreateAllFreeBytesForStreamFrames) {
|
|
|
| TEST_P(QuicPacketCreatorTest, StreamFrameConsumption) {
|
| // Compute the total overhead for a single frame in packet.
|
| - const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP) +
|
| - GetEncryptionOverhead() +
|
| - GetStreamFrameOverhead(NOT_IN_FEC_GROUP);
|
| + const size_t overhead = GetPacketHeaderOverhead() + GetEncryptionOverhead() +
|
| + GetStreamFrameOverhead();
|
| size_t capacity = kDefaultMaxPacketSize - overhead;
|
| // Now, test various sizes around this size.
|
| for (int delta = -5; delta <= 5; ++delta) {
|
| @@ -876,8 +631,7 @@ TEST_P(QuicPacketCreatorTest, StreamFrameConsumption) {
|
| QuicFrame frame;
|
| QuicIOVector io_vector(MakeIOVector(data));
|
| ASSERT_TRUE(creator_.ConsumeData(kClientDataStreamId1, io_vector, 0u,
|
| - kOffset, false, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + kOffset, false, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
|
|
| // BytesFree() returns bytes available for the next frame, which will
|
| @@ -893,63 +647,10 @@ TEST_P(QuicPacketCreatorTest, StreamFrameConsumption) {
|
| }
|
| }
|
|
|
| -TEST_P(QuicPacketCreatorTest, StreamFrameConsumptionWithFec) {
|
| - // Send FEC packet every 6 packets.
|
| - creator_.set_max_packets_per_fec_group(6);
|
| - // Turn on FEC protection.
|
| - QuicFrame frame;
|
| - QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| -
|
| - // Serialize the packet.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| - creator_.Flush();
|
| - // Compute the total overhead for a single frame in packet.
|
| - const size_t overhead = GetPacketHeaderOverhead(IN_FEC_GROUP) +
|
| - GetEncryptionOverhead() +
|
| - GetStreamFrameOverhead(IN_FEC_GROUP);
|
| - size_t capacity = kDefaultMaxPacketSize - overhead;
|
| - // Now, test various sizes around this size.
|
| - for (int delta = -5; delta <= 5; ++delta) {
|
| - string data(capacity + delta, 'A');
|
| - size_t bytes_free = delta > 0 ? 0 : 0 - delta;
|
| - QuicFrame frame;
|
| - QuicIOVector io_vector(MakeIOVector(data));
|
| - ASSERT_TRUE(creator_.ConsumeData(kClientDataStreamId1, io_vector, 0u,
|
| - kOffset, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - ASSERT_TRUE(frame.stream_frame);
|
| - // BytesFree() returns bytes available for the next frame. Since stream
|
| - // frame does not grow for FEC protected packets, this should be the same
|
| - // as bytes_free (bound by 0).
|
| - EXPECT_EQ(0u, creator_.ExpansionOnNewFrame());
|
| - size_t expected_bytes_free = bytes_free > 0 ? bytes_free : 0;
|
| - EXPECT_EQ(expected_bytes_free, creator_.BytesFree()) << "delta: " << delta;
|
| - {
|
| - InSequence s;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
|
| - // Every 6th packet will generate an extra FEC packet.
|
| - if (delta == -1 || delta == 5) {
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(
|
| - Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| - }
|
| - }
|
| - creator_.Flush();
|
| - ASSERT_TRUE(serialized_packet_.encrypted_buffer);
|
| - DeleteSerializedPacket();
|
| - }
|
| -}
|
| -
|
| TEST_P(QuicPacketCreatorTest, CryptoStreamFramePacketPadding) {
|
| // Compute the total overhead for a single frame in packet.
|
| - const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP) +
|
| - GetEncryptionOverhead() +
|
| - GetStreamFrameOverhead(NOT_IN_FEC_GROUP);
|
| + const size_t overhead = GetPacketHeaderOverhead() + GetEncryptionOverhead() +
|
| + GetStreamFrameOverhead();
|
| ASSERT_GT(kMaxPacketSize, overhead);
|
| size_t capacity = kDefaultMaxPacketSize - overhead;
|
| // Now, test various sizes around this size.
|
| @@ -963,7 +664,7 @@ TEST_P(QuicPacketCreatorTest, CryptoStreamFramePacketPadding) {
|
| .WillRepeatedly(
|
| Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
|
| ASSERT_TRUE(creator_.ConsumeData(kCryptoStreamId, io_vector, 0u, kOffset,
|
| - false, true, &frame, MAY_FEC_PROTECT));
|
| + false, true, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| size_t bytes_consumed = frame.stream_frame->frame_length;
|
| EXPECT_LT(0u, bytes_consumed);
|
| @@ -984,9 +685,8 @@ TEST_P(QuicPacketCreatorTest, CryptoStreamFramePacketPadding) {
|
|
|
| TEST_P(QuicPacketCreatorTest, NonCryptoStreamFramePacketNonPadding) {
|
| // Compute the total overhead for a single frame in packet.
|
| - const size_t overhead = GetPacketHeaderOverhead(NOT_IN_FEC_GROUP) +
|
| - GetEncryptionOverhead() +
|
| - GetStreamFrameOverhead(NOT_IN_FEC_GROUP);
|
| + const size_t overhead = GetPacketHeaderOverhead() + GetEncryptionOverhead() +
|
| + GetStreamFrameOverhead();
|
| ASSERT_GT(kDefaultMaxPacketSize, overhead);
|
| size_t capacity = kDefaultMaxPacketSize - overhead;
|
| // Now, test various sizes around this size.
|
| @@ -999,8 +699,7 @@ TEST_P(QuicPacketCreatorTest, NonCryptoStreamFramePacketNonPadding) {
|
| EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
|
| ASSERT_TRUE(creator_.ConsumeData(kClientDataStreamId1, io_vector, 0u,
|
| - kOffset, false, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + kOffset, false, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| size_t bytes_consumed = frame.stream_frame->frame_length;
|
| EXPECT_LT(0u, bytes_consumed);
|
| @@ -1037,29 +736,23 @@ TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthLeastAwaiting) {
|
| EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
|
|
| - size_t max_packets_per_fec_group = 10;
|
| - creator_.set_max_packets_per_fec_group(max_packets_per_fec_group);
|
| - QuicPacketCreatorPeer::SetPacketNumber(&creator_,
|
| - 64 - max_packets_per_fec_group);
|
| + QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64);
|
| creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
|
|
| - QuicPacketCreatorPeer::SetPacketNumber(&creator_,
|
| - 64 * 256 - max_packets_per_fec_group);
|
| + QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256);
|
| creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER,
|
| QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
|
|
| - QuicPacketCreatorPeer::SetPacketNumber(
|
| - &creator_, 64 * 256 * 256 - max_packets_per_fec_group);
|
| + QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 * 256);
|
| creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
|
| QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
|
|
| - QuicPacketCreatorPeer::SetPacketNumber(
|
| - &creator_,
|
| - UINT64_C(64) * 256 * 256 * 256 * 256 - max_packets_per_fec_group);
|
| + QuicPacketCreatorPeer::SetPacketNumber(&creator_,
|
| + UINT64_C(64) * 256 * 256 * 256 * 256);
|
| creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_6BYTE_PACKET_NUMBER,
|
| QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
| @@ -1131,8 +824,7 @@ TEST_P(QuicPacketCreatorTest, ConsumeDataLargerThanOneStreamFrame) {
|
| QuicIOVector io_vector(MakeIOVector(too_long_payload));
|
| EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, true, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, true, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| size_t consumed = frame.stream_frame->frame_length;
|
| EXPECT_EQ(payload_length, consumed);
|
| @@ -1164,8 +856,8 @@ TEST_P(QuicPacketCreatorTest, AddFrameAndFlush) {
|
|
|
| QuicFrame frame;
|
| QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + ASSERT_TRUE(
|
| + creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| size_t consumed = frame.stream_frame->frame_length;
|
| EXPECT_EQ(4u, consumed);
|
| @@ -1224,8 +916,8 @@ TEST_P(QuicPacketCreatorTest, SerializeTruncatedAckFrameWithLargePacketSize) {
|
| // Make sure that an additional stream frame can be added to the packet.
|
| QuicFrame frame;
|
| QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(2u, io_vector, 0u, 0u, false, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + ASSERT_TRUE(
|
| + creator_.ConsumeData(2u, io_vector, 0u, 0u, false, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| size_t consumed = frame.stream_frame->frame_length;
|
| EXPECT_EQ(4u, consumed);
|
| @@ -1305,103 +997,6 @@ TEST_P(QuicPacketCreatorTest, EntropyFlag) {
|
| delete frames_[0].stream_frame;
|
| }
|
|
|
| -TEST_P(QuicPacketCreatorTest, ResetFecGroup) {
|
| - // Send FEC packet every 6 packets.
|
| - creator_.set_max_packets_per_fec_group(6);
|
| - // Add a stream frame and turn on FEC protection.
|
| - QuicFrame frame;
|
| - QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - // Serialize the packet.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| - creator_.Flush();
|
| -
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| - EXPECT_TRUE(creator_.IsFecGroupOpen());
|
| - // We do not have enough packets in the FEC group to trigger an FEC packet.
|
| - EXPECT_FALSE(creator_.ShouldSendFec(/*force_close=*/false));
|
| - // Should return true since there are packets in the FEC group.
|
| - EXPECT_TRUE(creator_.ShouldSendFec(/*force_close=*/true));
|
| -
|
| - // FEC group will be reset if FEC police is alarm trigger but FEC alarm does
|
| - // not fire.
|
| - EXPECT_CALL(delegate_, OnResetFecGroup()).Times(1);
|
| - creator_.set_fec_send_policy(FEC_ALARM_TRIGGER);
|
| - creator_.MaybeSendFecPacketAndCloseGroup(/*force_send_fec=*/true,
|
| - /*is_fec_timeout=*/false);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| - EXPECT_FALSE(creator_.IsFecGroupOpen());
|
| - // We do not have enough packets in the FEC group to trigger an FEC packet.
|
| - EXPECT_FALSE(creator_.ShouldSendFec(/*force_close=*/false));
|
| - // Confirm that there is no FEC packet under construction.
|
| - EXPECT_FALSE(creator_.ShouldSendFec(/*force_close=*/true));
|
| -
|
| - char buffer[kMaxPacketSize];
|
| - EXPECT_DFATAL(
|
| - QuicPacketCreatorPeer::SerializeFec(&creator_, buffer, kMaxPacketSize),
|
| - "SerializeFEC called but no group or zero packets in group.");
|
| -
|
| - // Create and send a new FEC protected packet.
|
| - ASSERT_TRUE(creator_.ConsumeData(2u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| - creator_.Flush();
|
| -
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| - EXPECT_TRUE(creator_.IsFecGroupOpen());
|
| - // We do not have enough packets in the FEC group to trigger an FEC packet.
|
| - EXPECT_FALSE(creator_.ShouldSendFec(/*force_close=*/false));
|
| - // Should return true since there are packets in the FEC group.
|
| - EXPECT_TRUE(creator_.ShouldSendFec(/*force_close=*/true));
|
| -
|
| - // Should return false since we do not have enough packets in the FEC group to
|
| - // trigger an FEC packet.
|
| - ASSERT_FALSE(creator_.ShouldSendFec(/*force_close=*/false));
|
| - // Should return true since there are packets in the FEC group.
|
| - ASSERT_TRUE(creator_.ShouldSendFec(/*force_close=*/true));
|
| -
|
| - // Change FEC policy, send FEC packet and close FEC group.
|
| - creator_.set_fec_send_policy(FEC_ANY_TRIGGER);
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
|
| - creator_.MaybeSendFecPacketAndCloseGroup(/*force_send_fec=*/true,
|
| - /*is_fec_timeout=*/false);
|
| - ASSERT_EQ(3u, serialized_packet_.packet_number);
|
| - DeleteSerializedPacket();
|
| -}
|
| -
|
| -TEST_P(QuicPacketCreatorTest, ResetFecGroupWithQueuedFrames) {
|
| - // Send FEC packet every 6 packets.
|
| - creator_.set_max_packets_per_fec_group(6);
|
| - // Add a stream frame to the creator and turn on FEC protection.
|
| - QuicFrame frame;
|
| - QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - ASSERT_TRUE(frame.stream_frame);
|
| - size_t consumed = frame.stream_frame->frame_length;
|
| - EXPECT_EQ(4u, consumed);
|
| - EXPECT_TRUE(creator_.HasPendingFrames());
|
| - EXPECT_DFATAL(QuicPacketCreatorPeer::ResetFecGroup(&creator_),
|
| - "Cannot reset FEC group with pending frames.");
|
| -
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| - creator_.Flush();
|
| - EXPECT_FALSE(creator_.HasPendingFrames());
|
| -
|
| - // FEC group will be reset if FEC police is alarm trigger but FEC alarm does
|
| - // not fire.
|
| - EXPECT_CALL(delegate_, OnResetFecGroup()).Times(1);
|
| - creator_.set_fec_send_policy(FEC_ALARM_TRIGGER);
|
| - creator_.MaybeSendFecPacketAndCloseGroup(/*force_send_fec=*/true,
|
| - /*is_fec_timeout=*/false);
|
| - EXPECT_FALSE(creator_.IsFecGroupOpen());
|
| -}
|
| -
|
| TEST_P(QuicPacketCreatorTest, SetCurrentPath) {
|
| // Current path is the default path.
|
| EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_));
|
| @@ -1411,8 +1006,8 @@ TEST_P(QuicPacketCreatorTest, SetCurrentPath) {
|
| // Add a stream frame to the creator.
|
| QuicFrame frame;
|
| QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + ASSERT_TRUE(
|
| + creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| size_t consumed = frame.stream_frame->frame_length;
|
| EXPECT_EQ(4u, consumed);
|
| @@ -1443,8 +1038,8 @@ TEST_P(QuicPacketCreatorTest, SetCurrentPath) {
|
| EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
| // Add a stream frame to the creator.
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + ASSERT_TRUE(
|
| + creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| consumed = frame.stream_frame->frame_length;
|
| EXPECT_EQ(4u, consumed);
|
| @@ -1459,95 +1054,24 @@ TEST_P(QuicPacketCreatorTest, SetCurrentPath) {
|
| QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
| }
|
|
|
| -TEST_P(QuicPacketCreatorTest, SetCurrentPathWithFec) {
|
| - // Send FEC packet every 6 packets.
|
| - creator_.set_max_packets_per_fec_group(6);
|
| - // Current path is the default path.
|
| - EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_));
|
| - EXPECT_EQ(0u, creator_.packet_number());
|
| - EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| - QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| - // Add a stream frame to the creator.
|
| - QuicFrame frame;
|
| - QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - ASSERT_TRUE(frame.stream_frame);
|
| - size_t consumed = frame.stream_frame->frame_length;
|
| - EXPECT_EQ(4u, consumed);
|
| - EXPECT_TRUE(creator_.HasPendingFrames());
|
| - EXPECT_EQ(0u, creator_.packet_number());
|
| - EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| - QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| -
|
| - // Change current path.
|
| - QuicPathId kPathId1 = 1;
|
| - EXPECT_DFATAL(creator_.SetCurrentPath(kPathId1, 1, 0),
|
| - "Unable to change paths when a packet is under construction");
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .Times(2)
|
| - .WillRepeatedly(
|
| - Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| - creator_.Flush();
|
| - EXPECT_FALSE(creator_.HasPendingFrames());
|
| - creator_.SetCurrentPath(kPathId1, 1, 0);
|
| - EXPECT_EQ(kPathId1, QuicPacketCreatorPeer::GetCurrentPath(&creator_));
|
| - EXPECT_FALSE(creator_.HasPendingFrames());
|
| - EXPECT_EQ(0u, creator_.packet_number());
|
| - EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| - QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| -
|
| - // Change current path back.
|
| - creator_.SetCurrentPath(kDefaultPathId, 3, 2);
|
| - EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_));
|
| - // FEC packet consumes a packet number.
|
| - EXPECT_EQ(2u, creator_.packet_number());
|
| - EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| - QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
| - // Add a stream frame to the creator.
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| - ASSERT_TRUE(frame.stream_frame);
|
| - consumed = frame.stream_frame->frame_length;
|
| - EXPECT_EQ(4u, consumed);
|
| - EXPECT_TRUE(creator_.HasPendingFrames());
|
| -
|
| - // Does not change current path.
|
| - creator_.SetCurrentPath(kDefaultPathId, 3, 0);
|
| - EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_));
|
| - EXPECT_TRUE(creator_.HasPendingFrames());
|
| - // FEC packet consumes a packet number.
|
| - EXPECT_EQ(2u, creator_.packet_number());
|
| - EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| - QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| -}
|
| -
|
| TEST_P(QuicPacketCreatorTest,
|
| - SetCurrentPathWithFecAndUpdatePacketSequenceNumberLength) {
|
| - // Send FEC packet every 10 packets.
|
| - size_t max_packets_per_fec_group = 10;
|
| - creator_.set_max_packets_per_fec_group(max_packets_per_fec_group);
|
| + SetCurrentPathAndUpdatePacketSequenceNumberLength) {
|
| // Current path is the default path.
|
| EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_));
|
| EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER,
|
| QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
| - QuicPacketCreatorPeer::SetPacketNumber(
|
| - &creator_, 64 * 256 - max_packets_per_fec_group - 2);
|
| + QuicPacketCreatorPeer::SetPacketNumber(&creator_, 64 * 256 - 2);
|
| // Add a stream frame to the creator and send the packet.
|
| QuicFrame frame;
|
| QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MUST_FEC_PROTECT));
|
| + ASSERT_TRUE(
|
| + creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame));
|
| EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .Times(2)
|
| + .Times(1)
|
| .WillRepeatedly(
|
| Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| creator_.Flush();
|
| - EXPECT_EQ(64 * 256 - max_packets_per_fec_group - 1, creator_.packet_number());
|
| + EXPECT_EQ(UINT64_C(64 * 256 - 1), creator_.packet_number());
|
| creator_.UpdatePacketNumberLength(2, 10000 / kDefaultMaxPacketSize);
|
| EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER,
|
| QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
| @@ -1561,8 +1085,7 @@ TEST_P(QuicPacketCreatorTest,
|
|
|
| // Change current path back.
|
| creator_.SetCurrentPath(kDefaultPathId, 2, 10000 / kDefaultMaxPacketSize);
|
| - // FEC packet consumes a packet number.
|
| - EXPECT_EQ(64 * 256 - max_packets_per_fec_group, creator_.packet_number());
|
| + EXPECT_EQ(UINT64_C(64 * 256 - 1), creator_.packet_number());
|
| EXPECT_EQ(PACKET_2BYTE_PACKET_NUMBER,
|
| QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
| }
|
| @@ -1574,8 +1097,8 @@ TEST_P(QuicPacketCreatorTest, SerializePacketOnDifferentPath) {
|
| // Add a stream frame to the creator and flush the packet.
|
| QuicFrame frame;
|
| QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + ASSERT_TRUE(
|
| + creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| size_t consumed = frame.stream_frame->frame_length;
|
| EXPECT_EQ(4u, consumed);
|
| @@ -1601,8 +1124,8 @@ TEST_P(QuicPacketCreatorTest, SerializePacketOnDifferentPath) {
|
| QuicPacketCreatorPeer::NextPacketNumberLength(&creator_));
|
|
|
| // Add a stream frame to the creator and flush the packet.
|
| - ASSERT_TRUE(creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame,
|
| - MAY_FEC_PROTECT));
|
| + ASSERT_TRUE(
|
| + creator_.ConsumeData(1u, io_vector, 0u, 0u, false, false, &frame));
|
| ASSERT_TRUE(frame.stream_frame);
|
| consumed = frame.stream_frame->frame_length;
|
| EXPECT_EQ(4u, consumed);
|
| @@ -1622,56 +1145,6 @@ TEST_P(QuicPacketCreatorTest, AddUnencryptedStreamDataClosesConnection) {
|
| "Cannot send stream data without encryption.");
|
| }
|
|
|
| -TEST_P(QuicPacketCreatorTest, DontSendUnencryptedFec) {
|
| - ValueRestore<bool> old_flag(&FLAGS_quic_no_unencrypted_fec, true);
|
| - // Send FEC packet every 6 packets.
|
| - creator_.set_max_packets_per_fec_group(6);
|
| - // Send stream data encrypted with FEC protection.
|
| - creator_.set_encryption_level(ENCRYPTION_INITIAL);
|
| - // Turn on FEC protection.
|
| - QuicFrame frame;
|
| - QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(kHeadersStreamId, io_vector, 0u, 0u, false,
|
| - false, &frame, MUST_FEC_PROTECT));
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| - // Serialize the packet.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| - creator_.Flush();
|
| -
|
| - // The creator will clear the FEC group rather than try to send without
|
| - // encryption.
|
| - creator_.set_encryption_level(ENCRYPTION_NONE);
|
| - EXPECT_CALL(delegate_, OnResetFecGroup());
|
| - creator_.MaybeSendFecPacketAndCloseGroup(true, false);
|
| -}
|
| -
|
| -TEST_P(QuicPacketCreatorTest, SerializeUnencryptedFecClosesConnection) {
|
| - ValueRestore<bool> old_flag(&FLAGS_quic_no_unencrypted_fec, true);
|
| - // Send FEC packet every 6 packets.
|
| - creator_.set_max_packets_per_fec_group(6);
|
| - // Send stream data encrypted with FEC protection.
|
| - creator_.set_encryption_level(ENCRYPTION_INITIAL);
|
| - // Turn on FEC protection.
|
| - QuicFrame frame;
|
| - QuicIOVector io_vector(MakeIOVector("test"));
|
| - ASSERT_TRUE(creator_.ConsumeData(kHeadersStreamId, io_vector, 0u, 0u, false,
|
| - false, &frame, MUST_FEC_PROTECT));
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(&creator_));
|
| - // Serialize the packet.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketCreatorTest::ClearSerializedPacket));
|
| - creator_.Flush();
|
| -
|
| - // Try to send an FEC packet unencrypted.
|
| - creator_.set_encryption_level(ENCRYPTION_NONE);
|
| - EXPECT_CALL(delegate_, OnUnrecoverableError(QUIC_UNENCRYPTED_FEC_DATA, _));
|
| - char seralized_fec_buffer[kMaxPacketSize];
|
| - EXPECT_DFATAL(QuicPacketCreatorPeer::SerializeFec(
|
| - &creator_, seralized_fec_buffer, kMaxPacketSize),
|
| - "SerializeFEC must be called with encryption.");
|
| -}
|
| -
|
| } // namespace
|
| } // namespace test
|
| } // namespace net
|
|
|