1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-08-06 22:22:38 +03:00

Change OutstandingPacketMetadata::DetailsPerStream into a map

Summary: As titled. Reduces confusion around `DetailsPerStream` containing a map that must be accessed through `get`, and instead just uses a similar approach as `quic::IntervalSet` — inheriting from the underlying data structure. While there's some disadvantages of this approach, they're minimized by only exposing a subset of accessors from the underlying data structure.

Reviewed By: afrind, mjoras

Differential Revision: D31887098

fbshipit-source-id: 51bdab35e6276926b6d85095d062971326be1b64
This commit is contained in:
Brandon Schlinker
2021-12-11 22:39:07 -08:00
committed by Facebook GitHub Bot
parent 82fd138b5e
commit f19b20b107
2 changed files with 48 additions and 36 deletions

View File

@@ -1683,7 +1683,7 @@ TEST_F(QuicTransportFunctionsTest, TestStreamDetailsControlPacket) {
ASSERT_EQ(1, conn->outstandings.packets.size());
const auto& detailsPerStream =
getFirstOutstandingPacket(*conn, PacketNumberSpace::AppData)
->metadata.detailsPerStream.getDetails();
->metadata.detailsPerStream;
EXPECT_EQ(0, detailsPerStream.size());
}
@@ -1707,9 +1707,9 @@ TEST_F(QuicTransportFunctionsTest, TestStreamDetailsAppDataPacketSingleStream) {
ASSERT_EQ(1, conn->outstandings.packets.size());
auto detailsPerStream =
getFirstOutstandingPacket(*conn, PacketNumberSpace::AppData)
->metadata.detailsPerStream.getDetails();
->metadata.detailsPerStream;
EXPECT_EQ(1, detailsPerStream.size());
auto streamDetail = detailsPerStream[stream->id];
auto streamDetail = detailsPerStream.at(stream->id);
EXPECT_EQ(false, streamDetail.finObserved);
EXPECT_EQ(10, streamDetail.streamBytesSent);
EXPECT_EQ(10, streamDetail.newStreamBytesSent);
@@ -1742,9 +1742,9 @@ TEST_F(
ASSERT_EQ(1, conn->outstandings.packets.size());
auto detailsPerStream =
getFirstOutstandingPacket(*conn, PacketNumberSpace::AppData)
->metadata.detailsPerStream.getDetails();
->metadata.detailsPerStream;
EXPECT_EQ(1, detailsPerStream.size());
auto streamDetail = detailsPerStream[stream->id];
auto streamDetail = detailsPerStream.at(stream->id);
EXPECT_EQ(true, streamDetail.finObserved);
EXPECT_EQ(15, streamDetail.streamBytesSent);
EXPECT_EQ(15, streamDetail.newStreamBytesSent);
@@ -1777,9 +1777,9 @@ TEST_F(
// The first outstanding packet is the one with new data
auto detailsPerStream =
getFirstOutstandingPacket(*conn, PacketNumberSpace::AppData)
->metadata.detailsPerStream.getDetails();
->metadata.detailsPerStream;
EXPECT_EQ(1, detailsPerStream.size());
auto streamDetail = detailsPerStream[stream->id];
auto streamDetail = detailsPerStream.at(stream->id);
EXPECT_EQ(false, streamDetail.finObserved);
EXPECT_EQ(frame1Len, streamDetail.streamBytesSent);
EXPECT_EQ(frame1Len, streamDetail.newStreamBytesSent);
@@ -1801,9 +1801,9 @@ TEST_F(
// The second outstanding packet is the one with retransmit data
detailsPerStream = getLastOutstandingPacket(*conn, PacketNumberSpace::AppData)
->metadata.detailsPerStream.getDetails();
->metadata.detailsPerStream;
EXPECT_EQ(1, detailsPerStream.size());
streamDetail = detailsPerStream[stream->id];
streamDetail = detailsPerStream.at(stream->id);
EXPECT_EQ(false, streamDetail.finObserved);
EXPECT_EQ(frame1Len, streamDetail.streamBytesSent);
EXPECT_EQ(0, streamDetail.newStreamBytesSent);
@@ -1831,9 +1831,9 @@ TEST_F(
// The third outstanding packet will have both new and retransmitted data.
detailsPerStream = getLastOutstandingPacket(*conn, PacketNumberSpace::AppData)
->metadata.detailsPerStream.getDetails();
->metadata.detailsPerStream;
EXPECT_EQ(1, detailsPerStream.size());
streamDetail = detailsPerStream[stream->id];
streamDetail = detailsPerStream.at(stream->id);
EXPECT_EQ(false, streamDetail.finObserved);
EXPECT_EQ(frame1Len + frame2Len, streamDetail.streamBytesSent);
EXPECT_EQ(frame2Len, streamDetail.newStreamBytesSent);
@@ -1856,9 +1856,9 @@ TEST_F(
// The forth outstanding packet will have only retransmit data.
detailsPerStream = getLastOutstandingPacket(*conn, PacketNumberSpace::AppData)
->metadata.detailsPerStream.getDetails();
->metadata.detailsPerStream;
EXPECT_EQ(1, detailsPerStream.size());
streamDetail = detailsPerStream[stream->id];
streamDetail = detailsPerStream.at(stream->id);
EXPECT_EQ(false, streamDetail.finObserved);
EXPECT_EQ(frame1Len + frame2Len, streamDetail.streamBytesSent);
EXPECT_EQ(0, streamDetail.newStreamBytesSent);
@@ -1900,10 +1900,10 @@ TEST_F(
ASSERT_EQ(1, conn->outstandings.packets.size());
auto detailsPerStream =
getFirstOutstandingPacket(*conn, PacketNumberSpace::AppData)
->metadata.detailsPerStream.getDetails();
->metadata.detailsPerStream;
EXPECT_EQ(2, detailsPerStream.size());
auto stream1Detail = detailsPerStream[stream1Id];
auto stream2Detail = detailsPerStream[stream2Id];
auto stream1Detail = detailsPerStream.at(stream1Id);
auto stream2Detail = detailsPerStream.at(stream2Id);
EXPECT_EQ(false, stream1Detail.finObserved);
EXPECT_EQ(5, stream1Detail.streamBytesSent);