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

Allow the server to indicate that it supports minAckDelay to the client

Summary: When the server transport settings has a minAckDelay set, send the minAckDelay parameter to the client to allow the client to send ACK_FREQUENCY frames.

Reviewed By: mjoras

Differential Revision: D44765256

fbshipit-source-id: 05c3c2da8e8a93dddb12260e13f218d560a410d6
This commit is contained in:
Joseph Beshay
2023-04-07 12:10:50 -07:00
committed by Facebook GitHub Bot
parent 48cb898fe0
commit b6c657fd23
2 changed files with 57 additions and 0 deletions

View File

@@ -16,6 +16,7 @@
#include <quic/common/test/TestUtils.h>
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
#include <quic/server/test/Mocks.h>
#include <chrono>
using namespace testing;
@@ -229,6 +230,55 @@ TEST(ServerStateMachineTest, TestProcessMaxDatagramSizeZeroOk) {
EXPECT_EQ(serverConn.datagramState.maxWriteFrameSize, 0);
}
TEST(ServerStateMachineTest, TestProcessMinAckDelayNotSet) {
QuicServerConnectionState serverConn(
FizzServerQuicHandshakeContext::Builder().build());
std::vector<TransportParameter> transportParams;
ClientTransportParameters clientTransportParams = {
std::move(transportParams)};
processClientInitialParams(serverConn, clientTransportParams);
EXPECT_FALSE(serverConn.peerAdvertisedKnobFrameSupport);
}
TEST(ServerStateMachineTest, TestProcessMinAckDelaySet) {
QuicServerConnectionState serverConn(
FizzServerQuicHandshakeContext::Builder().build());
std::vector<TransportParameter> transportParams;
transportParams.push_back(
encodeIntegerParameter(TransportParameterId::min_ack_delay, 1000));
ClientTransportParameters clientTransportParams = {
std::move(transportParams)};
processClientInitialParams(serverConn, clientTransportParams);
ASSERT_TRUE(serverConn.peerMinAckDelay.has_value());
ASSERT_EQ(
serverConn.peerMinAckDelay.value(), std::chrono::microseconds(1000));
}
TEST(ServerStateMachineTest, TestEncodeMinAckDelayParamSet) {
QuicServerConnectionState serverConn(
FizzServerQuicHandshakeContext::Builder().build());
serverConn.transportSettings.minAckDelay = std::chrono::microseconds(1000);
auto customTransportParams =
quic::setSupportedExtensionTransportParameters(serverConn);
auto minAckDelayParam = getIntegerParameter(
TransportParameterId::min_ack_delay, customTransportParams);
ASSERT_TRUE(minAckDelayParam.has_value());
EXPECT_EQ(minAckDelayParam.value(), 1000);
}
TEST(ServerStateMachineTest, TestEncodeMinAckDelayParamNotSet) {
QuicServerConnectionState serverConn(
FizzServerQuicHandshakeContext::Builder().build());
serverConn.transportSettings.advertisedKnobFrameSupport = false;
auto customTransportParams =
quic::setSupportedExtensionTransportParameters(serverConn);
EXPECT_THAT(
customTransportParams,
Not(Contains(testing::Field(
&TransportParameter::parameter,
testing::Eq(TransportParameterId::min_ack_delay)))));
}
TEST(ServerStateMachineTest, TestProcessKnobFramesSupportedParamEnabled) {
QuicServerConnectionState serverConn(
FizzServerQuicHandshakeContext::Builder().build());