| Index: net/quic/quic_packet_generator_test.cc
|
| diff --git a/net/quic/quic_packet_generator_test.cc b/net/quic/quic_packet_generator_test.cc
|
| index e930bc4864749b2df784f3a8be3e0831d8176393..83141676c90cd83d3f08fb615feaf443343fe60b 100644
|
| --- a/net/quic/quic_packet_generator_test.cc
|
| +++ b/net/quic/quic_packet_generator_test.cc
|
| @@ -34,12 +34,6 @@ namespace net {
|
| namespace test {
|
| namespace {
|
|
|
| -const int64_t kMinFecTimeoutMs = 5u;
|
| -
|
| -static const FecSendPolicy kFecSendPolicyList[] = {
|
| - FEC_ANY_TRIGGER, FEC_ALARM_TRIGGER,
|
| -};
|
| -
|
| class MockDelegate : public QuicPacketGenerator::DelegateInterface {
|
| public:
|
| MockDelegate() {}
|
| @@ -53,7 +47,6 @@ class MockDelegate : public QuicPacketGenerator::DelegateInterface {
|
| MOCK_METHOD1(OnSerializedPacket, void(SerializedPacket* packet));
|
| MOCK_METHOD2(OnUnrecoverableError,
|
| void(QuicErrorCode, ConnectionCloseSource));
|
| - MOCK_METHOD0(OnResetFecGroup, void());
|
|
|
| void SetCanWriteAnything() {
|
| EXPECT_CALL(*this, ShouldGeneratePacket(_, _)).WillRepeatedly(Return(true));
|
| @@ -92,8 +85,7 @@ struct PacketContents {
|
| num_stop_waiting_frames(0),
|
| num_stream_frames(0),
|
| num_ping_frames(0),
|
| - num_mtu_discovery_frames(0),
|
| - fec_group(0) {}
|
| + num_mtu_discovery_frames(0) {}
|
|
|
| size_t num_ack_frames;
|
| size_t num_connection_close_frames;
|
| @@ -103,13 +95,11 @@ struct PacketContents {
|
| size_t num_stream_frames;
|
| size_t num_ping_frames;
|
| size_t num_mtu_discovery_frames;
|
| -
|
| - QuicFecGroupNumber fec_group;
|
| };
|
|
|
| } // namespace
|
|
|
| -class QuicPacketGeneratorTest : public ::testing::TestWithParam<FecSendPolicy> {
|
| +class QuicPacketGeneratorTest : public ::testing::Test {
|
| public:
|
| QuicPacketGeneratorTest()
|
| : framer_(QuicSupportedVersions(),
|
| @@ -117,7 +107,6 @@ class QuicPacketGeneratorTest : public ::testing::TestWithParam<FecSendPolicy> {
|
| Perspective::IS_CLIENT),
|
| generator_(42, &framer_, &random_, &buffer_allocator_, &delegate_),
|
| creator_(QuicPacketGeneratorPeer::GetPacketCreator(&generator_)) {
|
| - generator_.set_fec_send_policy(GetParam());
|
| // TODO(ianswett): Fix this test so it uses a non-null encrypter.
|
| FLAGS_quic_never_write_unencrypted_data = false;
|
| FLAGS_quic_no_unencrypted_fec = false;
|
| @@ -181,7 +170,6 @@ class QuicPacketGeneratorTest : public ::testing::TestWithParam<FecSendPolicy> {
|
| simple_framer_.stream_frames().size());
|
| EXPECT_EQ(contents.num_stop_waiting_frames,
|
| simple_framer_.stop_waiting_frames().size());
|
| - EXPECT_EQ(contents.fec_group, simple_framer_.header().fec_group);
|
|
|
| // From the receiver's perspective, MTU discovery frames are ping frames.
|
| EXPECT_EQ(contents.num_ping_frames + contents.num_mtu_discovery_frames,
|
| @@ -206,16 +194,6 @@ class QuicPacketGeneratorTest : public ::testing::TestWithParam<FecSendPolicy> {
|
| }
|
| }
|
|
|
| - void CheckPacketIsFec(size_t packet_index, QuicPacketNumber fec_group) {
|
| - ASSERT_GT(packets_.size(), packet_index);
|
| - const SerializedPacket& packet = packets_[packet_index];
|
| - ASSERT_TRUE(packet.retransmittable_frames.empty());
|
| - ASSERT_TRUE(packet.encrypted_buffer != nullptr);
|
| - ASSERT_TRUE(simple_framer_.ProcessPacket(
|
| - QuicEncryptedPacket(packet.encrypted_buffer, packet.encrypted_length)));
|
| - EXPECT_TRUE(simple_framer_.header().fec_flag);
|
| - }
|
| -
|
| QuicIOVector CreateData(size_t len) {
|
| data_array_.reset(new char[len]);
|
| memset(data_array_.get(), '?', len);
|
| @@ -247,19 +225,14 @@ class MockDebugDelegate : public QuicPacketCreator::DebugDelegate {
|
| MOCK_METHOD1(OnFrameAddedToPacket, void(const QuicFrame&));
|
| };
|
|
|
| -// Run all end to end tests with all supported FEC send polocies.
|
| -INSTANTIATE_TEST_CASE_P(FecSendPolicy,
|
| - QuicPacketGeneratorTest,
|
| - ::testing::ValuesIn(kFecSendPolicyList));
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, ShouldSendAck_NotWritable) {
|
| +TEST_F(QuicPacketGeneratorTest, ShouldSendAck_NotWritable) {
|
| delegate_.SetCanNotWrite();
|
|
|
| generator_.SetShouldSendAck(false);
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldNotFlush) {
|
| +TEST_F(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldNotFlush) {
|
| StrictMock<MockDebugDelegate> debug_delegate;
|
|
|
| generator_.set_debug_delegate(&debug_delegate);
|
| @@ -273,7 +246,7 @@ TEST_P(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldNotFlush) {
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldFlush) {
|
| +TEST_F(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldFlush) {
|
| delegate_.SetCanWriteOnlyNonRetransmittable();
|
|
|
| EXPECT_CALL(delegate_, PopulateAckFrame(_));
|
| @@ -288,7 +261,7 @@ TEST_P(QuicPacketGeneratorTest, ShouldSendAck_WritableAndShouldFlush) {
|
| CheckPacketContains(contents, 0);
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, ShouldSendAck_MultipleCalls) {
|
| +TEST_F(QuicPacketGeneratorTest, ShouldSendAck_MultipleCalls) {
|
| // Make sure that calling SetShouldSendAck multiple times does not result in a
|
| // crash. Previously this would result in multiple QuicFrames queued in the
|
| // packet generator, with all but the last with internal pointers to freed
|
| @@ -307,21 +280,21 @@ TEST_P(QuicPacketGeneratorTest, ShouldSendAck_MultipleCalls) {
|
| generator_.FinishBatchOperations();
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, AddControlFrame_NotWritable) {
|
| +TEST_F(QuicPacketGeneratorTest, AddControlFrame_NotWritable) {
|
| delegate_.SetCanNotWrite();
|
|
|
| generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame()));
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, AddControlFrame_OnlyAckWritable) {
|
| +TEST_F(QuicPacketGeneratorTest, AddControlFrame_OnlyAckWritable) {
|
| delegate_.SetCanWriteOnlyNonRetransmittable();
|
|
|
| generator_.AddControlFrame(QuicFrame(CreateRstStreamFrame()));
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldNotFlush) {
|
| +TEST_F(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldNotFlush) {
|
| delegate_.SetCanWriteAnything();
|
| generator_.StartBatchOperations();
|
|
|
| @@ -329,7 +302,7 @@ TEST_P(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldNotFlush) {
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, AddControlFrame_NotWritableBatchThenFlush) {
|
| +TEST_F(QuicPacketGeneratorTest, AddControlFrame_NotWritableBatchThenFlush) {
|
| delegate_.SetCanNotWrite();
|
| generator_.StartBatchOperations();
|
|
|
| @@ -348,7 +321,7 @@ TEST_P(QuicPacketGeneratorTest, AddControlFrame_NotWritableBatchThenFlush) {
|
| CheckPacketContains(contents, 0);
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldFlush) {
|
| +TEST_F(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldFlush) {
|
| delegate_.SetCanWriteAnything();
|
|
|
| EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| @@ -362,34 +335,34 @@ TEST_P(QuicPacketGeneratorTest, AddControlFrame_WritableAndShouldFlush) {
|
| CheckPacketContains(contents, 0);
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, ConsumeData_NotWritable) {
|
| +TEST_F(QuicPacketGeneratorTest, ConsumeData_NotWritable) {
|
| delegate_.SetCanNotWrite();
|
|
|
| QuicConsumedData consumed = generator_.ConsumeData(
|
| - kHeadersStreamId, MakeIOVector("foo"), 2, true, MAY_FEC_PROTECT, nullptr);
|
| + kHeadersStreamId, MakeIOVector("foo"), 2, true, nullptr);
|
| EXPECT_EQ(0u, consumed.bytes_consumed);
|
| EXPECT_FALSE(consumed.fin_consumed);
|
| EXPECT_FALSE(generator_.HasQueuedFrames());
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldNotFlush) {
|
| +TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldNotFlush) {
|
| delegate_.SetCanWriteAnything();
|
| generator_.StartBatchOperations();
|
|
|
| QuicConsumedData consumed = generator_.ConsumeData(
|
| - kHeadersStreamId, MakeIOVector("foo"), 2, true, MAY_FEC_PROTECT, nullptr);
|
| + kHeadersStreamId, MakeIOVector("foo"), 2, true, nullptr);
|
| EXPECT_EQ(3u, consumed.bytes_consumed);
|
| EXPECT_TRUE(consumed.fin_consumed);
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldFlush) {
|
| +TEST_F(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldFlush) {
|
| delegate_.SetCanWriteAnything();
|
|
|
| EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| QuicConsumedData consumed = generator_.ConsumeData(
|
| - kHeadersStreamId, MakeIOVector("foo"), 2, true, MAY_FEC_PROTECT, nullptr);
|
| + kHeadersStreamId, MakeIOVector("foo"), 2, true, nullptr);
|
| EXPECT_EQ(3u, consumed.bytes_consumed);
|
| EXPECT_TRUE(consumed.fin_consumed);
|
| EXPECT_FALSE(generator_.HasQueuedFrames());
|
| @@ -402,14 +375,14 @@ TEST_P(QuicPacketGeneratorTest, ConsumeData_WritableAndShouldFlush) {
|
| // Test the behavior of ConsumeData when the data consumed is for the crypto
|
| // handshake stream. Ensure that the packet is always sent and padded even if
|
| // the generator operates in batch mode.
|
| -TEST_P(QuicPacketGeneratorTest, ConsumeData_Handshake) {
|
| +TEST_F(QuicPacketGeneratorTest, ConsumeData_Handshake) {
|
| delegate_.SetCanWriteAnything();
|
| generator_.StartBatchOperations();
|
|
|
| EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| QuicConsumedData consumed = generator_.ConsumeData(
|
| - kCryptoStreamId, MakeIOVector("foo"), 0, false, MAY_FEC_PROTECT, nullptr);
|
| + kCryptoStreamId, MakeIOVector("foo"), 0, false, nullptr);
|
| EXPECT_EQ(3u, consumed.bytes_consumed);
|
| EXPECT_FALSE(generator_.HasQueuedFrames());
|
|
|
| @@ -422,34 +395,34 @@ TEST_P(QuicPacketGeneratorTest, ConsumeData_Handshake) {
|
| EXPECT_EQ(kDefaultMaxPacketSize, packets_[0].encrypted_length);
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, ConsumeData_EmptyData) {
|
| +TEST_F(QuicPacketGeneratorTest, ConsumeData_EmptyData) {
|
| EXPECT_DFATAL(generator_.ConsumeData(kHeadersStreamId, MakeIOVector(""), 0,
|
| - false, MAY_FEC_PROTECT, nullptr),
|
| + false, nullptr),
|
| "Attempt to consume empty data without FIN.");
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest,
|
| +TEST_F(QuicPacketGeneratorTest,
|
| ConsumeDataMultipleTimes_WritableAndShouldNotFlush) {
|
| delegate_.SetCanWriteAnything();
|
| generator_.StartBatchOperations();
|
|
|
| generator_.ConsumeData(kHeadersStreamId, MakeIOVector("foo"), 2, true,
|
| - MAY_FEC_PROTECT, nullptr);
|
| - QuicConsumedData consumed = generator_.ConsumeData(
|
| - 3, MakeIOVector("quux"), 7, false, MAY_FEC_PROTECT, nullptr);
|
| + nullptr);
|
| + QuicConsumedData consumed =
|
| + generator_.ConsumeData(3, MakeIOVector("quux"), 7, false, nullptr);
|
| EXPECT_EQ(4u, consumed.bytes_consumed);
|
| EXPECT_FALSE(consumed.fin_consumed);
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, ConsumeData_BatchOperations) {
|
| +TEST_F(QuicPacketGeneratorTest, ConsumeData_BatchOperations) {
|
| delegate_.SetCanWriteAnything();
|
| generator_.StartBatchOperations();
|
|
|
| generator_.ConsumeData(kHeadersStreamId, MakeIOVector("foo"), 2, true,
|
| - MAY_FEC_PROTECT, nullptr);
|
| - QuicConsumedData consumed = generator_.ConsumeData(
|
| - 3, MakeIOVector("quux"), 7, false, MAY_FEC_PROTECT, nullptr);
|
| + nullptr);
|
| + QuicConsumedData consumed =
|
| + generator_.ConsumeData(3, MakeIOVector("quux"), 7, false, nullptr);
|
| EXPECT_EQ(4u, consumed.bytes_consumed);
|
| EXPECT_FALSE(consumed.fin_consumed);
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| @@ -465,233 +438,7 @@ TEST_P(QuicPacketGeneratorTest, ConsumeData_BatchOperations) {
|
| CheckPacketContains(contents, 0);
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, ConsumeDataFecOnMaxGroupSize) {
|
| - delegate_.SetCanWriteAnything();
|
| -
|
| - // Send FEC every two packets.
|
| - creator_->set_max_packets_per_fec_group(2);
|
| -
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - // FEC packet is not sent when send policy is FEC_ALARM_TRIGGER, but FEC
|
| - // group is closed.
|
| - EXPECT_CALL(delegate_, OnResetFecGroup()).Times(1);
|
| - } else {
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| -
|
| - // Send enough data to create 3 packets: two full and one partial. Send with
|
| - // MUST_FEC_PROTECT flag.
|
| - size_t data_len = 2 * kDefaultMaxPacketSize + 100;
|
| - QuicConsumedData consumed = generator_.ConsumeData(
|
| - 3, CreateData(data_len), 0, true, MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| - EXPECT_TRUE(consumed.fin_consumed);
|
| - EXPECT_FALSE(generator_.HasQueuedFrames());
|
| -
|
| - CheckPacketHasSingleStreamFrame(0);
|
| - CheckPacketHasSingleStreamFrame(1);
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - // FEC packet is not sent when send policy is FEC_ALARM_TRIGGER.
|
| - CheckPacketHasSingleStreamFrame(2);
|
| - } else {
|
| - CheckPacketIsFec(2, 1);
|
| - CheckPacketHasSingleStreamFrame(3);
|
| - }
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // If FEC send policy is FEC_ANY_TRIGGER, then the FEC packet under
|
| - // construction will be sent when one more packet is sent (since FEC group
|
| - // size is 2), or when OnFecTimeout is called. Send more data with
|
| - // MAY_FEC_PROTECT. This packet should also be protected, and FEC packet is
|
| - // sent since FEC group size is reached.
|
| - //
|
| - // If FEC send policy is FEC_ALARM_TRIGGER, FEC group is closed when the group
|
| - // size is reached. FEC packet is not sent.
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - EXPECT_CALL(delegate_, OnResetFecGroup()).Times(1);
|
| - } else {
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - }
|
| - consumed = generator_.ConsumeData(5, CreateData(1u), 0, true, MAY_FEC_PROTECT,
|
| - nullptr);
|
| - EXPECT_EQ(1u, consumed.bytes_consumed);
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - CheckPacketHasSingleStreamFrame(3);
|
| - } else {
|
| - CheckPacketHasSingleStreamFrame(4);
|
| - CheckPacketIsFec(5, 4);
|
| - }
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, ConsumeDataSendsFecOnTimeout) {
|
| - delegate_.SetCanWriteAnything();
|
| - creator_->set_max_packets_per_fec_group(1000);
|
| -
|
| - // Send data with MUST_FEC_PROTECT flag. No FEC packet is emitted, but the
|
| - // creator FEC protects all data.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - QuicConsumedData consumed = generator_.ConsumeData(3, CreateData(1u), 0, true,
|
| - MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(1u, consumed.bytes_consumed);
|
| - EXPECT_TRUE(consumed.fin_consumed);
|
| - CheckPacketHasSingleStreamFrame(0);
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Send more data with MAY_FEC_PROTECT. This packet should also be protected,
|
| - // and FEC packet is not yet sent.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - consumed = generator_.ConsumeData(5, CreateData(1u), 0, true, MAY_FEC_PROTECT,
|
| - nullptr);
|
| - EXPECT_EQ(1u, consumed.bytes_consumed);
|
| - CheckPacketHasSingleStreamFrame(1);
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Calling OnFecTimeout should cause the FEC packet to be emitted.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - generator_.OnFecTimeout();
|
| - CheckPacketIsFec(2, 1);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Subsequent data is protected under the next FEC group. Send enough data to
|
| - // create 2 more packets: one full and one partial.
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - size_t data_len = kDefaultMaxPacketSize + 1;
|
| - consumed = generator_.ConsumeData(7, CreateData(data_len), 0, true,
|
| - MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| - EXPECT_TRUE(consumed.fin_consumed);
|
| - CheckPacketHasSingleStreamFrame(3);
|
| - CheckPacketHasSingleStreamFrame(4);
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Calling OnFecTimeout should cause the FEC packet to be emitted.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - generator_.OnFecTimeout();
|
| - CheckPacketIsFec(5, 4);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, GetFecTimeoutFiniteOnlyOnFirstPacketInGroup) {
|
| - delegate_.SetCanWriteAnything();
|
| - creator_->set_max_packets_per_fec_group(6);
|
| -
|
| - // Send enough data to create 2 packets: one full and one partial. Send with
|
| - // MUST_FEC_PROTECT flag. No FEC packet is emitted yet, but the creator FEC
|
| - // protects all data.
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - size_t data_len = 1 * kDefaultMaxPacketSize + 100;
|
| - QuicConsumedData consumed = generator_.ConsumeData(
|
| - 3, CreateData(data_len), 0, true, MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| - EXPECT_TRUE(consumed.fin_consumed);
|
| - EXPECT_FALSE(generator_.HasQueuedFrames());
|
| - CheckPacketHasSingleStreamFrame(0);
|
| - CheckPacketHasSingleStreamFrame(1);
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // GetFecTimeout returns finite timeout only for first packet in group.
|
| - EXPECT_EQ(QuicTime::Delta::FromMilliseconds(kMinFecTimeoutMs),
|
| - generator_.GetFecTimeout(/*packet_number=*/1u));
|
| - EXPECT_EQ(QuicTime::Delta::Infinite(),
|
| - generator_.GetFecTimeout(/*packet_number=*/2u));
|
| -
|
| - // Send more data with MAY_FEC_PROTECT. This packet should also be protected,
|
| - // and FEC packet is not yet sent.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - consumed = generator_.ConsumeData(5, CreateData(1u), 0, true, MAY_FEC_PROTECT,
|
| - nullptr);
|
| - CheckPacketHasSingleStreamFrame(2);
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // GetFecTimeout returns finite timeout only for first packet in group.
|
| - EXPECT_EQ(QuicTime::Delta::Infinite(),
|
| - generator_.GetFecTimeout(/*packet_number=*/3u));
|
| -
|
| - // Calling OnFecTimeout should cause the FEC packet to be emitted.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - generator_.OnFecTimeout();
|
| - CheckPacketIsFec(3, /*fec_group=*/1u);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Subsequent data is protected under the next FEC group. Send enough data to
|
| - // create 2 more packets: one full and one partial.
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - data_len = kDefaultMaxPacketSize + 1u;
|
| - consumed = generator_.ConsumeData(7, CreateData(data_len), 0, true,
|
| - MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| - EXPECT_TRUE(consumed.fin_consumed);
|
| - CheckPacketHasSingleStreamFrame(4);
|
| - CheckPacketHasSingleStreamFrame(5);
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // GetFecTimeout returns finite timeout for first packet in the new group.
|
| - EXPECT_EQ(QuicTime::Delta::FromMilliseconds(kMinFecTimeoutMs),
|
| - generator_.GetFecTimeout(/*packet_number=*/5u));
|
| - EXPECT_EQ(QuicTime::Delta::Infinite(),
|
| - generator_.GetFecTimeout(/*packet_number=*/6u));
|
| -
|
| - // Calling OnFecTimeout should cause the FEC packet to be emitted.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - generator_.OnFecTimeout();
|
| - CheckPacketIsFec(6, /*fec_group=*/5u);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Send more data with MAY_FEC_PROTECT. No FEC protection, so GetFecTimeout
|
| - // returns infinite.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - consumed = generator_.ConsumeData(9, CreateData(1u), 0, true, MAY_FEC_PROTECT,
|
| - nullptr);
|
| - CheckPacketHasSingleStreamFrame(7);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| - EXPECT_EQ(QuicTime::Delta::Infinite(),
|
| - generator_.GetFecTimeout(/*packet_number=*/8u));
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, ConsumeData_FramesPreviouslyQueued) {
|
| +TEST_F(QuicPacketGeneratorTest, ConsumeData_FramesPreviouslyQueued) {
|
| // Set the packet size be enough for two stream frames with 0 stream offset,
|
| // but not enough for a stream frame of 0 offset and one with non-zero offset.
|
| size_t length =
|
| @@ -716,9 +463,8 @@ TEST_P(QuicPacketGeneratorTest, ConsumeData_FramesPreviouslyQueued) {
|
| generator_.StartBatchOperations();
|
| // Queue enough data to prevent a stream frame with a non-zero offset from
|
| // fitting.
|
| - QuicConsumedData consumed =
|
| - generator_.ConsumeData(kHeadersStreamId, MakeIOVector("foo"), 0, false,
|
| - MAY_FEC_PROTECT, nullptr);
|
| + QuicConsumedData consumed = generator_.ConsumeData(
|
| + kHeadersStreamId, MakeIOVector("foo"), 0, false, nullptr);
|
| EXPECT_EQ(3u, consumed.bytes_consumed);
|
| EXPECT_FALSE(consumed.fin_consumed);
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| @@ -726,7 +472,7 @@ TEST_P(QuicPacketGeneratorTest, ConsumeData_FramesPreviouslyQueued) {
|
| // This frame will not fit with the existing frame, causing the queued frame
|
| // to be serialized, and it will be added to a new open packet.
|
| consumed = generator_.ConsumeData(kHeadersStreamId, MakeIOVector("bar"), 3,
|
| - true, MAY_FEC_PROTECT, nullptr);
|
| + true, nullptr);
|
| EXPECT_EQ(3u, consumed.bytes_consumed);
|
| EXPECT_TRUE(consumed.fin_consumed);
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| @@ -740,554 +486,7 @@ TEST_P(QuicPacketGeneratorTest, ConsumeData_FramesPreviouslyQueued) {
|
| CheckPacketContains(contents, 1);
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, NoFecPacketSentWhenBatchEnds) {
|
| - delegate_.SetCanWriteAnything();
|
| - creator_->set_max_packets_per_fec_group(6);
|
| -
|
| - generator_.StartBatchOperations();
|
| -
|
| - generator_.ConsumeData(3, MakeIOVector("foo"), 2, true, MUST_FEC_PROTECT,
|
| - nullptr);
|
| - QuicConsumedData consumed = generator_.ConsumeData(
|
| - 5, MakeIOVector("quux"), 7, false, MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(4u, consumed.bytes_consumed);
|
| - EXPECT_FALSE(consumed.fin_consumed);
|
| - EXPECT_TRUE(generator_.HasQueuedFrames());
|
| -
|
| - // Now both frames will be flushed out, but FEC packet is not yet sent.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - generator_.FinishBatchOperations();
|
| - EXPECT_FALSE(generator_.HasQueuedFrames());
|
| -
|
| - PacketContents contents;
|
| - contents.num_stream_frames = 2u;
|
| - contents.fec_group = 1u;
|
| - CheckPacketContains(contents, 0);
|
| -
|
| - // Forcing FEC timeout causes FEC packet to be emitted.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - generator_.OnFecTimeout();
|
| - CheckPacketIsFec(1, /*fec_group=*/1u);
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, FecTimeoutOnRttChange) {
|
| - EXPECT_EQ(QuicTime::Delta::Zero(),
|
| - QuicPacketCreatorPeer::GetFecTimeout(creator_));
|
| - generator_.OnRttChange(QuicTime::Delta::FromMilliseconds(300));
|
| - EXPECT_EQ(QuicTime::Delta::FromMilliseconds(150),
|
| - QuicPacketCreatorPeer::GetFecTimeout(creator_));
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, FecGroupSizeOnCongestionWindowChange) {
|
| - delegate_.SetCanWriteAnything();
|
| - creator_->set_max_packets_per_fec_group(50);
|
| - EXPECT_EQ(50u, creator_->max_packets_per_fec_group());
|
| - EXPECT_FALSE(creator_->IsFecGroupOpen());
|
| -
|
| - // On reduced cwnd.
|
| - generator_.OnCongestionWindowChange(7);
|
| - EXPECT_EQ(3u, creator_->max_packets_per_fec_group());
|
| -
|
| - // On increased cwnd.
|
| - generator_.OnCongestionWindowChange(100);
|
| - EXPECT_EQ(50u, creator_->max_packets_per_fec_group());
|
| -
|
| - // On collapsed cwnd.
|
| - generator_.OnCongestionWindowChange(1);
|
| - EXPECT_EQ(2u, creator_->max_packets_per_fec_group());
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, FecGroupSizeChangeWithOpenGroup) {
|
| - delegate_.SetCanWriteAnything();
|
| - generator_.StartBatchOperations();
|
| - creator_->set_max_packets_per_fec_group(50);
|
| - EXPECT_EQ(50u, creator_->max_packets_per_fec_group());
|
| - EXPECT_FALSE(creator_->IsFecGroupOpen());
|
| -
|
| - // Send enough data to create 4 packets with MUST_FEC_PROTECT flag. 3 packets
|
| - // are sent, one is queued in the creator.
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - size_t data_len = 3 * kDefaultMaxPacketSize + 1;
|
| - QuicConsumedData consumed = generator_.ConsumeData(
|
| - 7, CreateData(data_len), 0, true, MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| - EXPECT_TRUE(creator_->IsFecGroupOpen());
|
| -
|
| - // Change FEC groupsize.
|
| - generator_.OnCongestionWindowChange(2);
|
| - EXPECT_EQ(2u, creator_->max_packets_per_fec_group());
|
| -
|
| - // If FEC send policy is FEC_ANY_TRIGGER, then send enough data to trigger one
|
| - // unprotected data packet, causing the FEC packet to also be sent.
|
| - //
|
| - // If FEC send policy is FEC_ALARM_TRIGGER, FEC group is closed and FEC packet
|
| - // is not sent.
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - EXPECT_CALL(delegate_, OnResetFecGroup()).Times(1);
|
| - } else {
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - }
|
| - consumed = generator_.ConsumeData(7, CreateData(kDefaultMaxPacketSize), 0,
|
| - true, MAY_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(kDefaultMaxPacketSize, consumed.bytes_consumed);
|
| - if (generator_.fec_send_policy() == FEC_ANY_TRIGGER) {
|
| - // Verify that one FEC packet was sent.
|
| - CheckPacketIsFec(4, /*fec_group=*/1u);
|
| - }
|
| - EXPECT_FALSE(creator_->IsFecGroupOpen());
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, SwitchFecOnOff) {
|
| - delegate_.SetCanWriteAnything();
|
| - creator_->set_max_packets_per_fec_group(2);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Send one unprotected data packet.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - QuicConsumedData consumed = generator_.ConsumeData(5, CreateData(1u), 0, true,
|
| - MAY_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(1u, consumed.bytes_consumed);
|
| - EXPECT_FALSE(generator_.HasQueuedFrames());
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| - // Verify that one data packet was sent.
|
| - PacketContents contents;
|
| - contents.num_stream_frames = 1;
|
| - CheckPacketContains(contents, 0);
|
| -
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - // If FEC send policy is FEC_ALARM_TRIGGER, FEC group is closed.
|
| - EXPECT_CALL(delegate_, OnResetFecGroup()).Times(1);
|
| - } else {
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - // Send enough data to create 3 packets with MUST_FEC_PROTECT flag.
|
| - size_t data_len = 2 * kDefaultMaxPacketSize + 100;
|
| - consumed = generator_.ConsumeData(7, CreateData(data_len), 0, true,
|
| - MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| - EXPECT_FALSE(generator_.HasQueuedFrames());
|
| -
|
| - // If FEC send policy is FEC_ANY_TRIGGER, verify that packets sent were 3 data
|
| - // and 1 FEC.
|
| - //
|
| - // If FEC send policy is FEC_ALARM_TRIGGER, verify that packets sent were 3
|
| - // data and FEC group is closed.
|
| - CheckPacketHasSingleStreamFrame(1);
|
| - CheckPacketHasSingleStreamFrame(2);
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - CheckPacketHasSingleStreamFrame(3);
|
| - } else {
|
| - CheckPacketIsFec(3, /*fec_group=*/2u);
|
| - CheckPacketHasSingleStreamFrame(4);
|
| - }
|
| -
|
| - // Calling OnFecTimeout should emit the pending FEC packet.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - generator_.OnFecTimeout();
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - CheckPacketIsFec(4, /*fec_group=*/4u);
|
| - } else {
|
| - CheckPacketIsFec(5, /*fec_group=*/5u);
|
| - }
|
| -
|
| - // Send one unprotected data packet.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - consumed = generator_.ConsumeData(7, CreateData(1u), 0, true, MAY_FEC_PROTECT,
|
| - nullptr);
|
| - EXPECT_EQ(1u, consumed.bytes_consumed);
|
| - EXPECT_FALSE(generator_.HasQueuedFrames());
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| - // Verify that one unprotected data packet was sent.
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - CheckPacketContains(contents, 5);
|
| - } else {
|
| - CheckPacketContains(contents, 6);
|
| - }
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, SwitchFecOnWithPendingFrameInCreator) {
|
| - delegate_.SetCanWriteAnything();
|
| - // Enable FEC.
|
| - creator_->set_max_packets_per_fec_group(2);
|
| -
|
| - generator_.StartBatchOperations();
|
| - // Queue enough data to prevent a stream frame with a non-zero offset from
|
| - // fitting.
|
| - QuicConsumedData consumed = generator_.ConsumeData(7, CreateData(1u), 0, true,
|
| - MAY_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(1u, consumed.bytes_consumed);
|
| - EXPECT_TRUE(creator_->HasPendingFrames());
|
| -
|
| - // Queue protected data for sending. Should cause queued frames to be flushed.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| - consumed = generator_.ConsumeData(7, CreateData(1u), 0, true,
|
| - MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(1u, consumed.bytes_consumed);
|
| - PacketContents contents;
|
| - contents.num_stream_frames = 1;
|
| - // Transmitted packet was not FEC protected.
|
| - CheckPacketContains(contents, 0);
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| - EXPECT_TRUE(creator_->HasPendingFrames());
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, SwitchFecOnWithPendingFramesInGenerator) {
|
| - // Enable FEC.
|
| - creator_->set_max_packets_per_fec_group(2);
|
| -
|
| - // Queue control frames in generator.
|
| - delegate_.SetCanNotWrite();
|
| - generator_.SetShouldSendAck(true);
|
| - delegate_.SetCanWriteAnything();
|
| - generator_.StartBatchOperations();
|
| -
|
| - // Set up frames to write into the creator when control frames are written.
|
| - EXPECT_CALL(delegate_, PopulateAckFrame(_));
|
| - EXPECT_CALL(delegate_, PopulateStopWaitingFrame(_));
|
| -
|
| - // Generator should have queued control frames, and creator should be empty.
|
| - EXPECT_TRUE(generator_.HasQueuedFrames());
|
| - EXPECT_FALSE(creator_->HasPendingFrames());
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Queue protected data for sending. Should cause queued frames to be flushed.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - QuicConsumedData consumed = generator_.ConsumeData(7, CreateData(1u), 0, true,
|
| - MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(1u, consumed.bytes_consumed);
|
| - PacketContents contents;
|
| - contents.num_ack_frames = 1;
|
| - contents.num_stop_waiting_frames = 1;
|
| - CheckPacketContains(contents, 0);
|
| -
|
| - // FEC protection should be on in creator.
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, SwitchFecOnOffWithSubsequentFramesProtected) {
|
| - delegate_.SetCanWriteAnything();
|
| -
|
| - // Enable FEC.
|
| - creator_->set_max_packets_per_fec_group(2);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Queue stream frame to be protected in creator.
|
| - generator_.StartBatchOperations();
|
| - QuicConsumedData consumed = generator_.ConsumeData(5, CreateData(1u), 0, true,
|
| - MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(1u, consumed.bytes_consumed);
|
| - // Creator has a pending protected frame.
|
| - EXPECT_TRUE(creator_->HasPendingFrames());
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Add enough unprotected data to exceed size of current packet, so that
|
| - // current packet is sent. Both frames will be sent out in a single packet.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - size_t data_len = kDefaultMaxPacketSize;
|
| - consumed = generator_.ConsumeData(5, CreateData(data_len), 0, true,
|
| - MAY_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| - PacketContents contents;
|
| - contents.num_stream_frames = 2u;
|
| - contents.fec_group = 1u;
|
| - CheckPacketContains(contents, 0);
|
| - // FEC protection should still be on in creator.
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, SwitchFecOnOffWithSubsequentPacketsProtected) {
|
| - delegate_.SetCanWriteAnything();
|
| -
|
| - // Enable FEC.
|
| - creator_->set_max_packets_per_fec_group(2);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Send first packet, FEC protected.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - QuicConsumedData consumed = generator_.ConsumeData(5, CreateData(1u), 0, true,
|
| - MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(1u, consumed.bytes_consumed);
|
| - PacketContents contents;
|
| - contents.num_stream_frames = 1u;
|
| - contents.fec_group = 1u;
|
| - CheckPacketContains(contents, 0);
|
| -
|
| - // FEC should still be on in creator.
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Send unprotected data to cause second packet to be sent, which gets
|
| - // protected because it happens to fall within an open FEC group. Data packet
|
| - // will be followed by FEC packet.
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - EXPECT_CALL(delegate_, OnResetFecGroup()).Times(1);
|
| - } else {
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - }
|
| - consumed = generator_.ConsumeData(5, CreateData(1u), 0, true, MAY_FEC_PROTECT,
|
| - nullptr);
|
| - EXPECT_EQ(1u, consumed.bytes_consumed);
|
| - contents.num_stream_frames = 1u;
|
| - CheckPacketContains(contents, 1);
|
| - if (generator_.fec_send_policy() == FEC_ANY_TRIGGER) {
|
| - // FEC packet is sent when send policy is FEC_ANY_TRIGGER.
|
| - CheckPacketIsFec(2, /*fec_group=*/1u);
|
| - }
|
| -
|
| - // FEC protection should be off in creator.
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, SwitchFecOnOffThenOnWithCreatorProtectionOn) {
|
| - delegate_.SetCanWriteAnything();
|
| - generator_.StartBatchOperations();
|
| -
|
| - // Enable FEC.
|
| - creator_->set_max_packets_per_fec_group(2);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Queue one byte of FEC protected data.
|
| - QuicConsumedData consumed = generator_.ConsumeData(5, CreateData(1u), 0, true,
|
| - MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_TRUE(creator_->HasPendingFrames());
|
| -
|
| - // Add more unprotected data causing first packet to be sent, FEC protected.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - size_t data_len = kDefaultMaxPacketSize;
|
| - consumed = generator_.ConsumeData(5, CreateData(data_len), 0, true,
|
| - MAY_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| - PacketContents contents;
|
| - contents.num_stream_frames = 2u;
|
| - contents.fec_group = 1u;
|
| - CheckPacketContains(contents, 0);
|
| -
|
| - // FEC group is still open in creator.
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Add data that should be protected, large enough to cause second packet to
|
| - // be sent. Data packet should be followed by FEC packet.
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - EXPECT_CALL(delegate_, OnResetFecGroup()).Times(1);
|
| - } else {
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - }
|
| - consumed = generator_.ConsumeData(5, CreateData(data_len), 0, true,
|
| - MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| - CheckPacketContains(contents, 1);
|
| - if (generator_.fec_send_policy() == FEC_ANY_TRIGGER) {
|
| - // FEC packet is sent when send policy is FEC_ANY_TRIGGER.
|
| - CheckPacketIsFec(2, /*fec_group=*/1u);
|
| - }
|
| -
|
| - // FEC protection should remain on in creator.
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, ResetFecGroupNoTimeout) {
|
| - delegate_.SetCanWriteAnything();
|
| - // Send FEC packet after 2 packets.
|
| - creator_->set_max_packets_per_fec_group(2);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Send two packets so that when this data is consumed, two packets are sent
|
| - // out. In FEC_TRIGGER_ANY, this will cause an FEC packet to be sent out and
|
| - // with FEC_TRIGGER_ALARM, this will cause a Reset to be called. In both
|
| - // cases, the creator's fec protection will be turned off afterwards.
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - // FEC packet is not sent when send policy is FEC_ALARM_TRIGGER, but FEC
|
| - // group is closed.
|
| - EXPECT_CALL(delegate_, OnResetFecGroup()).Times(1);
|
| - } else {
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - // Fin Packet.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - size_t data_len = 2 * kDefaultMaxPacketSize;
|
| - QuicConsumedData consumed = generator_.ConsumeData(
|
| - 5, CreateData(data_len), 0, true, MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| - EXPECT_TRUE(consumed.fin_consumed);
|
| - EXPECT_FALSE(generator_.HasQueuedFrames());
|
| - CheckPacketHasSingleStreamFrame(0);
|
| - CheckPacketHasSingleStreamFrame(1);
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - // FEC packet is not sent when send policy is FEC_ALARM_TRIGGER.
|
| - CheckPacketHasSingleStreamFrame(2);
|
| - } else {
|
| - // FEC packet is sent after 2 packets and when send policy is
|
| - // FEC_ANY_TRIGGER.
|
| - CheckPacketIsFec(2, 1);
|
| - CheckPacketHasSingleStreamFrame(3);
|
| - }
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Do the same send (with MUST_FEC_PROTECT) on a different stream id.
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - // FEC packet is sent after 2 packets and when send policy is
|
| - // FEC_ANY_TRIGGER. When policy is FEC_ALARM_TRIGGER, FEC group is closed
|
| - // and FEC packet is not sent.
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - EXPECT_CALL(delegate_, OnResetFecGroup()).Times(1);
|
| - } else {
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - // FEC packet is sent after 2 packets and when send policy is
|
| - // FEC_ANY_TRIGGER. When policy is FEC_ALARM_TRIGGER, FEC group is closed
|
| - // and FEC packet is not sent.
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - EXPECT_CALL(delegate_, OnResetFecGroup()).Times(1);
|
| - } else {
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - }
|
| - consumed = generator_.ConsumeData(7, CreateData(data_len), 0, true,
|
| - MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| - EXPECT_TRUE(consumed.fin_consumed);
|
| - EXPECT_FALSE(generator_.HasQueuedFrames());
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - CheckPacketHasSingleStreamFrame(3);
|
| - CheckPacketHasSingleStreamFrame(4);
|
| - CheckPacketHasSingleStreamFrame(5);
|
| - } else {
|
| - CheckPacketHasSingleStreamFrame(4);
|
| - // FEC packet is sent after 2 packets and when send policy is
|
| - // FEC_ANY_TRIGGER.
|
| - CheckPacketIsFec(5, 4);
|
| - CheckPacketHasSingleStreamFrame(6);
|
| - CheckPacketHasSingleStreamFrame(7);
|
| - // FEC packet is sent after 2 packets and when send policy is
|
| - // FEC_ANY_TRIGGER.
|
| - CheckPacketIsFec(8, 7);
|
| - }
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Do the another send (with MAY_FEC_PROTECT) on a different stream id, which
|
| - // should not produce an FEC packet because the last FEC group has been
|
| - // closed.
|
| - {
|
| - InSequence dummy;
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - }
|
| - consumed = generator_.ConsumeData(9, CreateData(data_len), 0, true,
|
| - MAY_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| - EXPECT_TRUE(consumed.fin_consumed);
|
| - EXPECT_FALSE(generator_.HasQueuedFrames());
|
| - if (generator_.fec_send_policy() == FEC_ALARM_TRIGGER) {
|
| - CheckPacketHasSingleStreamFrame(6);
|
| - CheckPacketHasSingleStreamFrame(7);
|
| - CheckPacketHasSingleStreamFrame(8);
|
| - } else {
|
| - CheckPacketHasSingleStreamFrame(9);
|
| - CheckPacketHasSingleStreamFrame(10);
|
| - CheckPacketHasSingleStreamFrame(11);
|
| - }
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -}
|
| -
|
| -// 1. Create and send one packet with MUST_FEC_PROTECT.
|
| -// 2. Call FecTimeout, expect FEC packet is sent.
|
| -// 3. Do the same thing over again, with a different stream id.
|
| -TEST_P(QuicPacketGeneratorTest, FecPacketSentOnFecTimeout) {
|
| - delegate_.SetCanWriteAnything();
|
| - creator_->set_max_packets_per_fec_group(1000);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - for (int i = 1; i < 4; i = i + 2) {
|
| - // Send data with MUST_FEC_PROTECT flag. No FEC packet is emitted, but the
|
| - // creator FEC protects all data.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - QuicConsumedData consumed = generator_.ConsumeData(
|
| - i + 2, CreateData(1u), 0, true, MUST_FEC_PROTECT, nullptr);
|
| - EXPECT_EQ(1u, consumed.bytes_consumed);
|
| - EXPECT_TRUE(consumed.fin_consumed);
|
| - CheckPacketHasSingleStreamFrame(0);
|
| - EXPECT_TRUE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| -
|
| - // Calling OnFecTimeout should cause the FEC packet to be emitted.
|
| - EXPECT_CALL(delegate_, OnSerializedPacket(_))
|
| - .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket));
|
| - generator_.OnFecTimeout();
|
| - CheckPacketIsFec(i, i);
|
| - EXPECT_FALSE(QuicPacketCreatorPeer::IsFecProtected(creator_));
|
| - }
|
| -}
|
| -
|
| -TEST_P(QuicPacketGeneratorTest, NotWritableThenBatchOperations) {
|
| +TEST_F(QuicPacketGeneratorTest, NotWritableThenBatchOperations) {
|
| delegate_.SetCanNotWrite();
|
|
|
| generator_.SetShouldSendAck(false);
|
| @@ -1302,8 +501,7 @@ TEST_P(QuicPacketGeneratorTest, NotWritableThenBatchOperations) {
|
| EXPECT_CALL(delegate_, PopulateAckFrame(_));
|
|
|
| // Send some data and a control frame
|
| - generator_.ConsumeData(3, MakeIOVector("quux"), 7, false, MAY_FEC_PROTECT,
|
| - nullptr);
|
| + generator_.ConsumeData(3, MakeIOVector("quux"), 7, false, nullptr);
|
| generator_.AddControlFrame(QuicFrame(CreateGoAwayFrame()));
|
|
|
| // All five frames will be flushed out in a single packet.
|
| @@ -1320,7 +518,7 @@ TEST_P(QuicPacketGeneratorTest, NotWritableThenBatchOperations) {
|
| CheckPacketContains(contents, 0);
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, NotWritableThenBatchOperations2) {
|
| +TEST_F(QuicPacketGeneratorTest, NotWritableThenBatchOperations2) {
|
| delegate_.SetCanNotWrite();
|
|
|
| generator_.SetShouldSendAck(false);
|
| @@ -1345,8 +543,8 @@ TEST_P(QuicPacketGeneratorTest, NotWritableThenBatchOperations2) {
|
|
|
| // Send enough data to exceed one packet
|
| size_t data_len = kDefaultMaxPacketSize + 100;
|
| - QuicConsumedData consumed = generator_.ConsumeData(
|
| - 3, CreateData(data_len), 0, true, MAY_FEC_PROTECT, nullptr);
|
| + QuicConsumedData consumed =
|
| + generator_.ConsumeData(3, CreateData(data_len), 0, true, nullptr);
|
| EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| EXPECT_TRUE(consumed.fin_consumed);
|
| generator_.AddControlFrame(QuicFrame(CreateGoAwayFrame()));
|
| @@ -1368,7 +566,7 @@ TEST_P(QuicPacketGeneratorTest, NotWritableThenBatchOperations2) {
|
| CheckPacketContains(contents2, 1);
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, TestConnectionIdLength) {
|
| +TEST_F(QuicPacketGeneratorTest, TestConnectionIdLength) {
|
| generator_.SetConnectionIdLength(0);
|
| EXPECT_EQ(PACKET_0BYTE_CONNECTION_ID, creator_->connection_id_length());
|
| generator_.SetConnectionIdLength(1);
|
| @@ -1393,7 +591,7 @@ TEST_P(QuicPacketGeneratorTest, TestConnectionIdLength) {
|
|
|
| // Test whether SetMaxPacketLength() works in the situation when the queue is
|
| // empty, and we send three packets worth of data.
|
| -TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Initial) {
|
| +TEST_F(QuicPacketGeneratorTest, SetMaxPacketLength_Initial) {
|
| delegate_.SetCanWriteAnything();
|
|
|
| // Send enough data for three packets.
|
| @@ -1409,7 +607,7 @@ TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Initial) {
|
| QuicConsumedData consumed =
|
| generator_.ConsumeData(kHeadersStreamId, CreateData(data_len),
|
| /*offset=*/2,
|
| - /*fin=*/true, MAY_FEC_PROTECT, nullptr);
|
| + /*fin=*/true, nullptr);
|
| EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| EXPECT_TRUE(consumed.fin_consumed);
|
| EXPECT_FALSE(generator_.HasQueuedFrames());
|
| @@ -1426,7 +624,7 @@ TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Initial) {
|
|
|
| // Test whether SetMaxPacketLength() works in the situation when we first write
|
| // data, then change packet size, then write data again.
|
| -TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Middle) {
|
| +TEST_F(QuicPacketGeneratorTest, SetMaxPacketLength_Middle) {
|
| delegate_.SetCanWriteAnything();
|
|
|
| // We send enough data to overflow default packet length, but not the altered
|
| @@ -1444,7 +642,7 @@ TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Middle) {
|
| QuicConsumedData consumed =
|
| generator_.ConsumeData(kHeadersStreamId, CreateData(data_len),
|
| /*offset=*/2,
|
| - /*fin=*/false, MAY_FEC_PROTECT, nullptr);
|
| + /*fin=*/false, nullptr);
|
| EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| EXPECT_FALSE(consumed.fin_consumed);
|
| EXPECT_FALSE(generator_.HasQueuedFrames());
|
| @@ -1459,7 +657,7 @@ TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Middle) {
|
| // Send a packet after packet size change.
|
| consumed = generator_.ConsumeData(kHeadersStreamId, CreateData(data_len),
|
| 2 + data_len,
|
| - /*fin=*/true, MAY_FEC_PROTECT, nullptr);
|
| + /*fin=*/true, nullptr);
|
| EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| EXPECT_TRUE(consumed.fin_consumed);
|
| EXPECT_FALSE(generator_.HasQueuedFrames());
|
| @@ -1474,7 +672,7 @@ TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Middle) {
|
|
|
| // Test whether SetMaxPacketLength() works correctly when we change the packet
|
| // size in the middle of the batched packet.
|
| -TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Midpacket) {
|
| +TEST_F(QuicPacketGeneratorTest, SetMaxPacketLength_Midpacket) {
|
| delegate_.SetCanWriteAnything();
|
| generator_.StartBatchOperations();
|
|
|
| @@ -1488,7 +686,7 @@ TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Midpacket) {
|
| QuicConsumedData consumed =
|
| generator_.ConsumeData(kHeadersStreamId, CreateData(first_write_len),
|
| /*offset=*/2,
|
| - /*fin=*/false, MAY_FEC_PROTECT, nullptr);
|
| + /*fin=*/false, nullptr);
|
| EXPECT_EQ(first_write_len, consumed.bytes_consumed);
|
| EXPECT_FALSE(consumed.fin_consumed);
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| @@ -1511,7 +709,7 @@ TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Midpacket) {
|
| consumed =
|
| generator_.ConsumeData(kHeadersStreamId, CreateData(second_write_len),
|
| /*offset=*/2 + first_write_len,
|
| - /*fin=*/true, MAY_FEC_PROTECT, nullptr);
|
| + /*fin=*/true, nullptr);
|
| EXPECT_EQ(second_write_len, consumed.bytes_consumed);
|
| EXPECT_TRUE(consumed.fin_consumed);
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| @@ -1528,7 +726,7 @@ TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_Midpacket) {
|
|
|
| // Test whether SetMaxPacketLength() works correctly when we force the change of
|
| // the packet size in the middle of the batched packet.
|
| -TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_MidpacketFlush) {
|
| +TEST_F(QuicPacketGeneratorTest, SetMaxPacketLength_MidpacketFlush) {
|
| delegate_.SetCanWriteAnything();
|
| generator_.StartBatchOperations();
|
|
|
| @@ -1542,7 +740,7 @@ TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_MidpacketFlush) {
|
| QuicConsumedData consumed =
|
| generator_.ConsumeData(kHeadersStreamId, CreateData(first_write_len),
|
| /*offset=*/2,
|
| - /*fin=*/false, MAY_FEC_PROTECT, nullptr);
|
| + /*fin=*/false, nullptr);
|
| EXPECT_EQ(first_write_len, consumed.bytes_consumed);
|
| EXPECT_FALSE(consumed.fin_consumed);
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| @@ -1571,7 +769,7 @@ TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_MidpacketFlush) {
|
| consumed =
|
| generator_.ConsumeData(kHeadersStreamId, CreateData(second_write_len),
|
| /*offset=*/2 + first_write_len,
|
| - /*fin=*/true, MAY_FEC_PROTECT, nullptr);
|
| + /*fin=*/true, nullptr);
|
| EXPECT_EQ(second_write_len, consumed.bytes_consumed);
|
| EXPECT_TRUE(consumed.fin_consumed);
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
| @@ -1586,7 +784,7 @@ TEST_P(QuicPacketGeneratorTest, SetMaxPacketLength_MidpacketFlush) {
|
| }
|
|
|
| // Test sending an MTU probe, without any surrounding data.
|
| -TEST_P(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_Simple) {
|
| +TEST_F(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_Simple) {
|
| delegate_.SetCanWriteAnything();
|
|
|
| const size_t target_mtu = kDefaultMaxPacketSize + 100;
|
| @@ -1609,7 +807,7 @@ TEST_P(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_Simple) {
|
|
|
| // Test sending an MTU probe. Surround it with data, to ensure that it resets
|
| // the MTU to the value before the probe was sent.
|
| -TEST_P(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_SurroundedByData) {
|
| +TEST_F(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_SurroundedByData) {
|
| delegate_.SetCanWriteAnything();
|
|
|
| const size_t target_mtu = kDefaultMaxPacketSize + 100;
|
| @@ -1629,7 +827,7 @@ TEST_P(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_SurroundedByData) {
|
| QuicConsumedData consumed =
|
| generator_.ConsumeData(kHeadersStreamId, CreateData(data_len),
|
| /*offset=*/2,
|
| - /*fin=*/false, MAY_FEC_PROTECT, nullptr);
|
| + /*fin=*/false, nullptr);
|
| EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| EXPECT_FALSE(consumed.fin_consumed);
|
| EXPECT_FALSE(generator_.HasQueuedFrames());
|
| @@ -1641,7 +839,7 @@ TEST_P(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_SurroundedByData) {
|
| // Send data after the MTU probe.
|
| consumed = generator_.ConsumeData(kHeadersStreamId, CreateData(data_len),
|
| /*offset=*/2 + data_len,
|
| - /*fin=*/true, MAY_FEC_PROTECT, nullptr);
|
| + /*fin=*/true, nullptr);
|
| EXPECT_EQ(data_len, consumed.bytes_consumed);
|
| EXPECT_TRUE(consumed.fin_consumed);
|
| EXPECT_FALSE(generator_.HasQueuedFrames());
|
| @@ -1661,7 +859,7 @@ TEST_P(QuicPacketGeneratorTest, GenerateMtuDiscoveryPacket_SurroundedByData) {
|
| CheckPacketHasSingleStreamFrame(4);
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, DontCrashOnInvalidStopWaiting) {
|
| +TEST_F(QuicPacketGeneratorTest, DontCrashOnInvalidStopWaiting) {
|
| // Test added to ensure the generator does not crash when an invalid frame is
|
| // added. Because this is an indication of internal programming errors,
|
| // DFATALs are expected.
|
| @@ -1689,12 +887,12 @@ TEST_P(QuicPacketGeneratorTest, DontCrashOnInvalidStopWaiting) {
|
| "for least_unacked_delta: 1001");
|
| }
|
|
|
| -TEST_P(QuicPacketGeneratorTest, SetCurrentPath) {
|
| +TEST_F(QuicPacketGeneratorTest, SetCurrentPath) {
|
| delegate_.SetCanWriteAnything();
|
| generator_.StartBatchOperations();
|
|
|
| QuicConsumedData consumed = generator_.ConsumeData(
|
| - kHeadersStreamId, MakeIOVector("foo"), 2, true, MAY_FEC_PROTECT, nullptr);
|
| + kHeadersStreamId, MakeIOVector("foo"), 2, true, nullptr);
|
| EXPECT_EQ(3u, consumed.bytes_consumed);
|
| EXPECT_TRUE(consumed.fin_consumed);
|
| EXPECT_TRUE(generator_.HasQueuedFrames());
|
|
|