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

@@ -235,6 +235,76 @@ TEST_F(ClientStateMachineTest, TestProcessKnobFramesSupportedParamDisabled) {
EXPECT_FALSE(clientConn.peerAdvertisedKnobFrameSupport);
}
TEST_F(
ClientStateMachineTest,
TestProcessReliableStreamResetSupportedParamEnabled) {
QuicClientConnectionState clientConn(
FizzClientQuicHandshakeContext::Builder().build());
std::vector<TransportParameter> transportParams;
transportParams.push_back(
encodeEmptyParameter(TransportParameterId::reliable_stream_reset));
ServerTransportParameters serverTransportParams = {
std::move(transportParams)};
processServerInitialParams(clientConn, serverTransportParams, 0);
EXPECT_TRUE(clientConn.peerAdvertisedReliableStreamResetSupport);
}
TEST_F(
ClientStateMachineTest,
TestProcessReliableStreamResetSupportedParamDisabled) {
QuicClientConnectionState clientConn(
FizzClientQuicHandshakeContext::Builder().build());
std::vector<TransportParameter> transportParams;
ServerTransportParameters serverTransportParams = {
std::move(transportParams)};
processServerInitialParams(clientConn, serverTransportParams, 0);
EXPECT_FALSE(clientConn.peerAdvertisedReliableStreamResetSupport);
}
TEST_F(ClientStateMachineTest, TestProcessReliableStreamResetNonEmptyParam) {
QuicClientConnectionState clientConn(
FizzClientQuicHandshakeContext::Builder().build());
std::vector<TransportParameter> transportParams;
transportParams.push_back(
encodeIntegerParameter(TransportParameterId::reliable_stream_reset, 0));
ServerTransportParameters serverTransportParams = {
std::move(transportParams)};
EXPECT_THROW(
processServerInitialParams(clientConn, serverTransportParams, 0),
QuicTransportException);
}
TEST_F(
ClientStateMachineTest,
TestEncodeReliableStreamResetSupportedParamEnabled) {
QuicClientConnectionState clientConn(
FizzClientQuicHandshakeContext::Builder().build());
clientConn.transportSettings.advertisedReliableResetStreamSupport = true;
auto customTransportParams = getSupportedExtTransportParams(clientConn);
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_F(
ClientStateMachineTest,
TestEncodeReliableStreamResetSupportedParamDisabled) {
QuicClientConnectionState clientConn(
FizzClientQuicHandshakeContext::Builder().build());
clientConn.transportSettings.advertisedReliableResetStreamSupport = false;
auto customTransportParams = getSupportedExtTransportParams(clientConn);
EXPECT_THAT(
customTransportParams,
Not(Contains(testing::Field(
&TransportParameter::parameter,
testing::Eq(TransportParameterId::reliable_stream_reset)))));
}
struct maxStreamGroupsAdvertizedtestStruct {
uint64_t peerMaxGroupsIn;
OptionalIntegral<uint64_t> expectedTransportSettingVal;