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:
committed by
Facebook GitHub Bot
parent
48cb898fe0
commit
b6c657fd23
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user