1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-11-27 03:41:14 +03:00

Support for TX timestamping

Summary:
Adds support for timestamping on TX (TX byte events). This allows the application to determine when a byte that it previously wrote to the transport was put onto the wire.

Callbacks are processed within a new function `QuicTransportBase::processCallbacksAfterWriteData`, which is invoked by `writeSocketDataAndCatch`.

Reviewed By: mjoras

Differential Revision: D22008855

fbshipit-source-id: 99c1697cb74bb2387dbad231611be58f9392c99f
This commit is contained in:
Brandon Schlinker
2020-07-16 22:44:15 -07:00
committed by Facebook GitHub Bot
parent d332cc4e0c
commit b4df09831b
16 changed files with 1446 additions and 38 deletions

View File

@@ -1880,6 +1880,38 @@ TEST_F(QuicStreamFunctionsTest, LargestWriteOffsetSeenNoFIN) {
EXPECT_EQ(120, getLargestWriteOffsetSeen(stream));
}
TEST_F(QuicStreamFunctionsTest, StreamLargestWriteOffsetTxedNothingTxed) {
QuicStreamState stream(3, conn);
stream.currentWriteOffset = 0;
EXPECT_EQ(folly::none, getLargestWriteOffsetTxed(stream));
}
TEST_F(QuicStreamFunctionsTest, StreamLargestWriteOffsetTxedOneByteTxed) {
QuicStreamState stream(3, conn);
stream.currentWriteOffset = 1;
ASSERT_TRUE(getLargestWriteOffsetTxed(stream).has_value());
EXPECT_EQ(0, getLargestWriteOffsetTxed(stream).value());
}
TEST_F(QuicStreamFunctionsTest, StreamLargestWriteOffsetTxedHundredBytesTxed) {
QuicStreamState stream(3, conn);
stream.currentWriteOffset = 100;
ASSERT_TRUE(getLargestWriteOffsetTxed(stream).has_value());
EXPECT_EQ(99, getLargestWriteOffsetTxed(stream).value());
}
TEST_F(
QuicStreamFunctionsTest,
StreamLargestWriteOffsetTxedIgnoreFinalWriteOffset) {
// finalWriteOffset is set when writeChain is called with EoR, but we should
// always use currentWriteOffset to determine how many bytes have been TXed
QuicStreamState stream(3, conn);
stream.currentWriteOffset = 10;
stream.finalWriteOffset = 100;
ASSERT_TRUE(getLargestWriteOffsetTxed(stream).has_value());
EXPECT_EQ(9, getLargestWriteOffsetTxed(stream).value());
}
TEST_F(QuicStreamFunctionsTest, StreamNextOffsetToDeliverNothingAcked) {
QuicStreamState stream(3, conn);
stream.currentWriteOffset = 100;