diff --git a/quic/api/test/QuicPacketSchedulerTest.cpp b/quic/api/test/QuicPacketSchedulerTest.cpp index a97c376f2..4552ee672 100644 --- a/quic/api/test/QuicPacketSchedulerTest.cpp +++ b/quic/api/test/QuicPacketSchedulerTest.cpp @@ -82,7 +82,18 @@ PacketNum addInitialOutstandingPacket(QuicConnectionStateBase& conn) { QuicVersion::QUIC_DRAFT); RegularQuicWritePacket packet(std::move(header)); conn.outstandings.packets.emplace_back( - packet, Clock::now(), 0, 0, true, 0, 0, 0, 0, LossState(), 0); + packet, + Clock::now(), + 0, + 0, + true, + 0, + 0, + 0, + 0, + LossState(), + 0, + OutstandingPacketMetadata::DetailsPerStream()); conn.outstandings.packetCount[PacketNumberSpace::Initial]++; increaseNextPacketNum(conn, PacketNumberSpace::Initial); return nextPacketNum; @@ -101,7 +112,18 @@ PacketNum addHandshakeOutstandingPacket(QuicConnectionStateBase& conn) { QuicVersion::QUIC_DRAFT); RegularQuicWritePacket packet(std::move(header)); conn.outstandings.packets.emplace_back( - packet, Clock::now(), 0, 0, true, 0, 0, 0, 0, LossState(), 0); + packet, + Clock::now(), + 0, + 0, + true, + 0, + 0, + 0, + 0, + LossState(), + 0, + OutstandingPacketMetadata::DetailsPerStream()); conn.outstandings.packetCount[PacketNumberSpace::Handshake]++; increaseNextPacketNum(conn, PacketNumberSpace::Handshake); return nextPacketNum; @@ -115,7 +137,18 @@ PacketNum addOutstandingPacket(QuicConnectionStateBase& conn) { nextPacketNum); RegularQuicWritePacket packet(std::move(header)); conn.outstandings.packets.emplace_back( - packet, Clock::now(), 0, 0, false, 0, 0, 0, 0, LossState(), 0); + packet, + Clock::now(), + 0, + 0, + false, + 0, + 0, + 0, + 0, + LossState(), + 0, + OutstandingPacketMetadata::DetailsPerStream()); increaseNextPacketNum(conn, PacketNumberSpace::AppData); return nextPacketNum; } diff --git a/quic/api/test/QuicTransportFunctionsTest.cpp b/quic/api/test/QuicTransportFunctionsTest.cpp index 6aa44c5af..37202bd54 100644 --- a/quic/api/test/QuicTransportFunctionsTest.cpp +++ b/quic/api/test/QuicTransportFunctionsTest.cpp @@ -1681,11 +1681,10 @@ TEST_F(QuicTransportFunctionsTest, TestStreamDetailsControlPacket) { // If we have only control frames sent, there should be no stream data in the // outstanding packet. ASSERT_EQ(1, conn->outstandings.packets.size()); - auto detailsPerStream = + const auto& detailsPerStream = getFirstOutstandingPacket(*conn, PacketNumberSpace::AppData) - ->metadata.maybeDetailsPerStream; - EXPECT_EQ(true, detailsPerStream.has_value()); - EXPECT_EQ(0, detailsPerStream->getDetails().size()); + ->metadata.detailsPerStream.getDetails(); + EXPECT_EQ(0, detailsPerStream.size()); } TEST_F(QuicTransportFunctionsTest, TestStreamDetailsAppDataPacketSingleStream) { @@ -1708,7 +1707,7 @@ TEST_F(QuicTransportFunctionsTest, TestStreamDetailsAppDataPacketSingleStream) { ASSERT_EQ(1, conn->outstandings.packets.size()); auto detailsPerStream = getFirstOutstandingPacket(*conn, PacketNumberSpace::AppData) - ->metadata.maybeDetailsPerStream->getDetails(); + ->metadata.detailsPerStream.getDetails(); EXPECT_EQ(1, detailsPerStream.size()); auto streamDetail = detailsPerStream[stream->id]; EXPECT_EQ(false, streamDetail.finObserved); @@ -1743,7 +1742,7 @@ TEST_F( ASSERT_EQ(1, conn->outstandings.packets.size()); auto detailsPerStream = getFirstOutstandingPacket(*conn, PacketNumberSpace::AppData) - ->metadata.maybeDetailsPerStream->getDetails(); + ->metadata.detailsPerStream.getDetails(); EXPECT_EQ(1, detailsPerStream.size()); auto streamDetail = detailsPerStream[stream->id]; EXPECT_EQ(true, streamDetail.finObserved); @@ -1778,7 +1777,7 @@ TEST_F( // The first outstanding packet is the one with new data auto detailsPerStream = getFirstOutstandingPacket(*conn, PacketNumberSpace::AppData) - ->metadata.maybeDetailsPerStream->getDetails(); + ->metadata.detailsPerStream.getDetails(); EXPECT_EQ(1, detailsPerStream.size()); auto streamDetail = detailsPerStream[stream->id]; EXPECT_EQ(false, streamDetail.finObserved); @@ -1802,7 +1801,7 @@ TEST_F( // The second outstanding packet is the one with retransmit data detailsPerStream = getLastOutstandingPacket(*conn, PacketNumberSpace::AppData) - ->metadata.maybeDetailsPerStream->getDetails(); + ->metadata.detailsPerStream.getDetails(); EXPECT_EQ(1, detailsPerStream.size()); streamDetail = detailsPerStream[stream->id]; EXPECT_EQ(false, streamDetail.finObserved); @@ -1832,7 +1831,7 @@ TEST_F( // The third outstanding packet will have both new and retransmitted data. detailsPerStream = getLastOutstandingPacket(*conn, PacketNumberSpace::AppData) - ->metadata.maybeDetailsPerStream->getDetails(); + ->metadata.detailsPerStream.getDetails(); EXPECT_EQ(1, detailsPerStream.size()); streamDetail = detailsPerStream[stream->id]; EXPECT_EQ(false, streamDetail.finObserved); @@ -1857,7 +1856,7 @@ TEST_F( // The forth outstanding packet will have only retransmit data. detailsPerStream = getLastOutstandingPacket(*conn, PacketNumberSpace::AppData) - ->metadata.maybeDetailsPerStream->getDetails(); + ->metadata.detailsPerStream.getDetails(); EXPECT_EQ(1, detailsPerStream.size()); streamDetail = detailsPerStream[stream->id]; EXPECT_EQ(false, streamDetail.finObserved); @@ -1901,7 +1900,7 @@ TEST_F( ASSERT_EQ(1, conn->outstandings.packets.size()); auto detailsPerStream = getFirstOutstandingPacket(*conn, PacketNumberSpace::AppData) - ->metadata.maybeDetailsPerStream->getDetails(); + ->metadata.detailsPerStream.getDetails(); EXPECT_EQ(2, detailsPerStream.size()); auto stream1Detail = detailsPerStream[stream1Id]; auto stream2Detail = detailsPerStream[stream2Id]; diff --git a/quic/codec/test/QuicPacketRebuilderTest.cpp b/quic/codec/test/QuicPacketRebuilderTest.cpp index d753226d4..720bd5b19 100644 --- a/quic/codec/test/QuicPacketRebuilderTest.cpp +++ b/quic/codec/test/QuicPacketRebuilderTest.cpp @@ -39,7 +39,8 @@ OutstandingPacket makeDummyOutstandingPacket( 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); return packet; } diff --git a/quic/common/test/TestUtils.cpp b/quic/common/test/TestUtils.cpp index 9c263b22e..a0eeb9602 100644 --- a/quic/common/test/TestUtils.cpp +++ b/quic/common/test/TestUtils.cpp @@ -547,7 +547,8 @@ OutstandingPacket makeTestingWritePacket( inflightBytes, 0, LossState(), - writeCount); + writeCount, + OutstandingPacketMetadata::DetailsPerStream()); } CongestionController::AckEvent makeAck( @@ -576,8 +577,7 @@ CongestionController::AckEvent makeAck( 0 /* numOutstanding */, LossState() /* lossState */, 0 /* writeCount */, - folly::none /* detailsPerStream) */ - )) + OutstandingPacketMetadata::DetailsPerStream())) .build()); ack.largestAckedPacketSentTime = sentTime; return ack; diff --git a/quic/congestion_control/test/CopaTest.cpp b/quic/congestion_control/test/CopaTest.cpp index e20559660..ba9870460 100644 --- a/quic/congestion_control/test/CopaTest.cpp +++ b/quic/congestion_control/test/CopaTest.cpp @@ -41,7 +41,8 @@ class CopaTest : public Test { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream())); loss.lostBytes = packetData.second; } loss.lostPackets = lostPackets.size(); @@ -67,7 +68,8 @@ class CopaTest : public Test { inflight, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); } CongestionController::AckEvent createAckEvent( diff --git a/quic/congestion_control/test/NewRenoTest.cpp b/quic/congestion_control/test/NewRenoTest.cpp index 1f49b22e7..3979ed0d6 100644 --- a/quic/congestion_control/test/NewRenoTest.cpp +++ b/quic/congestion_control/test/NewRenoTest.cpp @@ -37,7 +37,8 @@ CongestionController::LossEvent createLossEvent( 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream())); loss.lostBytes = packetData.second; } loss.lostPackets = lostPackets.size(); @@ -66,7 +67,8 @@ CongestionController::AckEvent createAckEvent( 0, 0, LossState(), - 0))); + 0, + OutstandingPacketMetadata::DetailsPerStream()))); return ack; } @@ -89,7 +91,8 @@ OutstandingPacket createPacket( inflight, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); } TEST_F(NewRenoTest, TestLoss) { diff --git a/quic/d6d/test/QuicD6DStateFunctionsTest.cpp b/quic/d6d/test/QuicD6DStateFunctionsTest.cpp index 28a39cd27..33dca1782 100644 --- a/quic/d6d/test/QuicD6DStateFunctionsTest.cpp +++ b/quic/d6d/test/QuicD6DStateFunctionsTest.cpp @@ -212,7 +212,8 @@ TEST_F(QuicD6DStateFunctionsTest, D6DProbeAckedInBase) { d6d.currentProbeSize, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); d6d.lastProbe = D6DProbePacket( pkt.packet.header.getPacketSequenceNum(), pkt.metadata.encodedSize); d6d.raiser = std::make_unique(); @@ -260,7 +261,8 @@ TEST_F(QuicD6DStateFunctionsTest, D6DProbeAckedInSearchingOne) { d6d.currentProbeSize, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); d6d.lastProbe = D6DProbePacket( pkt.packet.header.getPacketSequenceNum(), pkt.metadata.encodedSize); d6d.raiser = std::make_unique(); @@ -309,7 +311,8 @@ TEST_F(QuicD6DStateFunctionsTest, D6DProbeAckedInSearchingMax) { d6d.currentProbeSize, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); d6d.lastProbe = D6DProbePacket( pkt.packet.header.getPacketSequenceNum(), pkt.metadata.encodedSize); d6d.raiser = std::make_unique(); @@ -366,7 +369,8 @@ TEST_F(QuicD6DStateFunctionsTest, D6DProbeAckedInError) { d6d.currentProbeSize, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); d6d.lastProbe = D6DProbePacket( pkt.packet.header.getPacketSequenceNum(), pkt.metadata.encodedSize); d6d.raiser = std::make_unique(); @@ -413,7 +417,8 @@ TEST_F(QuicD6DStateFunctionsTest, BlackholeInSearching) { d6d.currentProbeSize, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); d6d.lastProbe = D6DProbePacket( pkt.packet.header.getPacketSequenceNum(), pkt.metadata.encodedSize); @@ -428,7 +433,8 @@ TEST_F(QuicD6DStateFunctionsTest, BlackholeInSearching) { conn.udpSendPacketLen + d6d.currentProbeSize, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); d6d.thresholdCounter = std::make_unique>( std::chrono::microseconds(kDefaultD6DBlackholeDetectionWindow).count(), @@ -487,7 +493,9 @@ TEST_F(QuicD6DStateFunctionsTest, BlackholeInSearchComplete) { d6d.currentProbeSize, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); + d6d.lastProbe = D6DProbePacket( pkt.packet.header.getPacketSequenceNum(), pkt.metadata.encodedSize); @@ -502,7 +510,8 @@ TEST_F(QuicD6DStateFunctionsTest, BlackholeInSearchComplete) { conn.udpSendPacketLen + d6d.currentProbeSize, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); d6d.thresholdCounter = std::make_unique>( std::chrono::microseconds(kDefaultD6DBlackholeDetectionWindow).count(), @@ -564,7 +573,8 @@ TEST_F(QuicD6DStateFunctionsTest, ReachMaxPMTU) { d6d.currentProbeSize, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); d6d.lastProbe = D6DProbePacket( pkt.packet.header.getPacketSequenceNum(), pkt.metadata.encodedSize); d6d.raiser = std::make_unique(); @@ -605,7 +615,8 @@ TEST_F( d6d.currentProbeSize, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); d6d.lastProbe = D6DProbePacket( pkt.packet.header.getPacketSequenceNum(), pkt.metadata.encodedSize); d6d.raiser = std::make_unique(); @@ -628,7 +639,8 @@ TEST_F( d6d.currentProbeSize, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); // Generate a false positive blackhole signal detectPMTUBlackhole(conn, lostPacket); EXPECT_EQ(d6d.state, D6DMachineState::BASE); @@ -668,7 +680,8 @@ TEST_F(QuicD6DStateFunctionsTest, UpperboundIsBase) { d6d.currentProbeSize, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); d6d.lastProbe = D6DProbePacket( pkt.packet.header.getPacketSequenceNum(), pkt.metadata.encodedSize); d6d.raiser = std::make_unique(); diff --git a/quic/loss/test/QuicLossFunctionsTest.cpp b/quic/loss/test/QuicLossFunctionsTest.cpp index dee7830e9..cf8754672 100644 --- a/quic/loss/test/QuicLossFunctionsTest.cpp +++ b/quic/loss/test/QuicLossFunctionsTest.cpp @@ -256,7 +256,8 @@ PacketNum QuicLossFunctionsTest::sendPacket( 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); outstandingPacket.associatedEvent = associatedEvent; conn.lossState.lastRetransmittablePacketSentTime = time; if (conn.congestionController) { @@ -1007,8 +1008,19 @@ TEST_F(QuicLossFunctionsTest, TestHandleAckForLoss) { conn->version.value()); RegularQuicWritePacket outstandingRegularPacket(std::move(longHeader)); auto now = Clock::now(); - conn->outstandings.packets.emplace_back(OutstandingPacket( - outstandingRegularPacket, now, 0, 0, false, 0, 0, 0, 0, LossState(), 0)); + conn->outstandings.packets.emplace_back( + outstandingRegularPacket, + now, + 0, + 0, + false, + 0, + 0, + 0, + 0, + LossState(), + 0, + OutstandingPacketMetadata::DetailsPerStream()); conn->outstandings.packetCount[PacketNumberSpace::Handshake]++; bool testLossMarkFuncCalled = false; @@ -1889,8 +1901,7 @@ TEST_F(QuicLossFunctionsTest, PersistentCongestionAckOutsideWindow) { 0 /* numOutstanding */, LossState() /* lossState */, 0 /* writeCount */, - folly::none /* detailsPerStream) */ - )) + OutstandingPacketMetadata::DetailsPerStream())) .build()); EXPECT_TRUE(isPersistentCongestion( @@ -1917,8 +1928,7 @@ TEST_F(QuicLossFunctionsTest, PersistentCongestionAckInsideWindow) { 0 /* numOutstanding */, LossState() /* lossState */, 0 /* writeCount */, - folly::none /* detailsPerStream) */ - )) + OutstandingPacketMetadata::DetailsPerStream())) .build()); EXPECT_FALSE(isPersistentCongestion( @@ -1944,8 +1954,7 @@ TEST_F(QuicLossFunctionsTest, PersistentCongestionNoPTO) { 0 /* numOutstanding */, LossState() /* lossState */, 0 /* writeCount */, - folly::none /* detailsPerStream) */ - )) + OutstandingPacketMetadata::DetailsPerStream())) .build()); EXPECT_FALSE(isPersistentCongestion( diff --git a/quic/state/OutstandingPacket.h b/quic/state/OutstandingPacket.h index 9abf01ace..8dc4c9adf 100644 --- a/quic/state/OutstandingPacket.h +++ b/quic/state/OutstandingPacket.h @@ -96,8 +96,8 @@ struct OutstandingPacketMetadata { folly::F14FastMap detailsPerStream; }; - // When enabled, details about each stream with frames in this packet - folly::Optional maybeDetailsPerStream; + // Details about each stream with frames in this packet + DetailsPerStream detailsPerStream; OutstandingPacketMetadata( TimePoint timeIn, @@ -111,7 +111,7 @@ struct OutstandingPacketMetadata { uint64_t packetsInflightIn, const LossState& lossStateIn, uint64_t writeCount, - folly::Optional maybeDetailsPerStream) + DetailsPerStream detailsPerStream) : time(timeIn), encodedSize(encodedSizeIn), encodedBodySize(encodedBodySizeIn), @@ -124,7 +124,7 @@ struct OutstandingPacketMetadata { totalPacketsSent(lossStateIn.totalPacketsSent), totalAckElicitingPacketsSent(lossStateIn.totalAckElicitingPacketsSent), writeCount(writeCount), - maybeDetailsPerStream(std::move(maybeDetailsPerStream)) {} + detailsPerStream(std::move(detailsPerStream)) {} }; // Data structure to represent outstanding retransmittable packets @@ -198,8 +198,7 @@ struct OutstandingPacket { uint64_t packetsInflightIn, const LossState& lossStateIn, uint64_t writeCount, - folly::Optional maybeDetailsPerStream = - folly::none) + Metadata::DetailsPerStream detailsPerStream) : packet(std::move(packetIn)), metadata(OutstandingPacketMetadata( timeIn, @@ -213,7 +212,7 @@ struct OutstandingPacket { packetsInflightIn, lossStateIn, writeCount, - std::move(maybeDetailsPerStream))) {} + std::move(detailsPerStream))) {} OutstandingPacket( RegularQuicWritePacket packetIn, @@ -228,8 +227,7 @@ struct OutstandingPacket { uint64_t packetsInflightIn, const LossState& lossStateIn, uint64_t writeCount, - folly::Optional maybeDetailsPerStream = - folly::none) + Metadata::DetailsPerStream detailsPerStream) : packet(std::move(packetIn)), metadata(OutstandingPacketMetadata( timeIn, @@ -243,6 +241,6 @@ struct OutstandingPacket { packetsInflightIn, lossStateIn, writeCount, - std::move(maybeDetailsPerStream))) {} + std::move(detailsPerStream))) {} }; } // namespace quic diff --git a/quic/state/test/AckHandlersTest.cpp b/quic/state/test/AckHandlersTest.cpp index 664e20eba..0d2feb82c 100644 --- a/quic/state/test/AckHandlersTest.cpp +++ b/quic/state/test/AckHandlersTest.cpp @@ -65,7 +65,8 @@ auto emplacePackets( packetNum + 1, packetNum + 1, quic::LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); conn.outstandings.packets.emplace_back(sentPacket); packetNum++; } @@ -90,7 +91,7 @@ TEST_P(AckHandlersTest, TestAckMultipleSequentialBlocks) { regularPacket.frames.emplace_back(std::move(frame)); conn.outstandings .packetCount[regularPacket.header.getPacketNumberSpace()]++; - conn.outstandings.packets.emplace_back(OutstandingPacket( + conn.outstandings.packets.emplace_back( std::move(regularPacket), sentTime, 1, @@ -101,7 +102,8 @@ TEST_P(AckHandlersTest, TestAckMultipleSequentialBlocks) { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream()); } ReadAckFrame ackFrame; ackFrame.largestAcked = 101; @@ -173,7 +175,7 @@ TEST_P(AckHandlersTest, TestAckMultipleSequentialBlocksLoss) { regularPacket.frames.emplace_back(std::move(frame)); conn.outstandings .packetCount[regularPacket.header.getPacketNumberSpace()]++; - conn.outstandings.packets.emplace_back(OutstandingPacket( + conn.outstandings.packets.emplace_back( std::move(regularPacket), sentTime, 1, @@ -184,7 +186,8 @@ TEST_P(AckHandlersTest, TestAckMultipleSequentialBlocksLoss) { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream()); } ReadAckFrame ackFrame; ackFrame.largestAcked = 101; @@ -320,7 +323,7 @@ TEST_P(AckHandlersTest, TestAckBlocksWithGaps) { regularPacket.frames.emplace_back(std::move(frame)); conn.outstandings .packetCount[regularPacket.header.getPacketNumberSpace()]++; - conn.outstandings.packets.emplace_back(OutstandingPacket( + conn.outstandings.packets.emplace_back( std::move(regularPacket), Clock::now(), 1, @@ -331,7 +334,8 @@ TEST_P(AckHandlersTest, TestAckBlocksWithGaps) { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream()); } ReadAckFrame ackFrame; @@ -430,7 +434,7 @@ TEST_P(AckHandlersTest, TestNonSequentialPacketNumbers) { regularPacket.frames.emplace_back(std::move(frame)); conn.outstandings .packetCount[regularPacket.header.getPacketNumberSpace()]++; - conn.outstandings.packets.emplace_back(OutstandingPacket( + conn.outstandings.packets.emplace_back( std::move(regularPacket), Clock::now(), 1, @@ -441,7 +445,8 @@ TEST_P(AckHandlersTest, TestNonSequentialPacketNumbers) { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream()); } for (PacketNum packetNum = 20; packetNum < 40; packetNum += 3) { @@ -451,7 +456,7 @@ TEST_P(AckHandlersTest, TestNonSequentialPacketNumbers) { regularPacket.frames.emplace_back(std::move(frame)); conn.outstandings .packetCount[regularPacket.header.getPacketNumberSpace()]++; - conn.outstandings.packets.emplace_back(OutstandingPacket( + conn.outstandings.packets.emplace_back( std::move(regularPacket), Clock::now(), 1, @@ -462,7 +467,8 @@ TEST_P(AckHandlersTest, TestNonSequentialPacketNumbers) { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream()); } ReadAckFrame ackFrame; @@ -543,7 +549,7 @@ TEST_P(AckHandlersTest, AckVisitorForAckTest) { conn.ackStates.appDataAckState.acks.insert(500, 700); firstPacket.frames.emplace_back(std::move(firstAckFrame)); conn.outstandings.packetCount[firstPacket.header.getPacketNumberSpace()]++; - conn.outstandings.packets.emplace_back(OutstandingPacket( + conn.outstandings.packets.emplace_back( std::move(firstPacket), Clock::now(), 0, @@ -554,7 +560,8 @@ TEST_P(AckHandlersTest, AckVisitorForAckTest) { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream()); auto secondPacket = createNewPacket(101 /* packetNum */, GetParam()); WriteAckFrame secondAckFrame; @@ -564,7 +571,7 @@ TEST_P(AckHandlersTest, AckVisitorForAckTest) { conn.ackStates.appDataAckState.acks.insert(1002, 1090); secondPacket.frames.emplace_back(std::move(secondAckFrame)); conn.outstandings.packetCount[secondPacket.header.getPacketNumberSpace()]++; - conn.outstandings.packets.emplace_back(OutstandingPacket( + conn.outstandings.packets.emplace_back( std::move(secondPacket), Clock::now(), 0, @@ -575,7 +582,8 @@ TEST_P(AckHandlersTest, AckVisitorForAckTest) { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream()); ReadAckFrame firstReceivedAck; firstReceivedAck.largestAcked = 100; @@ -636,7 +644,7 @@ TEST_P(AckHandlersTest, NoNewAckedPacket) { PacketNum packetAfterRtoNum = 10; auto packetAfterRto = createNewPacket(packetAfterRtoNum, GetParam()); conn.outstandings.packetCount[packetAfterRto.header.getPacketNumberSpace()]++; - conn.outstandings.packets.emplace_back(OutstandingPacket( + conn.outstandings.packets.emplace_back( std::move(packetAfterRto), Clock::now(), 0, @@ -647,7 +655,8 @@ TEST_P(AckHandlersTest, NoNewAckedPacket) { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream()); ReadAckFrame ackFrame; ackFrame.largestAcked = 5; @@ -704,7 +713,8 @@ TEST_P(AckHandlersTest, AckPacketNumDoesNotExist) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); PacketNum packetNum2 = 10; auto regularPacket2 = createNewPacket(packetNum2, GetParam()); @@ -720,7 +730,8 @@ TEST_P(AckHandlersTest, AckPacketNumDoesNotExist) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); // Ack a packet one higher than the packet so that we don't trigger reordering // threshold. @@ -761,7 +772,8 @@ TEST_P(AckHandlersTest, TestHandshakeCounterUpdate) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); } ReadAckFrame ackFrame; @@ -845,7 +857,7 @@ TEST_P(AckHandlersTest, NoSkipAckVisitor) { WriteStreamFrame frame(0, 0, 0, true); regularPacket.frames.emplace_back(std::move(frame)); conn.outstandings.packetCount[regularPacket.header.getPacketNumberSpace()]++; - conn.outstandings.packets.emplace_back(OutstandingPacket( + conn.outstandings.packets.emplace_back( std::move(regularPacket), Clock::now(), 1, @@ -856,7 +868,8 @@ TEST_P(AckHandlersTest, NoSkipAckVisitor) { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream()); ReadAckFrame ackFrame; ackFrame.largestAcked = 0; ackFrame.ackBlocks.emplace_back(0, 0); @@ -914,7 +927,8 @@ TEST_P(AckHandlersTest, SkipAckVisitor) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); // Give this outstandingPacket an associatedEvent that's not in // outstandings.packetEvents outstandingPacket.associatedEvent.emplace(GetParam(), 0); @@ -965,7 +979,8 @@ TEST_P(AckHandlersTest, NoDoubleProcess) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); outstandingPacket1.associatedEvent.emplace(GetParam(), packetNum1); OutstandingPacket outstandingPacket2( @@ -979,7 +994,8 @@ TEST_P(AckHandlersTest, NoDoubleProcess) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); // The seconds packet has the same PacketEvent outstandingPacket2.associatedEvent.emplace(GetParam(), packetNum1); @@ -1045,7 +1061,8 @@ TEST_P(AckHandlersTest, ClonedPacketsCounter) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); outstandingPacket1.associatedEvent.emplace(GetParam(), packetNum1); conn.ackStates.appDataAckState.nextPacketNum++; @@ -1063,7 +1080,8 @@ TEST_P(AckHandlersTest, ClonedPacketsCounter) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); conn.outstandings .packetCount[outstandingPacket1.packet.header.getPacketNumberSpace()]++; @@ -1105,7 +1123,7 @@ TEST_P(AckHandlersTest, UpdateMaxAckDelay) { auto regularPacket = createNewPacket(packetNum, GetParam()); auto sentTime = Clock::now(); conn.outstandings.packetCount[regularPacket.header.getPacketNumberSpace()]++; - conn.outstandings.packets.emplace_back(OutstandingPacket( + conn.outstandings.packets.emplace_back( std::move(regularPacket), sentTime, 1, @@ -1116,7 +1134,8 @@ TEST_P(AckHandlersTest, UpdateMaxAckDelay) { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream()); ReadAckFrame ackFrame; // ackDelay has no effect on mrtt @@ -1186,7 +1205,8 @@ TEST_P(AckHandlersTest, AckNotOutstandingButLoss) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); conn.outstandings.packets.push_back(std::move(outstandingPacket)); conn.outstandings.packetCount[GetParam()]++; @@ -1227,7 +1247,7 @@ TEST_P(AckHandlersTest, UpdatePendingAckStates) { auto regularPacket = createNewPacket(packetNum, GetParam()); auto sentTime = Clock::now() - 1500ms; conn.outstandings.packetCount[regularPacket.header.getPacketNumberSpace()]++; - conn.outstandings.packets.emplace_back(OutstandingPacket( + conn.outstandings.packets.emplace_back( std::move(regularPacket), sentTime, 111, @@ -1238,7 +1258,8 @@ TEST_P(AckHandlersTest, UpdatePendingAckStates) { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream()); conn.lossState.totalBytesSent += 111; conn.lossState.totalBodyBytesSent += 100; @@ -1384,7 +1405,8 @@ TEST_P(AckHandlersTest, ImplictAckEventCreation) { packetNum + 1, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); sentPacket.isAppLimited = (packetNum % 2); conn.outstandings.packets.emplace_back(sentPacket); packetNum++; @@ -1456,7 +1478,8 @@ TEST_P(AckHandlersTest, TestRTTPacketObserverCallback) { packetNum + 1, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); sentPacket.isAppLimited = false; conn.outstandings.packets.emplace_back(sentPacket); packetNum++; @@ -1729,7 +1752,7 @@ TEST_P(AckHandlersTest, SubMicrosecondRTT) { auto packetSendTime = Clock::now(); auto packet = createNewPacket(5, GetParam()); conn.outstandings.packetCount[packet.header.getPacketNumberSpace()]++; - conn.outstandings.packets.emplace_back(OutstandingPacket( + conn.outstandings.packets.emplace_back( std::move(packet), packetSendTime, 0, @@ -1740,7 +1763,8 @@ TEST_P(AckHandlersTest, SubMicrosecondRTT) { 0, 0, LossState(), - 0)); + 0, + OutstandingPacketMetadata::DetailsPerStream()); ReadAckFrame ackFrame; auto ackReceiveTime = packetSendTime + 400ns; diff --git a/quic/state/test/QuicStateFunctionsTest.cpp b/quic/state/test/QuicStateFunctionsTest.cpp index f125a1cbc..1642e342d 100644 --- a/quic/state/test/QuicStateFunctionsTest.cpp +++ b/quic/state/test/QuicStateFunctionsTest.cpp @@ -8,6 +8,7 @@ #include #include +#include "quic/state/OutstandingPacket.h" #include #include @@ -705,7 +706,8 @@ TEST_F(QuicStateFunctionsTest, GetOutstandingPackets) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); conn.outstandings.packets.emplace_back( makeTestLongPacket(LongHeader::Types::Handshake), Clock::now(), @@ -717,7 +719,8 @@ TEST_F(QuicStateFunctionsTest, GetOutstandingPackets) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); conn.outstandings.packets.emplace_back( makeTestShortPacket(), Clock::now(), @@ -729,7 +732,8 @@ TEST_F(QuicStateFunctionsTest, GetOutstandingPackets) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); conn.outstandings.packets.emplace_back( makeTestLongPacket(LongHeader::Types::Initial), Clock::now(), @@ -741,7 +745,8 @@ TEST_F(QuicStateFunctionsTest, GetOutstandingPackets) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); conn.outstandings.packets.emplace_back( makeTestShortPacket(), Clock::now(), @@ -753,7 +758,8 @@ TEST_F(QuicStateFunctionsTest, GetOutstandingPackets) { 0, 0, LossState(), - 0); + 0, + OutstandingPacketMetadata::DetailsPerStream()); EXPECT_EQ( 135, getFirstOutstandingPacket(conn, PacketNumberSpace::Initial) diff --git a/quic/state/test/StateDataTest.cpp b/quic/state/test/StateDataTest.cpp index 179b0e9e0..c373ba2fa 100644 --- a/quic/state/test/StateDataTest.cpp +++ b/quic/state/test/StateDataTest.cpp @@ -37,7 +37,18 @@ TEST_F(StateDataTest, SingleLostPacketEvent) { 100, kVersion)); OutstandingPacket outstandingPacket( - packet, Clock::now(), 1234, 0, false, 1234, 0, 0, 0, LossState(), 0); + packet, + Clock::now(), + 1234, + 0, + false, + 1234, + 0, + 0, + 0, + LossState(), + 0, + OutstandingPacketMetadata::DetailsPerStream()); CongestionController::LossEvent loss; loss.addLostPacket(outstandingPacket); EXPECT_EQ(1234, loss.lostBytes); @@ -52,7 +63,18 @@ TEST_F(StateDataTest, MultipleLostPacketsEvent) { 100, kVersion)); OutstandingPacket outstandingPacket1( - packet1, Clock::now(), 1234, 0, false, 1234, 0, 0, 0, LossState(), 0); + packet1, + Clock::now(), + 1234, + 0, + false, + 1234, + 0, + 0, + 0, + LossState(), + 0, + OutstandingPacketMetadata::DetailsPerStream()); RegularQuicWritePacket packet2(LongHeader( LongHeader::Types::Initial, @@ -61,7 +83,18 @@ TEST_F(StateDataTest, MultipleLostPacketsEvent) { 110, kVersion)); OutstandingPacket outstandingPacket2( - packet2, Clock::now(), 1357, 0, false, 1357, 0, 0, 0, LossState(), 0); + packet2, + Clock::now(), + 1357, + 0, + false, + 1357, + 0, + 0, + 0, + LossState(), + 0, + OutstandingPacketMetadata::DetailsPerStream()); CongestionController::LossEvent loss; loss.addLostPacket(outstandingPacket1);