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

Add reliable_stream_reset transport parameter

Summary: This diff adds the reliable_stream_reset transport parameter to mvfst.

Reviewed By: hanidamlaj

Differential Revision: D65383676

fbshipit-source-id: cb2f6a1a90004ea489447b67ed3cfc12ca90b804
This commit is contained in:
Aman Sharma
2024-12-17 11:53:15 -08:00
committed by Facebook GitHub Bot
parent 61c3de4842
commit ae011587d5
12 changed files with 194 additions and 5 deletions

View File

@@ -336,6 +336,76 @@ TEST(ServerStateMachineTest, TestEncodeKnobFrameSupportedParamDisabled) {
testing::Eq(TransportParameterId::knob_frames_supported)))));
}
TEST(
ServerStateMachineTest,
TestProcessReliableStreamResetSupportedParamEnabled) {
QuicServerConnectionState serverConn(
FizzServerQuicHandshakeContext::Builder().build());
std::vector<TransportParameter> transportParams;
transportParams.push_back(
encodeEmptyParameter(TransportParameterId::reliable_stream_reset));
ClientTransportParameters clientTransportParams = {
std::move(transportParams)};
processClientInitialParams(serverConn, clientTransportParams);
EXPECT_TRUE(serverConn.peerAdvertisedReliableStreamResetSupport);
}
TEST(
ServerStateMachineTest,
TestProcessReliableStreamResetSupportedParamDisabled) {
QuicServerConnectionState serverConn(
FizzServerQuicHandshakeContext::Builder().build());
std::vector<TransportParameter> transportParams;
ClientTransportParameters clientTransportParams = {
std::move(transportParams)};
processClientInitialParams(serverConn, clientTransportParams);
EXPECT_FALSE(serverConn.peerAdvertisedReliableStreamResetSupport);
}
TEST(ServerStateMachineTest, TestProcessReliableStreamResetNonEmptyParam) {
QuicServerConnectionState serverConn(
FizzServerQuicHandshakeContext::Builder().build());
std::vector<TransportParameter> transportParams;
transportParams.push_back(
encodeIntegerParameter(TransportParameterId::reliable_stream_reset, 0));
ClientTransportParameters clientTransportParams = {
std::move(transportParams)};
EXPECT_THROW(
processClientInitialParams(serverConn, clientTransportParams),
QuicTransportException);
}
TEST(
ServerStateMachineTest,
TestEncodeReliableStreamResetSupportedParamEnabled) {
QuicServerConnectionState serverConn(
FizzServerQuicHandshakeContext::Builder().build());
serverConn.transportSettings.advertisedReliableResetStreamSupport = true;
auto customTransportParams = getSupportedExtTransportParams(serverConn);
EXPECT_THAT(
customTransportParams,
Contains(testing::Field(
&TransportParameter::parameter,
testing::Eq(TransportParameterId::reliable_stream_reset))));
auto it = findParameter(
customTransportParams, TransportParameterId::reliable_stream_reset);
EXPECT_TRUE(it->value->empty());
}
TEST(
ServerStateMachineTest,
TestEncodeReliableStreamResetSupportedParamDisabled) {
QuicServerConnectionState serverConn(
FizzServerQuicHandshakeContext::Builder().build());
serverConn.transportSettings.advertisedReliableResetStreamSupport = false;
auto customTransportParams = getSupportedExtTransportParams(serverConn);
EXPECT_THAT(
customTransportParams,
Not(Contains(testing::Field(
&TransportParameter::parameter,
testing::Eq(TransportParameterId::reliable_stream_reset)))));
}
TEST(ServerStateMachineTest, TestProcessActiveConnectionIdLimitNotSet) {
QuicServerConnectionState serverConn(
FizzServerQuicHandshakeContext::Builder().build());