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

Add new retransmission buffer directly at the end of buffer list

Summary:
The retransmission buffer list is sorted by offset. New written
always has higher offset than existing ones. Thus the binary search isn't
necessary.

Reviewed By: mjoras

Differential Revision: D17477354

fbshipit-source-id: d413a5c84c3831b257d5c1e6375bec56a763926b
This commit is contained in:
Yang Chi
2019-09-24 15:14:05 -07:00
committed by Facebook Github Bot
parent 6f49898bf9
commit f5ca7ef590
4 changed files with 129 additions and 10 deletions

View File

@ -1155,6 +1155,41 @@ TEST_F(QuicTransportFunctionsTest, WriteQuicDataToSocketWithNoBytesForHeader) {
EXPECT_TRUE(conn->outstandingPackets.empty());
}
TEST_F(QuicTransportFunctionsTest, WriteQuicDataToSocketRetxBufferSorted) {
EventBase evb;
folly::test::MockAsyncUDPSocket socket(&evb);
auto conn = createConn();
auto stream = conn->streamManager->createNextBidirectionalStream().value();
auto buf1 = IOBuf::copyBuffer("Whatsapp");
writeDataToQuicStream(*stream, std::move(buf1), false);
writeQuicDataToSocket(
socket,
*conn,
*conn->clientConnectionId,
*conn->serverConnectionId,
*aead,
*headerCipher,
getVersion(*conn),
conn->transportSettings.writeConnectionDataPacketsLimit);
EXPECT_EQ(1, stream->retransmissionBuffer.size());
auto buf2 = IOBuf::copyBuffer("Google Buzz");
writeDataToQuicStream(*stream, std::move(buf2), false);
writeQuicDataToSocket(
socket,
*conn,
*conn->clientConnectionId,
*conn->serverConnectionId,
*aead,
*headerCipher,
getVersion(*conn),
conn->transportSettings.writeConnectionDataPacketsLimit);
EXPECT_EQ(2, stream->retransmissionBuffer.size());
EXPECT_GT(
stream->retransmissionBuffer.back().offset,
stream->retransmissionBuffer.front().offset);
}
TEST_F(QuicTransportFunctionsTest, NothingWritten) {
auto conn = createConn();
auto mockCongestionController = std::make_unique<MockCongestionController>();