mirror of
https://github.com/facebookincubator/mvfst.git
synced 2025-08-08 09:42:06 +03:00
Start splitting the fizz specific parts of the server (#160)
Summary: This is following a similar pattern than what was done for the client side. Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/160 Reviewed By: yangchi Differential Revision: D23560951 Pulled By: xttjsn fbshipit-source-id: 351417cbfa3230112fff4c4de59b307f88389cf6
This commit is contained in:
committed by
Facebook GitHub Bot
parent
a5619effd6
commit
04c63839e4
@@ -51,10 +51,10 @@ quic_add_test(TARGET QuicPacketSchedulerTest
|
|||||||
DEPENDS
|
DEPENDS
|
||||||
Folly::folly
|
Folly::folly
|
||||||
mvfst_fizz_client
|
mvfst_fizz_client
|
||||||
|
mvfst_server
|
||||||
mvfst_codec_pktbuilder
|
mvfst_codec_pktbuilder
|
||||||
mvfst_transport
|
mvfst_transport
|
||||||
mvfst_test_utils
|
mvfst_test_utils
|
||||||
mvfst_server
|
|
||||||
)
|
)
|
||||||
|
|
||||||
quic_add_test(TARGET IoBufQuicBatchTest
|
quic_add_test(TARGET IoBufQuicBatchTest
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include <folly/io/async/test/MockAsyncUDPSocket.h>
|
#include <folly/io/async/test/MockAsyncUDPSocket.h>
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
|
|
||||||
using namespace testing;
|
using namespace testing;
|
||||||
@@ -25,6 +26,9 @@ constexpr const auto kNumLoops = 10;
|
|||||||
|
|
||||||
struct QuicBatchWriterTest : public ::testing::Test,
|
struct QuicBatchWriterTest : public ::testing::Test,
|
||||||
public ::testing::WithParamInterface<bool> {
|
public ::testing::WithParamInterface<bool> {
|
||||||
|
QuicBatchWriterTest()
|
||||||
|
: conn_(std::make_shared<FizzServerQuicHandshakeContext>()) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QuicServerConnectionState conn_;
|
QuicServerConnectionState conn_;
|
||||||
};
|
};
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
#include <quic/codec/test/Mocks.h>
|
#include <quic/codec/test/Mocks.h>
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
#include <quic/fizz/client/handshake/FizzClientQuicHandshakeContext.h>
|
#include <quic/fizz/client/handshake/FizzClientQuicHandshakeContext.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
#include <quic/state/QuicStreamFunctions.h>
|
#include <quic/state/QuicStreamFunctions.h>
|
||||||
|
|
||||||
@@ -184,7 +185,8 @@ TEST_F(QuicPacketSchedulerTest, PaddingUpToWrapperSize) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicPacketSchedulerTest, CryptoServerInitialPadded) {
|
TEST_F(QuicPacketSchedulerTest, CryptoServerInitialPadded) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto connId = getTestConnectionId();
|
auto connId = getTestConnectionId();
|
||||||
PacketNum nextPacketNum = getNextPacketNum(conn, PacketNumberSpace::Initial);
|
PacketNum nextPacketNum = getNextPacketNum(conn, PacketNumberSpace::Initial);
|
||||||
LongHeader longHeader1(
|
LongHeader longHeader1(
|
||||||
@@ -216,7 +218,8 @@ TEST_F(QuicPacketSchedulerTest, CryptoServerInitialPadded) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicPacketSchedulerTest, PadTwoInitialPackets) {
|
TEST_F(QuicPacketSchedulerTest, PadTwoInitialPackets) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto connId = getTestConnectionId();
|
auto connId = getTestConnectionId();
|
||||||
PacketNum nextPacketNum = getNextPacketNum(conn, PacketNumberSpace::Initial);
|
PacketNum nextPacketNum = getNextPacketNum(conn, PacketNumberSpace::Initial);
|
||||||
LongHeader longHeader1(
|
LongHeader longHeader1(
|
||||||
@@ -299,7 +302,8 @@ TEST_F(QuicPacketSchedulerTest, CryptoPaddingRetransmissionClientInitial) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicPacketSchedulerTest, CryptoSchedulerOnlySingleLossFits) {
|
TEST_F(QuicPacketSchedulerTest, CryptoSchedulerOnlySingleLossFits) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto connId = getTestConnectionId();
|
auto connId = getTestConnectionId();
|
||||||
LongHeader longHeader(
|
LongHeader longHeader(
|
||||||
LongHeader::Types::Handshake,
|
LongHeader::Types::Handshake,
|
||||||
@@ -362,7 +366,8 @@ TEST_F(QuicPacketSchedulerTest, CryptoWritePartialLossBuffer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicPacketSchedulerTest, StreamFrameSchedulerExists) {
|
TEST_F(QuicPacketSchedulerTest, StreamFrameSchedulerExists) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
||||||
auto connId = getTestConnectionId();
|
auto connId = getTestConnectionId();
|
||||||
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
||||||
@@ -384,7 +389,8 @@ TEST_F(QuicPacketSchedulerTest, StreamFrameSchedulerExists) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicPacketSchedulerTest, StreamFrameNoSpace) {
|
TEST_F(QuicPacketSchedulerTest, StreamFrameNoSpace) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
||||||
auto connId = getTestConnectionId();
|
auto connId = getTestConnectionId();
|
||||||
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
||||||
@@ -407,7 +413,8 @@ TEST_F(QuicPacketSchedulerTest, StreamFrameNoSpace) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicPacketSchedulerTest, StreamFrameSchedulerStreamNotExists) {
|
TEST_F(QuicPacketSchedulerTest, StreamFrameSchedulerStreamNotExists) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto connId = getTestConnectionId();
|
auto connId = getTestConnectionId();
|
||||||
StreamId nonExistentStream = 11;
|
StreamId nonExistentStream = 11;
|
||||||
|
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
#include <quic/api/QuicTransportBase.h>
|
#include <quic/api/QuicTransportBase.h>
|
||||||
#include <quic/codec/DefaultConnectionIdAlgo.h>
|
#include <quic/codec/DefaultConnectionIdAlgo.h>
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
#include <quic/state/QuicStreamFunctions.h>
|
#include <quic/state/QuicStreamFunctions.h>
|
||||||
#include <quic/state/test/Mocks.h>
|
#include <quic/state/test/Mocks.h>
|
||||||
@@ -156,7 +157,8 @@ class TestQuicTransport
|
|||||||
ConnectionCallback& cb)
|
ConnectionCallback& cb)
|
||||||
: QuicTransportBase(evb, std::move(socket)) {
|
: QuicTransportBase(evb, std::move(socket)) {
|
||||||
setConnectionCallback(&cb);
|
setConnectionCallback(&cb);
|
||||||
auto conn = std::make_unique<QuicServerConnectionState>();
|
auto conn = std::make_unique<QuicServerConnectionState>(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn->clientConnectionId = ConnectionId({10, 9, 8, 7});
|
conn->clientConnectionId = ConnectionId({10, 9, 8, 7});
|
||||||
conn->version = QuicVersion::MVFST;
|
conn->version = QuicVersion::MVFST;
|
||||||
transportConn = conn.get();
|
transportConn = conn.get();
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include <folly/io/async/test/MockAsyncUDPSocket.h>
|
#include <folly/io/async/test/MockAsyncUDPSocket.h>
|
||||||
#include <quic/api/test/Mocks.h>
|
#include <quic/api/test/Mocks.h>
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/logging/FileQLogger.h>
|
#include <quic/logging/FileQLogger.h>
|
||||||
#include <quic/logging/QLoggerConstants.h>
|
#include <quic/logging/QLoggerConstants.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
@@ -149,7 +150,8 @@ class QuicTransportFunctionsTest : public Test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<QuicServerConnectionState> createConn() {
|
std::unique_ptr<QuicServerConnectionState> createConn() {
|
||||||
auto conn = std::make_unique<QuicServerConnectionState>();
|
auto conn = std::make_unique<QuicServerConnectionState>(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn->serverConnectionId = getTestConnectionId();
|
conn->serverConnectionId = getTestConnectionId();
|
||||||
conn->clientConnectionId = getTestConnectionId();
|
conn->clientConnectionId = getTestConnectionId();
|
||||||
conn->version = QuicVersion::MVFST;
|
conn->version = QuicVersion::MVFST;
|
||||||
@@ -1555,7 +1557,8 @@ TEST_F(QuicTransportFunctionsTest, WriteProbingOldData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicTransportFunctionsTest, WriteProbingCryptoData) {
|
TEST_F(QuicTransportFunctionsTest, WriteProbingCryptoData) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.serverConnectionId = getTestConnectionId();
|
conn.serverConnectionId = getTestConnectionId();
|
||||||
conn.clientConnectionId = getTestConnectionId();
|
conn.clientConnectionId = getTestConnectionId();
|
||||||
// writeCryptoDataProbesToSocketForTest writes Initial LongHeader, thus it
|
// writeCryptoDataProbesToSocketForTest writes Initial LongHeader, thus it
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include <quic/api/QuicTransportBase.h>
|
#include <quic/api/QuicTransportBase.h>
|
||||||
#include <quic/api/QuicTransportFunctions.h>
|
#include <quic/api/QuicTransportFunctions.h>
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
|
|
||||||
namespace quic {
|
namespace quic {
|
||||||
|
|
||||||
@@ -24,7 +25,8 @@ class TestQuicTransport
|
|||||||
ConnectionCallback& cb)
|
ConnectionCallback& cb)
|
||||||
: QuicTransportBase(evb, std::move(socket)) {
|
: QuicTransportBase(evb, std::move(socket)) {
|
||||||
setConnectionCallback(&cb);
|
setConnectionCallback(&cb);
|
||||||
conn_.reset(new QuicServerConnectionState());
|
conn_.reset(new QuicServerConnectionState(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>()));
|
||||||
conn_->clientConnectionId = ConnectionId({9, 8, 7, 6});
|
conn_->clientConnectionId = ConnectionId({9, 8, 7, 6});
|
||||||
conn_->serverConnectionId = ConnectionId({1, 2, 3, 4});
|
conn_->serverConnectionId = ConnectionId({1, 2, 3, 4});
|
||||||
conn_->version = QuicVersion::MVFST;
|
conn_->version = QuicVersion::MVFST;
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
#include <quic/codec/QuicPacketRebuilder.h>
|
#include <quic/codec/QuicPacketRebuilder.h>
|
||||||
#include <quic/codec/test/Mocks.h>
|
#include <quic/codec/test/Mocks.h>
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
#include <quic/state/QuicStateFunctions.h>
|
#include <quic/state/QuicStateFunctions.h>
|
||||||
#include <quic/state/QuicStreamFunctions.h>
|
#include <quic/state/QuicStreamFunctions.h>
|
||||||
@@ -64,7 +65,8 @@ TEST_F(QuicPacketRebuilderTest, RebuildPacket) {
|
|||||||
ackBlocks.insert(10, 100);
|
ackBlocks.insert(10, 100);
|
||||||
ackBlocks.insert(200, 1000);
|
ackBlocks.insert(200, 1000);
|
||||||
AckFrameMetaData ackMeta(ackBlocks, 0us, kDefaultAckDelayExponent);
|
AckFrameMetaData ackMeta(ackBlocks, 0us, kDefaultAckDelayExponent);
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
||||||
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
||||||
auto streamId = stream->id;
|
auto streamId = stream->id;
|
||||||
@@ -201,7 +203,8 @@ TEST_F(QuicPacketRebuilderTest, RebuildAfterResetStream) {
|
|||||||
RegularQuicPacketBuilder regularBuilder1(
|
RegularQuicPacketBuilder regularBuilder1(
|
||||||
kDefaultUDPSendPacketLen, std::move(shortHeader1), 0 /* largestAcked */);
|
kDefaultUDPSendPacketLen, std::move(shortHeader1), 0 /* largestAcked */);
|
||||||
regularBuilder1.encodePacketHeader();
|
regularBuilder1.encodePacketHeader();
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
||||||
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
||||||
auto streamId = stream->id;
|
auto streamId = stream->id;
|
||||||
@@ -237,7 +240,8 @@ TEST_F(QuicPacketRebuilderTest, FinOnlyStreamRebuild) {
|
|||||||
RegularQuicPacketBuilder regularBuilder1(
|
RegularQuicPacketBuilder regularBuilder1(
|
||||||
kDefaultUDPSendPacketLen, std::move(shortHeader1), 0 /* largestAcked */);
|
kDefaultUDPSendPacketLen, std::move(shortHeader1), 0 /* largestAcked */);
|
||||||
regularBuilder1.encodePacketHeader();
|
regularBuilder1.encodePacketHeader();
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
||||||
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
||||||
auto streamId = stream->id;
|
auto streamId = stream->id;
|
||||||
@@ -281,7 +285,8 @@ TEST_F(QuicPacketRebuilderTest, RebuildDataStreamAndEmptyCryptoStream) {
|
|||||||
kDefaultUDPSendPacketLen, std::move(shortHeader1), 0 /* largestAcked */);
|
kDefaultUDPSendPacketLen, std::move(shortHeader1), 0 /* largestAcked */);
|
||||||
regularBuilder1.encodePacketHeader();
|
regularBuilder1.encodePacketHeader();
|
||||||
// Get a bunch frames
|
// Get a bunch frames
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
||||||
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
||||||
StreamId streamId = stream->id;
|
StreamId streamId = stream->id;
|
||||||
@@ -344,7 +349,8 @@ TEST_F(QuicPacketRebuilderTest, CannotRebuildEmptyCryptoStream) {
|
|||||||
kDefaultUDPSendPacketLen, std::move(shortHeader1), 0 /* largestAcked */);
|
kDefaultUDPSendPacketLen, std::move(shortHeader1), 0 /* largestAcked */);
|
||||||
regularBuilder1.encodePacketHeader();
|
regularBuilder1.encodePacketHeader();
|
||||||
// Get a bunch frames
|
// Get a bunch frames
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
uint64_t cryptoOffset = 0;
|
uint64_t cryptoOffset = 0;
|
||||||
auto cryptoBuf = folly::IOBuf::copyBuffer("NewSessionTicket");
|
auto cryptoBuf = folly::IOBuf::copyBuffer("NewSessionTicket");
|
||||||
|
|
||||||
@@ -382,7 +388,8 @@ TEST_F(QuicPacketRebuilderTest, CannotRebuild) {
|
|||||||
ackBlocks.insert(10, 100);
|
ackBlocks.insert(10, 100);
|
||||||
ackBlocks.insert(200, 1000);
|
ackBlocks.insert(200, 1000);
|
||||||
AckFrameMetaData ackMeta(ackBlocks, 0us, kDefaultAckDelayExponent);
|
AckFrameMetaData ackMeta(ackBlocks, 0us, kDefaultAckDelayExponent);
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
conn.streamManager->setMaxLocalBidirectionalStreams(10);
|
||||||
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
||||||
auto streamId = stream->id;
|
auto streamId = stream->id;
|
||||||
@@ -437,7 +444,8 @@ TEST_F(QuicPacketRebuilderTest, CloneCounter) {
|
|||||||
writeFrame(maxDataFrame, regularBuilder);
|
writeFrame(maxDataFrame, regularBuilder);
|
||||||
auto packet = std::move(regularBuilder).buildPacket();
|
auto packet = std::move(regularBuilder).buildPacket();
|
||||||
auto outstandingPacket = makeDummyOutstandingPacket(packet.packet, 1000);
|
auto outstandingPacket = makeDummyOutstandingPacket(packet.packet, 1000);
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
ShortHeader shortHeader2(
|
ShortHeader shortHeader2(
|
||||||
ProtectionType::KeyPhaseZero, getTestConnectionId(), 0);
|
ProtectionType::KeyPhaseZero, getTestConnectionId(), 0);
|
||||||
RegularQuicPacketBuilder regularBuilder2(
|
RegularQuicPacketBuilder regularBuilder2(
|
||||||
@@ -460,7 +468,8 @@ TEST_F(QuicPacketRebuilderTest, PurePingWontRebuild) {
|
|||||||
auto packet = std::move(regularBuilder).buildPacket();
|
auto packet = std::move(regularBuilder).buildPacket();
|
||||||
auto outstandingPacket = makeDummyOutstandingPacket(packet.packet, 50);
|
auto outstandingPacket = makeDummyOutstandingPacket(packet.packet, 50);
|
||||||
EXPECT_EQ(1, outstandingPacket.packet.frames.size());
|
EXPECT_EQ(1, outstandingPacket.packet.frames.size());
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
ShortHeader shortHeader2(
|
ShortHeader shortHeader2(
|
||||||
ProtectionType::KeyPhaseZero, getTestConnectionId(), 0);
|
ProtectionType::KeyPhaseZero, getTestConnectionId(), 0);
|
||||||
RegularQuicPacketBuilder regularBuilder2(
|
RegularQuicPacketBuilder regularBuilder2(
|
||||||
@@ -473,7 +482,8 @@ TEST_F(QuicPacketRebuilderTest, PurePingWontRebuild) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicPacketRebuilderTest, LastStreamFrameSkipLen) {
|
TEST_F(QuicPacketRebuilderTest, LastStreamFrameSkipLen) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.streamManager->setMaxLocalBidirectionalStreams(100);
|
conn.streamManager->setMaxLocalBidirectionalStreams(100);
|
||||||
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
||||||
auto streamId = stream->id;
|
auto streamId = stream->id;
|
||||||
@@ -547,7 +557,8 @@ TEST_F(QuicPacketRebuilderTest, LastStreamFrameSkipLen) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicPacketRebuilderTest, LastStreamFrameFinOnlyNotSkipLen) {
|
TEST_F(QuicPacketRebuilderTest, LastStreamFrameFinOnlyNotSkipLen) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.streamManager->setMaxLocalBidirectionalStreams(100);
|
conn.streamManager->setMaxLocalBidirectionalStreams(100);
|
||||||
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
auto stream = conn.streamManager->createNextBidirectionalStream().value();
|
||||||
auto streamId = stream->id;
|
auto streamId = stream->id;
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include <folly/portability/GTest.h>
|
#include <folly/portability/GTest.h>
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/state/test/Mocks.h>
|
#include <quic/state/test/Mocks.h>
|
||||||
|
|
||||||
using namespace testing;
|
using namespace testing;
|
||||||
@@ -129,7 +130,8 @@ class CopaTest : public Test {
|
|||||||
};
|
};
|
||||||
|
|
||||||
TEST_F(CopaTest, TestWritableBytes) {
|
TEST_F(CopaTest, TestWritableBytes) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.transportSettings.copaDeltaParam = 0.5;
|
conn.transportSettings.copaDeltaParam = 0.5;
|
||||||
Copa copa(conn);
|
Copa copa(conn);
|
||||||
EXPECT_TRUE(copa.inSlowStart());
|
EXPECT_TRUE(copa.inSlowStart());
|
||||||
@@ -145,7 +147,8 @@ TEST_F(CopaTest, TestWritableBytes) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CopaTest, PersistentCongestion) {
|
TEST_F(CopaTest, PersistentCongestion) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.transportSettings.copaDeltaParam = 0.5;
|
conn.transportSettings.copaDeltaParam = 0.5;
|
||||||
Copa copa(conn);
|
Copa copa(conn);
|
||||||
auto qLogger = std::make_shared<FileQLogger>(VantagePoint::Client);
|
auto qLogger = std::make_shared<FileQLogger>(VantagePoint::Client);
|
||||||
@@ -178,7 +181,8 @@ TEST_F(CopaTest, PersistentCongestion) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CopaTest, RemoveBytesWithoutLossOrAck) {
|
TEST_F(CopaTest, RemoveBytesWithoutLossOrAck) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.transportSettings.copaDeltaParam = 0.5;
|
conn.transportSettings.copaDeltaParam = 0.5;
|
||||||
Copa copa(conn);
|
Copa copa(conn);
|
||||||
auto qLogger = std::make_shared<FileQLogger>(VantagePoint::Client);
|
auto qLogger = std::make_shared<FileQLogger>(VantagePoint::Client);
|
||||||
@@ -210,7 +214,8 @@ TEST_F(CopaTest, RemoveBytesWithoutLossOrAck) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CopaTest, TestSlowStartAck) {
|
TEST_F(CopaTest, TestSlowStartAck) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.transportSettings.copaDeltaParam = 0.5;
|
conn.transportSettings.copaDeltaParam = 0.5;
|
||||||
Copa copa(conn);
|
Copa copa(conn);
|
||||||
auto qLogger = std::make_shared<FileQLogger>(VantagePoint::Client);
|
auto qLogger = std::make_shared<FileQLogger>(VantagePoint::Client);
|
||||||
@@ -312,7 +317,8 @@ TEST_F(CopaTest, TestSlowStartAck) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CopaTest, TestSteadyStateChanges) {
|
TEST_F(CopaTest, TestSteadyStateChanges) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.transportSettings.copaDeltaParam = 0.5;
|
conn.transportSettings.copaDeltaParam = 0.5;
|
||||||
Copa copa(conn);
|
Copa copa(conn);
|
||||||
auto now = Clock::now();
|
auto now = Clock::now();
|
||||||
@@ -349,7 +355,8 @@ TEST_F(CopaTest, TestSteadyStateChanges) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CopaTest, TestVelocity) {
|
TEST_F(CopaTest, TestVelocity) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.transportSettings.copaDeltaParam = 0.5;
|
conn.transportSettings.copaDeltaParam = 0.5;
|
||||||
conn.transportSettings.pacingTimerTickInterval = 10ms;
|
conn.transportSettings.pacingTimerTickInterval = 10ms;
|
||||||
Copa copa(conn);
|
Copa copa(conn);
|
||||||
@@ -444,7 +451,8 @@ TEST_F(CopaTest, TestVelocity) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CopaTest, NoLargestAckedPacketNoCrash) {
|
TEST_F(CopaTest, NoLargestAckedPacketNoCrash) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.transportSettings.copaDeltaParam = 0.5;
|
conn.transportSettings.copaDeltaParam = 0.5;
|
||||||
Copa copa(conn);
|
Copa copa(conn);
|
||||||
auto qLogger = std::make_shared<FileQLogger>(VantagePoint::Client);
|
auto qLogger = std::make_shared<FileQLogger>(VantagePoint::Client);
|
||||||
@@ -465,7 +473,8 @@ TEST_F(CopaTest, NoLargestAckedPacketNoCrash) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CopaTest, PacketLossInvokesPacer) {
|
TEST_F(CopaTest, PacketLossInvokesPacer) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.transportSettings.copaDeltaParam = 0.5;
|
conn.transportSettings.copaDeltaParam = 0.5;
|
||||||
Copa copa(conn);
|
Copa copa(conn);
|
||||||
auto mockPacer = std::make_unique<MockPacer>();
|
auto mockPacer = std::make_unique<MockPacer>();
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include <folly/portability/GTest.h>
|
#include <folly/portability/GTest.h>
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
|
|
||||||
using namespace testing;
|
using namespace testing;
|
||||||
|
|
||||||
@@ -58,7 +59,8 @@ createPacket(PacketNum packetNum, uint32_t size, TimePoint sendTime) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(NewRenoTest, TestLoss) {
|
TEST_F(NewRenoTest, TestLoss) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
NewReno reno(conn);
|
NewReno reno(conn);
|
||||||
EXPECT_TRUE(reno.inSlowStart());
|
EXPECT_TRUE(reno.inSlowStart());
|
||||||
|
|
||||||
@@ -97,7 +99,8 @@ TEST_F(NewRenoTest, TestLoss) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(NewRenoTest, SendMoreThanWritable) {
|
TEST_F(NewRenoTest, SendMoreThanWritable) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
NewReno reno(conn);
|
NewReno reno(conn);
|
||||||
EXPECT_TRUE(reno.inSlowStart());
|
EXPECT_TRUE(reno.inSlowStart());
|
||||||
|
|
||||||
@@ -114,7 +117,8 @@ TEST_F(NewRenoTest, SendMoreThanWritable) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(NewRenoTest, TestSlowStartAck) {
|
TEST_F(NewRenoTest, TestSlowStartAck) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
NewReno reno(conn);
|
NewReno reno(conn);
|
||||||
EXPECT_TRUE(reno.inSlowStart());
|
EXPECT_TRUE(reno.inSlowStart());
|
||||||
|
|
||||||
@@ -134,7 +138,8 @@ TEST_F(NewRenoTest, TestSlowStartAck) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(NewRenoTest, TestSteadyStateAck) {
|
TEST_F(NewRenoTest, TestSteadyStateAck) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
NewReno reno(conn);
|
NewReno reno(conn);
|
||||||
EXPECT_TRUE(reno.inSlowStart());
|
EXPECT_TRUE(reno.inSlowStart());
|
||||||
|
|
||||||
@@ -175,7 +180,8 @@ TEST_F(NewRenoTest, TestSteadyStateAck) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(NewRenoTest, TestWritableBytes) {
|
TEST_F(NewRenoTest, TestWritableBytes) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
NewReno reno(conn);
|
NewReno reno(conn);
|
||||||
EXPECT_TRUE(reno.inSlowStart());
|
EXPECT_TRUE(reno.inSlowStart());
|
||||||
|
|
||||||
@@ -190,7 +196,8 @@ TEST_F(NewRenoTest, TestWritableBytes) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(NewRenoTest, PersistentCongestion) {
|
TEST_F(NewRenoTest, PersistentCongestion) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
NewReno reno(conn);
|
NewReno reno(conn);
|
||||||
EXPECT_TRUE(reno.inSlowStart());
|
EXPECT_TRUE(reno.inSlowStart());
|
||||||
|
|
||||||
@@ -210,7 +217,8 @@ TEST_F(NewRenoTest, PersistentCongestion) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(NewRenoTest, RemoveBytesWithoutLossOrAck) {
|
TEST_F(NewRenoTest, RemoveBytesWithoutLossOrAck) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
NewReno reno(conn);
|
NewReno reno(conn);
|
||||||
EXPECT_TRUE(reno.inSlowStart());
|
EXPECT_TRUE(reno.inSlowStart());
|
||||||
|
|
||||||
|
23
quic/fizz/server/handshake/FizzServerHandshake.cpp
Normal file
23
quic/fizz/server/handshake/FizzServerHandshake.cpp
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerHandshake.h>
|
||||||
|
|
||||||
|
// This is necessary for the conversion between QuicServerConnectionState and
|
||||||
|
// QuicConnectionStateBase and can be removed once ServerHandshake accepts
|
||||||
|
// QuicServerConnectionState.
|
||||||
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
|
|
||||||
|
namespace quic {
|
||||||
|
|
||||||
|
FizzServerHandshake::FizzServerHandshake(
|
||||||
|
QuicServerConnectionState* conn,
|
||||||
|
std::shared_ptr<FizzServerQuicHandshakeContext> fizzContext)
|
||||||
|
: ServerHandshake(conn), fizzContext_(std::move(fizzContext)) {}
|
||||||
|
|
||||||
|
} // namespace quic
|
28
quic/fizz/server/handshake/FizzServerHandshake.h
Normal file
28
quic/fizz/server/handshake/FizzServerHandshake.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <quic/server/handshake/ServerHandshake.h>
|
||||||
|
|
||||||
|
namespace quic {
|
||||||
|
|
||||||
|
class FizzServerQuicHandshakeContext;
|
||||||
|
struct QuicServerConnectionState;
|
||||||
|
|
||||||
|
class FizzServerHandshake : public ServerHandshake {
|
||||||
|
public:
|
||||||
|
FizzServerHandshake(
|
||||||
|
QuicServerConnectionState* conn,
|
||||||
|
std::shared_ptr<FizzServerQuicHandshakeContext> fizzContext);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::shared_ptr<FizzServerQuicHandshakeContext> fizzContext_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace quic
|
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
|
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerHandshake.h>
|
||||||
|
|
||||||
|
namespace quic {
|
||||||
|
|
||||||
|
std::unique_ptr<ServerHandshake>
|
||||||
|
FizzServerQuicHandshakeContext::makeServerHandshake(
|
||||||
|
QuicServerConnectionState* conn) {
|
||||||
|
return std::make_unique<FizzServerHandshake>(conn, shared_from_this());
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace quic
|
25
quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h
Normal file
25
quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <quic/server/handshake/ServerHandshakeFactory.h>
|
||||||
|
|
||||||
|
namespace quic {
|
||||||
|
|
||||||
|
class FizzServerHandshake;
|
||||||
|
|
||||||
|
class FizzServerQuicHandshakeContext
|
||||||
|
: public ServerHandshakeFactory,
|
||||||
|
public std::enable_shared_from_this<FizzServerQuicHandshakeContext> {
|
||||||
|
public:
|
||||||
|
std::unique_ptr<ServerHandshake> makeServerHandshake(
|
||||||
|
QuicServerConnectionState* conn) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace quic
|
@@ -16,6 +16,7 @@
|
|||||||
#include <quic/codec/DefaultConnectionIdAlgo.h>
|
#include <quic/codec/DefaultConnectionIdAlgo.h>
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
#include <quic/fizz/client/handshake/FizzClientQuicHandshakeContext.h>
|
#include <quic/fizz/client/handshake/FizzClientQuicHandshakeContext.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/logging/test/Mocks.h>
|
#include <quic/logging/test/Mocks.h>
|
||||||
#include <quic/loss/QuicLossFunctions.h>
|
#include <quic/loss/QuicLossFunctions.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
@@ -60,7 +61,8 @@ class QuicLossFunctionsTest : public TestWithParam<PacketNumberSpace> {
|
|||||||
PacketType packetType);
|
PacketType packetType);
|
||||||
|
|
||||||
std::unique_ptr<QuicServerConnectionState> createConn() {
|
std::unique_ptr<QuicServerConnectionState> createConn() {
|
||||||
auto conn = std::make_unique<QuicServerConnectionState>();
|
auto conn = std::make_unique<QuicServerConnectionState>(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn->clientConnectionId = getTestConnectionId();
|
conn->clientConnectionId = getTestConnectionId();
|
||||||
conn->version = QuicVersion::MVFST;
|
conn->version = QuicVersion::MVFST;
|
||||||
conn->ackStates.initialAckState.nextPacketNum = 1;
|
conn->ackStates.initialAckState.nextPacketNum = 1;
|
||||||
|
@@ -17,6 +17,10 @@ add_library(
|
|||||||
handshake/DefaultAppTokenValidator.cpp
|
handshake/DefaultAppTokenValidator.cpp
|
||||||
handshake/StatelessResetGenerator.cpp
|
handshake/StatelessResetGenerator.cpp
|
||||||
state/ServerStateMachine.cpp
|
state/ServerStateMachine.cpp
|
||||||
|
|
||||||
|
# Fizz specific parts, will be split in its own lib eventually.
|
||||||
|
../fizz/server/handshake/FizzServerQuicHandshakeContext.cpp
|
||||||
|
../fizz/server/handshake/FizzServerHandshake.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(
|
target_include_directories(
|
||||||
|
@@ -8,9 +8,11 @@
|
|||||||
|
|
||||||
#include <quic/server/QuicServerTransport.h>
|
#include <quic/server/QuicServerTransport.h>
|
||||||
|
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/server/handshake/AppToken.h>
|
#include <quic/server/handshake/AppToken.h>
|
||||||
#include <quic/server/handshake/DefaultAppTokenValidator.h>
|
#include <quic/server/handshake/DefaultAppTokenValidator.h>
|
||||||
#include <quic/server/handshake/StatelessResetGenerator.h>
|
#include <quic/server/handshake/StatelessResetGenerator.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
namespace quic {
|
namespace quic {
|
||||||
@@ -21,7 +23,8 @@ QuicServerTransport::QuicServerTransport(
|
|||||||
ConnectionCallback& cb,
|
ConnectionCallback& cb,
|
||||||
std::shared_ptr<const fizz::server::FizzServerContext> ctx)
|
std::shared_ptr<const fizz::server::FizzServerContext> ctx)
|
||||||
: QuicTransportBase(evb, std::move(sock)), ctx_(std::move(ctx)) {
|
: QuicTransportBase(evb, std::move(sock)), ctx_(std::move(ctx)) {
|
||||||
auto tempConn = std::make_unique<QuicServerConnectionState>();
|
auto tempConn = std::make_unique<QuicServerConnectionState>(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
tempConn->serverAddr = socket_->address();
|
tempConn->serverAddr = socket_->address();
|
||||||
serverConn_ = tempConn.get();
|
serverConn_ = tempConn.get();
|
||||||
conn_.reset(tempConn.release());
|
conn_.reset(tempConn.release());
|
||||||
|
29
quic/server/handshake/ServerHandshakeFactory.h
Normal file
29
quic/server/handshake/ServerHandshakeFactory.h
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
namespace quic {
|
||||||
|
|
||||||
|
class ServerHandshake;
|
||||||
|
struct QuicServerConnectionState;
|
||||||
|
|
||||||
|
class ServerHandshakeFactory {
|
||||||
|
public:
|
||||||
|
virtual ~ServerHandshakeFactory() = default;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a new server handshake.
|
||||||
|
*/
|
||||||
|
virtual std::unique_ptr<ServerHandshake> makeServerHandshake(
|
||||||
|
QuicServerConnectionState* conn) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace quic
|
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include <quic/QuicConstants.h>
|
#include <quic/QuicConstants.h>
|
||||||
#include <quic/api/test/Mocks.h>
|
#include <quic/api/test/Mocks.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
|
|
||||||
#include <fizz/server/ResumptionState.h>
|
#include <fizz/server/ResumptionState.h>
|
||||||
@@ -25,7 +26,8 @@ namespace quic {
|
|||||||
namespace test {
|
namespace test {
|
||||||
|
|
||||||
TEST(DefaultAppTokenValidatorTest, TestValidParams) {
|
TEST(DefaultAppTokenValidatorTest, TestValidParams) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
||||||
conn.version = QuicVersion::MVFST;
|
conn.version = QuicVersion::MVFST;
|
||||||
conn.transportSettings.zeroRttSourceTokenMatchingPolicy =
|
conn.transportSettings.zeroRttSourceTokenMatchingPolicy =
|
||||||
@@ -53,7 +55,8 @@ TEST(DefaultAppTokenValidatorTest, TestValidParams) {
|
|||||||
TEST(
|
TEST(
|
||||||
DefaultAppTokenValidatorTest,
|
DefaultAppTokenValidatorTest,
|
||||||
TestValidUnequalParamsUpdateTransportSettings) {
|
TestValidUnequalParamsUpdateTransportSettings) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
||||||
conn.version = QuicVersion::MVFST;
|
conn.version = QuicVersion::MVFST;
|
||||||
conn.transportSettings.zeroRttSourceTokenMatchingPolicy =
|
conn.transportSettings.zeroRttSourceTokenMatchingPolicy =
|
||||||
@@ -87,7 +90,8 @@ TEST(
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(DefaultAppTokenValidatorTest, TestInvalidNullAppToken) {
|
TEST(DefaultAppTokenValidatorTest, TestInvalidNullAppToken) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
||||||
conn.version = QuicVersion::MVFST;
|
conn.version = QuicVersion::MVFST;
|
||||||
|
|
||||||
@@ -102,7 +106,8 @@ TEST(DefaultAppTokenValidatorTest, TestInvalidNullAppToken) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(DefaultAppTokenValidatorTest, TestInvalidEmptyTransportParams) {
|
TEST(DefaultAppTokenValidatorTest, TestInvalidEmptyTransportParams) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
||||||
conn.version = QuicVersion::MVFST;
|
conn.version = QuicVersion::MVFST;
|
||||||
|
|
||||||
@@ -120,7 +125,8 @@ TEST(DefaultAppTokenValidatorTest, TestInvalidEmptyTransportParams) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(DefaultAppTokenValidatorTest, TestInvalidMissingParams) {
|
TEST(DefaultAppTokenValidatorTest, TestInvalidMissingParams) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
||||||
conn.version = QuicVersion::MVFST;
|
conn.version = QuicVersion::MVFST;
|
||||||
|
|
||||||
@@ -155,7 +161,8 @@ TEST(DefaultAppTokenValidatorTest, TestInvalidMissingParams) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(DefaultAppTokenValidatorTest, TestInvalidRedundantParameter) {
|
TEST(DefaultAppTokenValidatorTest, TestInvalidRedundantParameter) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
||||||
conn.version = QuicVersion::MVFST;
|
conn.version = QuicVersion::MVFST;
|
||||||
|
|
||||||
@@ -184,7 +191,8 @@ TEST(DefaultAppTokenValidatorTest, TestInvalidRedundantParameter) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(DefaultAppTokenValidatorTest, TestInvalidDecreasedInitialMaxStreamData) {
|
TEST(DefaultAppTokenValidatorTest, TestInvalidDecreasedInitialMaxStreamData) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
||||||
conn.version = QuicVersion::MVFST;
|
conn.version = QuicVersion::MVFST;
|
||||||
|
|
||||||
@@ -211,7 +219,8 @@ TEST(DefaultAppTokenValidatorTest, TestInvalidDecreasedInitialMaxStreamData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(DefaultAppTokenValidatorTest, TestChangedIdleTimeout) {
|
TEST(DefaultAppTokenValidatorTest, TestChangedIdleTimeout) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
||||||
conn.version = QuicVersion::MVFST;
|
conn.version = QuicVersion::MVFST;
|
||||||
|
|
||||||
@@ -238,7 +247,8 @@ TEST(DefaultAppTokenValidatorTest, TestChangedIdleTimeout) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(DefaultAppTokenValidatorTest, TestDecreasedInitialMaxStreams) {
|
TEST(DefaultAppTokenValidatorTest, TestDecreasedInitialMaxStreams) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
||||||
conn.version = QuicVersion::MVFST;
|
conn.version = QuicVersion::MVFST;
|
||||||
|
|
||||||
@@ -265,7 +275,8 @@ TEST(DefaultAppTokenValidatorTest, TestDecreasedInitialMaxStreams) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(DefaultAppTokenValidatorTest, TestInvalidAppParams) {
|
TEST(DefaultAppTokenValidatorTest, TestInvalidAppParams) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
conn.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
||||||
conn.version = QuicVersion::MVFST;
|
conn.version = QuicVersion::MVFST;
|
||||||
|
|
||||||
@@ -292,6 +303,9 @@ TEST(DefaultAppTokenValidatorTest, TestInvalidAppParams) {
|
|||||||
|
|
||||||
class SourceAddressTokenTest : public Test {
|
class SourceAddressTokenTest : public Test {
|
||||||
public:
|
public:
|
||||||
|
SourceAddressTokenTest()
|
||||||
|
: conn_(std::make_shared<FizzServerQuicHandshakeContext>()) {}
|
||||||
|
|
||||||
void SetUp() override {
|
void SetUp() override {
|
||||||
conn_.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
conn_.peerAddress = folly::SocketAddress("1.2.3.4", 443);
|
||||||
conn_.version = QuicVersion::MVFST;
|
conn_.version = QuicVersion::MVFST;
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
#include <quic/fizz/client/handshake/FizzClientExtensions.h>
|
#include <quic/fizz/client/handshake/FizzClientExtensions.h>
|
||||||
#include <quic/fizz/handshake/FizzBridge.h>
|
#include <quic/fizz/handshake/FizzBridge.h>
|
||||||
#include <quic/fizz/handshake/QuicFizzFactory.h>
|
#include <quic/fizz/handshake/QuicFizzFactory.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/handshake/HandshakeLayer.h>
|
#include <quic/handshake/HandshakeLayer.h>
|
||||||
#include <quic/server/handshake/AppToken.h>
|
#include <quic/server/handshake/AppToken.h>
|
||||||
#include <quic/server/handshake/ServerHandshake.h>
|
#include <quic/server/handshake/ServerHandshake.h>
|
||||||
@@ -49,7 +50,9 @@ class MockServerHandshakeCallback : public ServerHandshake::HandshakeCallback {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct TestingServerConnectionState : public QuicServerConnectionState {
|
struct TestingServerConnectionState : public QuicServerConnectionState {
|
||||||
explicit TestingServerConnectionState() : QuicServerConnectionState() {}
|
explicit TestingServerConnectionState()
|
||||||
|
: QuicServerConnectionState(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>()) {}
|
||||||
|
|
||||||
uint32_t getDestructorGuardCount() const {
|
uint32_t getDestructorGuardCount() const {
|
||||||
return folly::DelayedDestruction::getDestructorGuardCount();
|
return folly::DelayedDestruction::getDestructorGuardCount();
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
#include <quic/logging/QuicLogger.h>
|
#include <quic/logging/QuicLogger.h>
|
||||||
#include <quic/loss/QuicLossFunctions.h>
|
#include <quic/loss/QuicLossFunctions.h>
|
||||||
#include <quic/server/handshake/ServerHandshake.h>
|
#include <quic/server/handshake/ServerHandshake.h>
|
||||||
|
#include <quic/server/handshake/ServerHandshakeFactory.h>
|
||||||
#include <quic/server/state/ServerConnectionIdRejector.h>
|
#include <quic/server/state/ServerConnectionIdRejector.h>
|
||||||
#include <quic/state/AckHandlers.h>
|
#include <quic/state/AckHandlers.h>
|
||||||
#include <quic/state/QPRFunctions.h>
|
#include <quic/state/QPRFunctions.h>
|
||||||
@@ -141,7 +142,9 @@ struct QuicServerConnectionState : public QuicConnectionStateBase {
|
|||||||
|
|
||||||
folly::Optional<ConnectionIdData> createAndAddNewSelfConnId() override;
|
folly::Optional<ConnectionIdData> createAndAddNewSelfConnId() override;
|
||||||
|
|
||||||
QuicServerConnectionState() : QuicConnectionStateBase(QuicNodeType::Server) {
|
QuicServerConnectionState(
|
||||||
|
std::shared_ptr<ServerHandshakeFactory> handshakeFactory)
|
||||||
|
: QuicConnectionStateBase(QuicNodeType::Server) {
|
||||||
state = ServerState::Open;
|
state = ServerState::Open;
|
||||||
// Create the crypto stream.
|
// Create the crypto stream.
|
||||||
cryptoState = std::make_unique<QuicCryptoState>();
|
cryptoState = std::make_unique<QuicCryptoState>();
|
||||||
@@ -155,8 +158,10 @@ struct QuicServerConnectionState : public QuicConnectionStateBase {
|
|||||||
QuicVersion::QUIC_DRAFT,
|
QuicVersion::QUIC_DRAFT,
|
||||||
QuicVersion::QUIC_DRAFT_LEGACY}};
|
QuicVersion::QUIC_DRAFT_LEGACY}};
|
||||||
originalVersion = QuicVersion::MVFST;
|
originalVersion = QuicVersion::MVFST;
|
||||||
serverHandshakeLayer = new ServerHandshake(this);
|
DCHECK(handshakeFactory);
|
||||||
handshakeLayer.reset(serverHandshakeLayer);
|
auto tmpServerHandshake = handshakeFactory->makeServerHandshake(this);
|
||||||
|
serverHandshakeLayer = tmpServerHandshake.get();
|
||||||
|
handshakeLayer = std::move(tmpServerHandshake);
|
||||||
// We shouldn't normally need to set this until we're starting the
|
// We shouldn't normally need to set this until we're starting the
|
||||||
// transport, however writing unit tests is much easier if we set this here.
|
// transport, however writing unit tests is much easier if we set this here.
|
||||||
updateFlowControlStateWithSettings(flowControlState, transportSettings);
|
updateFlowControlStateWithSettings(flowControlState, transportSettings);
|
||||||
|
@@ -27,7 +27,6 @@ quic_add_test(TARGET QuicServerTransportTest
|
|||||||
Folly::folly
|
Folly::folly
|
||||||
mvfst_codec_pktbuilder
|
mvfst_codec_pktbuilder
|
||||||
mvfst_codec_types
|
mvfst_codec_types
|
||||||
mvfst_fizz_handshake
|
|
||||||
mvfst_server
|
mvfst_server
|
||||||
mvfst_state_stream_functions
|
mvfst_state_stream_functions
|
||||||
mvfst_test_utils
|
mvfst_test_utils
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#include <quic/codec/QuicConnectionId.h>
|
#include <quic/codec/QuicConnectionId.h>
|
||||||
#include <quic/codec/test/Mocks.h>
|
#include <quic/codec/test/Mocks.h>
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/server/test/Mocks.h>
|
#include <quic/server/test/Mocks.h>
|
||||||
|
|
||||||
using namespace testing;
|
using namespace testing;
|
||||||
@@ -28,7 +29,8 @@ void assertServerConnIdParamsEq(
|
|||||||
|
|
||||||
namespace test {
|
namespace test {
|
||||||
TEST(ServerStateMachineTest, TestAddConnId) {
|
TEST(ServerStateMachineTest, TestAddConnId) {
|
||||||
QuicServerConnectionState serverState;
|
QuicServerConnectionState serverState(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
ServerConnectionIdParams originalParams(12, 1, 37);
|
ServerConnectionIdParams originalParams(12, 1, 37);
|
||||||
|
|
||||||
auto algo = std::make_unique<DefaultConnectionIdAlgo>();
|
auto algo = std::make_unique<DefaultConnectionIdAlgo>();
|
||||||
@@ -73,7 +75,8 @@ TEST(ServerStateMachineTest, TestAddConnId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(ServerStateMachineTest, TestCidRejected) {
|
TEST(ServerStateMachineTest, TestCidRejected) {
|
||||||
QuicServerConnectionState serverConn;
|
QuicServerConnectionState serverConn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
MockServerConnectionIdRejector mockRejector;
|
MockServerConnectionIdRejector mockRejector;
|
||||||
ServerConnectionIdParams serverCidParams(10, 11, 12);
|
ServerConnectionIdParams serverCidParams(10, 11, 12);
|
||||||
MockConnectionIdAlgo mockCidAlgo;
|
MockConnectionIdAlgo mockCidAlgo;
|
||||||
@@ -104,7 +107,8 @@ TEST(ServerStateMachineTest, TestCidRejected) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(ServerStateMachineTest, TestCidRejectedThenFail) {
|
TEST(ServerStateMachineTest, TestCidRejectedThenFail) {
|
||||||
QuicServerConnectionState serverConn;
|
QuicServerConnectionState serverConn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
MockServerConnectionIdRejector mockRejector;
|
MockServerConnectionIdRejector mockRejector;
|
||||||
ServerConnectionIdParams serverCidParams(10, 11, 12);
|
ServerConnectionIdParams serverCidParams(10, 11, 12);
|
||||||
MockConnectionIdAlgo mockCidAlgo;
|
MockConnectionIdAlgo mockCidAlgo;
|
||||||
@@ -131,7 +135,8 @@ TEST(ServerStateMachineTest, TestCidRejectedThenFail) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(ServerStateMachineTest, TestCidRejectedGiveUp) {
|
TEST(ServerStateMachineTest, TestCidRejectedGiveUp) {
|
||||||
QuicServerConnectionState serverConn;
|
QuicServerConnectionState serverConn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
MockServerConnectionIdRejector mockRejector;
|
MockServerConnectionIdRejector mockRejector;
|
||||||
ServerConnectionIdParams serverCidParams(10, 11, 12);
|
ServerConnectionIdParams serverCidParams(10, 11, 12);
|
||||||
MockConnectionIdAlgo mockCidAlgo;
|
MockConnectionIdAlgo mockCidAlgo;
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#include <quic/state/stream/StreamStateFunctions.h>
|
#include <quic/state/stream/StreamStateFunctions.h>
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/logging/FileQLogger.h>
|
#include <quic/logging/FileQLogger.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
#include <quic/state/QuicStreamFunctions.h>
|
#include <quic/state/QuicStreamFunctions.h>
|
||||||
@@ -22,7 +23,8 @@ namespace test {
|
|||||||
class StreamStateFunctionsTests : public Test {};
|
class StreamStateFunctionsTests : public Test {};
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, BasicResetTest) {
|
TEST_F(StreamStateFunctionsTests, BasicResetTest) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId streamId = 0xbaad;
|
StreamId streamId = 0xbaad;
|
||||||
QuicStreamState stream(streamId, conn);
|
QuicStreamState stream(streamId, conn);
|
||||||
appendDataToReadBuffer(
|
appendDataToReadBuffer(
|
||||||
@@ -55,14 +57,16 @@ TEST_F(StreamStateFunctionsTests, BasicResetTest) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedEmptyStream) {
|
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedEmptyStream) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 3;
|
StreamId id = 3;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
EXPECT_FALSE(isAllDataReceived(stream));
|
EXPECT_FALSE(isAllDataReceived(stream));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedReadBufferHasHole) {
|
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedReadBufferHasHole) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 3;
|
StreamId id = 3;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
stream.currentReadOffset = 100;
|
stream.currentReadOffset = 100;
|
||||||
@@ -74,7 +78,8 @@ TEST_F(StreamStateFunctionsTests, IsAllDataReceivedReadBufferHasHole) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedReadBufferNoHoleNoFin) {
|
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedReadBufferNoHoleNoFin) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 3;
|
StreamId id = 3;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
stream.currentReadOffset = 100;
|
stream.currentReadOffset = 100;
|
||||||
@@ -85,7 +90,8 @@ TEST_F(StreamStateFunctionsTests, IsAllDataReceivedReadBufferNoHoleNoFin) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedReadBufferEmptyBufferFin) {
|
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedReadBufferEmptyBufferFin) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 3;
|
StreamId id = 3;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
stream.currentReadOffset = 100;
|
stream.currentReadOffset = 100;
|
||||||
@@ -95,7 +101,8 @@ TEST_F(StreamStateFunctionsTests, IsAllDataReceivedReadBufferEmptyBufferFin) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedReadBufferBufferFin) {
|
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedReadBufferBufferFin) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 3;
|
StreamId id = 3;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
stream.currentReadOffset = 100;
|
stream.currentReadOffset = 100;
|
||||||
@@ -107,7 +114,8 @@ TEST_F(StreamStateFunctionsTests, IsAllDataReceivedReadBufferBufferFin) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedMultipleStreamDataNoHole) {
|
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedMultipleStreamDataNoHole) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 3;
|
StreamId id = 3;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
stream.currentReadOffset = 100;
|
stream.currentReadOffset = 100;
|
||||||
@@ -123,7 +131,8 @@ TEST_F(StreamStateFunctionsTests, IsAllDataReceivedMultipleStreamDataNoHole) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedMultipleStreamDataHasHole) {
|
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedMultipleStreamDataHasHole) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 3;
|
StreamId id = 3;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
stream.currentReadOffset = 100;
|
stream.currentReadOffset = 100;
|
||||||
@@ -139,7 +148,8 @@ TEST_F(StreamStateFunctionsTests, IsAllDataReceivedMultipleStreamDataHasHole) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedAllDataRead) {
|
TEST_F(StreamStateFunctionsTests, IsAllDataReceivedAllDataRead) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 3;
|
StreamId id = 3;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
stream.currentReadOffset = 101;
|
stream.currentReadOffset = 101;
|
||||||
@@ -148,7 +158,8 @@ TEST_F(StreamStateFunctionsTests, IsAllDataReceivedAllDataRead) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, SendReset) {
|
TEST_F(StreamStateFunctionsTests, SendReset) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 1;
|
StreamId id = 1;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
writeDataToQuicStream(stream, folly::IOBuf::copyBuffer("hello"), true);
|
writeDataToQuicStream(stream, folly::IOBuf::copyBuffer("hello"), true);
|
||||||
@@ -163,7 +174,8 @@ TEST_F(StreamStateFunctionsTests, SendReset) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, ResetNoFlowControlGenerated) {
|
TEST_F(StreamStateFunctionsTests, ResetNoFlowControlGenerated) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 1;
|
StreamId id = 1;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
writeDataToQuicStream(stream, folly::IOBuf::copyBuffer("hello"), true);
|
writeDataToQuicStream(stream, folly::IOBuf::copyBuffer("hello"), true);
|
||||||
@@ -186,7 +198,8 @@ TEST_F(StreamStateFunctionsTests, ResetNoFlowControlGenerated) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, ResetFlowControlGenerated) {
|
TEST_F(StreamStateFunctionsTests, ResetFlowControlGenerated) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto qLogger = std::make_shared<FileQLogger>(VantagePoint::Client);
|
auto qLogger = std::make_shared<FileQLogger>(VantagePoint::Client);
|
||||||
conn.qLogger = qLogger;
|
conn.qLogger = qLogger;
|
||||||
|
|
||||||
@@ -221,7 +234,8 @@ TEST_F(StreamStateFunctionsTests, ResetFlowControlGenerated) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, ResetOffsetNotMatch) {
|
TEST_F(StreamStateFunctionsTests, ResetOffsetNotMatch) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 1;
|
StreamId id = 1;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
RstStreamFrame rst(id, GenericApplicationErrorCode::UNKNOWN, 10);
|
RstStreamFrame rst(id, GenericApplicationErrorCode::UNKNOWN, 10);
|
||||||
@@ -234,7 +248,8 @@ TEST_F(StreamStateFunctionsTests, ResetOffsetNotMatch) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, ResetOffsetLessThanMaxObserved) {
|
TEST_F(StreamStateFunctionsTests, ResetOffsetLessThanMaxObserved) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 1;
|
StreamId id = 1;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
RstStreamFrame rst(id, GenericApplicationErrorCode::UNKNOWN, 30);
|
RstStreamFrame rst(id, GenericApplicationErrorCode::UNKNOWN, 30);
|
||||||
@@ -246,7 +261,8 @@ TEST_F(StreamStateFunctionsTests, ResetOffsetLessThanMaxObserved) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, ResetOffsetGreaterThanStreamFlowControl) {
|
TEST_F(StreamStateFunctionsTests, ResetOffsetGreaterThanStreamFlowControl) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 1;
|
StreamId id = 1;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
RstStreamFrame rst(id, GenericApplicationErrorCode::UNKNOWN, 200);
|
RstStreamFrame rst(id, GenericApplicationErrorCode::UNKNOWN, 200);
|
||||||
@@ -258,7 +274,8 @@ TEST_F(StreamStateFunctionsTests, ResetOffsetGreaterThanStreamFlowControl) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, ResetOffsetGreaterThanConnFlowControl) {
|
TEST_F(StreamStateFunctionsTests, ResetOffsetGreaterThanConnFlowControl) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 1;
|
StreamId id = 1;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
RstStreamFrame rst(id, GenericApplicationErrorCode::UNKNOWN, 200);
|
RstStreamFrame rst(id, GenericApplicationErrorCode::UNKNOWN, 200);
|
||||||
@@ -277,7 +294,8 @@ TEST_F(StreamStateFunctionsTests, ResetOffsetGreaterThanConnFlowControl) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(StreamStateFunctionsTests, ResetAfterReadingAllBytesTillFin) {
|
TEST_F(StreamStateFunctionsTests, ResetAfterReadingAllBytesTillFin) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId id = 1;
|
StreamId id = 1;
|
||||||
QuicStreamState stream(id, conn);
|
QuicStreamState stream(id, conn);
|
||||||
RstStreamFrame rst(id, GenericApplicationErrorCode::UNKNOWN, 100);
|
RstStreamFrame rst(id, GenericApplicationErrorCode::UNKNOWN, 100);
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
#include <quic/api/QuicTransportFunctions.h>
|
#include <quic/api/QuicTransportFunctions.h>
|
||||||
#include <quic/codec/DefaultConnectionIdAlgo.h>
|
#include <quic/codec/DefaultConnectionIdAlgo.h>
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/state/QuicStreamFunctions.h>
|
#include <quic/state/QuicStreamFunctions.h>
|
||||||
#include <quic/state/stream/StreamReceiveHandlers.h>
|
#include <quic/state/stream/StreamReceiveHandlers.h>
|
||||||
#include <quic/state/stream/StreamSendHandlers.h>
|
#include <quic/state/stream/StreamSendHandlers.h>
|
||||||
@@ -31,7 +32,8 @@ void verifyStreamReset(
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<QuicServerConnectionState> createConn() {
|
std::unique_ptr<QuicServerConnectionState> createConn() {
|
||||||
auto conn = std::make_unique<QuicServerConnectionState>();
|
auto conn = std::make_unique<QuicServerConnectionState>(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn->clientConnectionId = getTestConnectionId();
|
conn->clientConnectionId = getTestConnectionId();
|
||||||
conn->version = QuicVersion::MVFST;
|
conn->version = QuicVersion::MVFST;
|
||||||
conn->ackStates.initialAckState.nextPacketNum = 1;
|
conn->ackStates.initialAckState.nextPacketNum = 1;
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
|
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/logging/test/Mocks.h>
|
#include <quic/logging/test/Mocks.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
#include <quic/state/AckHandlers.h>
|
#include <quic/state/AckHandlers.h>
|
||||||
@@ -35,7 +36,8 @@ auto testLossHandler(std::vector<PacketNum>& lostPackets) -> decltype(auto) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, TestAckMultipleSequentialBlocks) {
|
TEST_P(AckHandlersTest, TestAckMultipleSequentialBlocks) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.lossState.reorderingThreshold = 85;
|
conn.lossState.reorderingThreshold = 85;
|
||||||
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
||||||
auto rawCongestionController = mockCongestionController.get();
|
auto rawCongestionController = mockCongestionController.get();
|
||||||
@@ -105,7 +107,8 @@ TEST_P(AckHandlersTest, TestAckMultipleSequentialBlocks) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, TestAckMultipleSequentialBlocksLoss) {
|
TEST_P(AckHandlersTest, TestAckMultipleSequentialBlocksLoss) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.lossState.reorderingThreshold = 85;
|
conn.lossState.reorderingThreshold = 85;
|
||||||
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
||||||
auto rawCongestionController = mockCongestionController.get();
|
auto rawCongestionController = mockCongestionController.get();
|
||||||
@@ -241,7 +244,8 @@ TEST_P(AckHandlersTest, TestAckMultipleSequentialBlocksLoss) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, TestAckBlocksWithGaps) {
|
TEST_P(AckHandlersTest, TestAckBlocksWithGaps) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.lossState.reorderingThreshold = 30;
|
conn.lossState.reorderingThreshold = 30;
|
||||||
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
||||||
auto rawCongestionController = mockCongestionController.get();
|
auto rawCongestionController = mockCongestionController.get();
|
||||||
@@ -338,7 +342,8 @@ TEST_P(AckHandlersTest, TestAckBlocksWithGaps) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, TestNonSequentialPacketNumbers) {
|
TEST_P(AckHandlersTest, TestNonSequentialPacketNumbers) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.lossState.reorderingThreshold = 10;
|
conn.lossState.reorderingThreshold = 10;
|
||||||
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
||||||
auto rawCongestionController = mockCongestionController.get();
|
auto rawCongestionController = mockCongestionController.get();
|
||||||
@@ -431,7 +436,8 @@ TEST_P(AckHandlersTest, TestNonSequentialPacketNumbers) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, AckVisitorForAckTest) {
|
TEST_P(AckHandlersTest, AckVisitorForAckTest) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.connectionTime = Clock::now();
|
conn.connectionTime = Clock::now();
|
||||||
auto firstPacket = createNewPacket(100 /* packetNum */, GetParam());
|
auto firstPacket = createNewPacket(100 /* packetNum */, GetParam());
|
||||||
WriteAckFrame firstAckFrame;
|
WriteAckFrame firstAckFrame;
|
||||||
@@ -506,7 +512,8 @@ TEST_P(AckHandlersTest, AckVisitorForAckTest) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, NoNewAckedPacket) {
|
TEST_P(AckHandlersTest, NoNewAckedPacket) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto mockController = std::make_unique<MockCongestionController>();
|
auto mockController = std::make_unique<MockCongestionController>();
|
||||||
auto rawController = mockController.get();
|
auto rawController = mockController.get();
|
||||||
conn.congestionController = std::move(mockController);
|
conn.congestionController = std::move(mockController);
|
||||||
@@ -533,7 +540,8 @@ TEST_P(AckHandlersTest, NoNewAckedPacket) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, LossByAckedRecovered) {
|
TEST_P(AckHandlersTest, LossByAckedRecovered) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto mockController = std::make_unique<MockCongestionController>();
|
auto mockController = std::make_unique<MockCongestionController>();
|
||||||
conn.congestionController = std::move(mockController);
|
conn.congestionController = std::move(mockController);
|
||||||
|
|
||||||
@@ -550,7 +558,8 @@ TEST_P(AckHandlersTest, LossByAckedRecovered) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, AckPacketNumDoesNotExist) {
|
TEST_P(AckHandlersTest, AckPacketNumDoesNotExist) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto mockController = std::make_unique<MockCongestionController>();
|
auto mockController = std::make_unique<MockCongestionController>();
|
||||||
conn.congestionController = std::move(mockController);
|
conn.congestionController = std::move(mockController);
|
||||||
// Get the time based loss detection out of the way
|
// Get the time based loss detection out of the way
|
||||||
@@ -583,7 +592,8 @@ TEST_P(AckHandlersTest, AckPacketNumDoesNotExist) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, TestHandshakeCounterUpdate) {
|
TEST_P(AckHandlersTest, TestHandshakeCounterUpdate) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
StreamId stream = 1;
|
StreamId stream = 1;
|
||||||
for (PacketNum packetNum = 0; packetNum < 10; packetNum++) {
|
for (PacketNum packetNum = 0; packetNum < 10; packetNum++) {
|
||||||
auto regularPacket = createNewPacket(
|
auto regularPacket = createNewPacket(
|
||||||
@@ -641,7 +651,8 @@ TEST_P(AckHandlersTest, TestHandshakeCounterUpdate) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, PurgeAcks) {
|
TEST_P(AckHandlersTest, PurgeAcks) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
WriteAckFrame ackFrame;
|
WriteAckFrame ackFrame;
|
||||||
ackFrame.ackBlocks.emplace_back(900, 1000);
|
ackFrame.ackBlocks.emplace_back(900, 1000);
|
||||||
ackFrame.ackBlocks.emplace_back(500, 700);
|
ackFrame.ackBlocks.emplace_back(500, 700);
|
||||||
@@ -659,7 +670,8 @@ TEST_P(AckHandlersTest, PurgeAcks) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, NoSkipAckVisitor) {
|
TEST_P(AckHandlersTest, NoSkipAckVisitor) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
||||||
auto rawCongestionController = mockCongestionController.get();
|
auto rawCongestionController = mockCongestionController.get();
|
||||||
conn.congestionController = std::move(mockCongestionController);
|
conn.congestionController = std::move(mockCongestionController);
|
||||||
@@ -702,7 +714,8 @@ TEST_P(AckHandlersTest, NoSkipAckVisitor) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, SkipAckVisitor) {
|
TEST_P(AckHandlersTest, SkipAckVisitor) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
||||||
auto rawCongestionController = mockCongestionController.get();
|
auto rawCongestionController = mockCongestionController.get();
|
||||||
conn.congestionController = std::move(mockCongestionController);
|
conn.congestionController = std::move(mockCongestionController);
|
||||||
@@ -751,7 +764,8 @@ TEST_P(AckHandlersTest, SkipAckVisitor) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, NoDoubleProcess) {
|
TEST_P(AckHandlersTest, NoDoubleProcess) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.congestionController.reset();
|
conn.congestionController.reset();
|
||||||
|
|
||||||
WriteStreamFrame frame(0, 0, 0, true);
|
WriteStreamFrame frame(0, 0, 0, true);
|
||||||
@@ -820,7 +834,8 @@ TEST_P(AckHandlersTest, NoDoubleProcess) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, ClonedPacketsCounter) {
|
TEST_P(AckHandlersTest, ClonedPacketsCounter) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.congestionController = nullptr;
|
conn.congestionController = nullptr;
|
||||||
WriteStreamFrame frame(0, 0, 0, true);
|
WriteStreamFrame frame(0, 0, 0, true);
|
||||||
auto packetNum1 = conn.ackStates.appDataAckState.nextPacketNum;
|
auto packetNum1 = conn.ackStates.appDataAckState.nextPacketNum;
|
||||||
@@ -869,7 +884,8 @@ TEST_P(AckHandlersTest, ClonedPacketsCounter) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, UpdateMaxAckDelay) {
|
TEST_P(AckHandlersTest, UpdateMaxAckDelay) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.congestionController = nullptr;
|
conn.congestionController = nullptr;
|
||||||
conn.lossState.mrtt = 200us;
|
conn.lossState.mrtt = 200us;
|
||||||
PacketNum packetNum = 0;
|
PacketNum packetNum = 0;
|
||||||
@@ -897,7 +913,8 @@ TEST_P(AckHandlersTest, UpdateMaxAckDelay) {
|
|||||||
|
|
||||||
// Ack only acks packets aren't outstanding, but TimeReordering still finds loss
|
// Ack only acks packets aren't outstanding, but TimeReordering still finds loss
|
||||||
TEST_P(AckHandlersTest, AckNotOutstandingButLoss) {
|
TEST_P(AckHandlersTest, AckNotOutstandingButLoss) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto mockQLogger = std::make_shared<MockQLogger>(VantagePoint::Server);
|
auto mockQLogger = std::make_shared<MockQLogger>(VantagePoint::Server);
|
||||||
conn.qLogger = mockQLogger;
|
conn.qLogger = mockQLogger;
|
||||||
|
|
||||||
@@ -963,7 +980,8 @@ TEST_P(AckHandlersTest, AckNotOutstandingButLoss) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, UpdatePendingAckStates) {
|
TEST_P(AckHandlersTest, UpdatePendingAckStates) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.congestionController = nullptr;
|
conn.congestionController = nullptr;
|
||||||
conn.lossState.totalBytesSent = 2468;
|
conn.lossState.totalBytesSent = 2468;
|
||||||
conn.lossState.totalBytesAcked = 1357;
|
conn.lossState.totalBytesAcked = 1357;
|
||||||
@@ -998,7 +1016,8 @@ TEST_P(AckHandlersTest, UpdatePendingAckStates) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AckHandlersTest, AckEventCreation) {
|
TEST_P(AckHandlersTest, AckEventCreation) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
auto mockCongestionController = std::make_unique<MockCongestionController>();
|
||||||
auto rawCongestionController = mockCongestionController.get();
|
auto rawCongestionController = mockCongestionController.get();
|
||||||
conn.congestionController = std::move(mockCongestionController);
|
conn.congestionController = std::move(mockCongestionController);
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#include <gmock/gmock.h>
|
#include <gmock/gmock.h>
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
#include <quic/state/QPRFunctions.h>
|
#include <quic/state/QPRFunctions.h>
|
||||||
|
|
||||||
@@ -20,6 +21,9 @@ namespace test {
|
|||||||
|
|
||||||
class QPRFunctionsTest : public Test {
|
class QPRFunctionsTest : public Test {
|
||||||
public:
|
public:
|
||||||
|
QPRFunctionsTest()
|
||||||
|
: conn(std::make_shared<FizzServerQuicHandshakeContext>()) {}
|
||||||
|
|
||||||
void SetUp() override {
|
void SetUp() override {
|
||||||
conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal =
|
conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal =
|
||||||
kDefaultStreamWindowSize;
|
kDefaultStreamWindowSize;
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
#include <quic/state/QuicStateFunctions.h>
|
#include <quic/state/QuicStateFunctions.h>
|
||||||
#include <quic/state/stream/StreamReceiveHandlers.h>
|
#include <quic/state/stream/StreamReceiveHandlers.h>
|
||||||
@@ -55,7 +56,8 @@ class UpdateLargestReceivedPacketNumTest
|
|||||||
: public TestWithParam<PacketNumberSpace> {};
|
: public TestWithParam<PacketNumberSpace> {};
|
||||||
|
|
||||||
TEST_P(UpdateLargestReceivedPacketNumTest, ReceiveNew) {
|
TEST_P(UpdateLargestReceivedPacketNumTest, ReceiveNew) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
getAckState(conn, GetParam()).largestReceivedPacketNum = 100;
|
getAckState(conn, GetParam()).largestReceivedPacketNum = 100;
|
||||||
auto currentLargestReceived =
|
auto currentLargestReceived =
|
||||||
*getAckState(conn, GetParam()).largestReceivedPacketNum;
|
*getAckState(conn, GetParam()).largestReceivedPacketNum;
|
||||||
@@ -68,7 +70,8 @@ TEST_P(UpdateLargestReceivedPacketNumTest, ReceiveNew) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(UpdateLargestReceivedPacketNumTest, ReceiveOld) {
|
TEST_P(UpdateLargestReceivedPacketNumTest, ReceiveOld) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
getAckState(conn, GetParam()).largestReceivedPacketNum = 100;
|
getAckState(conn, GetParam()).largestReceivedPacketNum = 100;
|
||||||
auto currentLargestReceived =
|
auto currentLargestReceived =
|
||||||
*getAckState(conn, GetParam()).largestReceivedPacketNum;
|
*getAckState(conn, GetParam()).largestReceivedPacketNum;
|
||||||
@@ -91,7 +94,8 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
class UpdateAckStateTest : public TestWithParam<PacketNumberSpace> {};
|
class UpdateAckStateTest : public TestWithParam<PacketNumberSpace> {};
|
||||||
|
|
||||||
TEST_P(UpdateAckStateTest, TestUpdateAckState) {
|
TEST_P(UpdateAckStateTest, TestUpdateAckState) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
PacketNum nextPacketNum = 0;
|
PacketNum nextPacketNum = 0;
|
||||||
auto& ackState = getAckState(conn, GetParam());
|
auto& ackState = getAckState(conn, GetParam());
|
||||||
updateAckState(conn, GetParam(), nextPacketNum++, true, false, Clock::now());
|
updateAckState(conn, GetParam(), nextPacketNum++, true, false, Clock::now());
|
||||||
@@ -168,7 +172,8 @@ TEST_P(UpdateAckStateTest, TestUpdateAckState) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(UpdateAckStateTest, TestUpdateAckStateFrequency) {
|
TEST_P(UpdateAckStateTest, TestUpdateAckStateFrequency) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.transportSettings.rxPacketsBeforeAckInitThreshold = 20;
|
conn.transportSettings.rxPacketsBeforeAckInitThreshold = 20;
|
||||||
conn.transportSettings.rxPacketsBeforeAckBeforeInit = 2;
|
conn.transportSettings.rxPacketsBeforeAckBeforeInit = 2;
|
||||||
conn.transportSettings.rxPacketsBeforeAckAfterInit = 10;
|
conn.transportSettings.rxPacketsBeforeAckAfterInit = 10;
|
||||||
@@ -367,7 +372,8 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
class QuicStateFunctionsTest : public TestWithParam<PacketNumberSpace> {};
|
class QuicStateFunctionsTest : public TestWithParam<PacketNumberSpace> {};
|
||||||
|
|
||||||
TEST_F(QuicStateFunctionsTest, RttCalculationNoAckDelay) {
|
TEST_F(QuicStateFunctionsTest, RttCalculationNoAckDelay) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto rttSample = 1100us;
|
auto rttSample = 1100us;
|
||||||
updateRtt(conn, rttSample, 0us);
|
updateRtt(conn, rttSample, 0us);
|
||||||
EXPECT_EQ(1100, conn.lossState.srtt.count());
|
EXPECT_EQ(1100, conn.lossState.srtt.count());
|
||||||
@@ -376,7 +382,8 @@ TEST_F(QuicStateFunctionsTest, RttCalculationNoAckDelay) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicStateFunctionsTest, RttCalculationWithAckDelay) {
|
TEST_F(QuicStateFunctionsTest, RttCalculationWithAckDelay) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto rttSample = 1000us;
|
auto rttSample = 1000us;
|
||||||
updateRtt(conn, rttSample, 300us);
|
updateRtt(conn, rttSample, 300us);
|
||||||
EXPECT_EQ(700, conn.lossState.srtt.count());
|
EXPECT_EQ(700, conn.lossState.srtt.count());
|
||||||
@@ -387,7 +394,8 @@ TEST_F(QuicStateFunctionsTest, RttCalculationWithAckDelay) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicStateFunctionsTest, RttCalculationWithMrttAckDelay) {
|
TEST_F(QuicStateFunctionsTest, RttCalculationWithMrttAckDelay) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.lossState.mrtt = 100us;
|
conn.lossState.mrtt = 100us;
|
||||||
auto rttSample = 1000us;
|
auto rttSample = 1000us;
|
||||||
updateRtt(conn, rttSample, 300us);
|
updateRtt(conn, rttSample, 300us);
|
||||||
@@ -399,7 +407,8 @@ TEST_F(QuicStateFunctionsTest, RttCalculationWithMrttAckDelay) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicStateFunctionsTest, RttCalculationIgnoreAckDelay) {
|
TEST_F(QuicStateFunctionsTest, RttCalculationIgnoreAckDelay) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
conn.lossState.mrtt = 700us;
|
conn.lossState.mrtt = 700us;
|
||||||
auto rttSample = 900us;
|
auto rttSample = 900us;
|
||||||
updateRtt(conn, rttSample, 300us);
|
updateRtt(conn, rttSample, 300us);
|
||||||
@@ -411,7 +420,8 @@ TEST_F(QuicStateFunctionsTest, RttCalculationIgnoreAckDelay) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicStateFunctionsTest, RttCalculationAckDelayLarger) {
|
TEST_F(QuicStateFunctionsTest, RttCalculationAckDelayLarger) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto rttSample = 10us;
|
auto rttSample = 10us;
|
||||||
updateRtt(conn, rttSample, 300us);
|
updateRtt(conn, rttSample, 300us);
|
||||||
EXPECT_EQ(10, conn.lossState.srtt.count());
|
EXPECT_EQ(10, conn.lossState.srtt.count());
|
||||||
@@ -422,7 +432,8 @@ TEST_F(QuicStateFunctionsTest, RttCalculationAckDelayLarger) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicStateFunctionsTest, TestInvokeStreamStateMachineConnectionError) {
|
TEST_F(QuicStateFunctionsTest, TestInvokeStreamStateMachineConnectionError) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
QuicStreamState stream(1, conn);
|
QuicStreamState stream(1, conn);
|
||||||
RstStreamFrame rst(1, GenericApplicationErrorCode::UNKNOWN, 100);
|
RstStreamFrame rst(1, GenericApplicationErrorCode::UNKNOWN, 100);
|
||||||
stream.finalReadOffset = 1024;
|
stream.finalReadOffset = 1024;
|
||||||
@@ -435,7 +446,8 @@ TEST_F(QuicStateFunctionsTest, TestInvokeStreamStateMachineConnectionError) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicStateFunctionsTest, InvokeResetDoesNotSendFlowControl) {
|
TEST_F(QuicStateFunctionsTest, InvokeResetDoesNotSendFlowControl) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
QuicStreamState stream(1, conn);
|
QuicStreamState stream(1, conn);
|
||||||
RstStreamFrame rst(1, GenericApplicationErrorCode::UNKNOWN, 90);
|
RstStreamFrame rst(1, GenericApplicationErrorCode::UNKNOWN, 90);
|
||||||
// this would normally trigger a flow control update.
|
// this would normally trigger a flow control update.
|
||||||
@@ -453,7 +465,8 @@ TEST_F(QuicStateFunctionsTest, InvokeResetDoesNotSendFlowControl) {
|
|||||||
TEST_F(QuicStateFunctionsTest, TestInvokeStreamStateMachineStreamError) {
|
TEST_F(QuicStateFunctionsTest, TestInvokeStreamStateMachineStreamError) {
|
||||||
// We isolate invalid events on streams to affect only the streams. Is that
|
// We isolate invalid events on streams to affect only the streams. Is that
|
||||||
// a good idea? We'll find out.
|
// a good idea? We'll find out.
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
QuicStreamState stream(1, conn);
|
QuicStreamState stream(1, conn);
|
||||||
RstStreamFrame rst(1, GenericApplicationErrorCode::UNKNOWN, 100);
|
RstStreamFrame rst(1, GenericApplicationErrorCode::UNKNOWN, 100);
|
||||||
try {
|
try {
|
||||||
@@ -467,7 +480,8 @@ TEST_F(QuicStateFunctionsTest, TestInvokeStreamStateMachineStreamError) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicStateFunctionsTest, UpdateMinRtt) {
|
TEST_F(QuicStateFunctionsTest, UpdateMinRtt) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
auto qLogger = std::make_shared<FileQLogger>(VantagePoint::Server);
|
auto qLogger = std::make_shared<FileQLogger>(VantagePoint::Server);
|
||||||
conn.qLogger = qLogger;
|
conn.qLogger = qLogger;
|
||||||
|
|
||||||
@@ -507,7 +521,8 @@ TEST_F(QuicStateFunctionsTest, UpdateMinRtt) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(QuicStateFunctionsTest, UpdateMaxAckDelay) {
|
TEST_F(QuicStateFunctionsTest, UpdateMaxAckDelay) {
|
||||||
QuicServerConnectionState conn;
|
QuicServerConnectionState conn(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
EXPECT_EQ(0us, conn.lossState.maxAckDelay);
|
EXPECT_EQ(0us, conn.lossState.maxAckDelay);
|
||||||
auto rttSample = 100us;
|
auto rttSample = 100us;
|
||||||
|
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
#include <quic/client/state/ClientStateMachine.h>
|
#include <quic/client/state/ClientStateMachine.h>
|
||||||
#include <quic/common/test/TestUtils.h>
|
#include <quic/common/test/TestUtils.h>
|
||||||
#include <quic/fizz/client/handshake/FizzClientQuicHandshakeContext.h>
|
#include <quic/fizz/client/handshake/FizzClientQuicHandshakeContext.h>
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
|
|
||||||
using namespace folly;
|
using namespace folly;
|
||||||
@@ -52,6 +53,9 @@ class QuicStreamFunctionsTest : public Test {
|
|||||||
|
|
||||||
class QuicServerStreamFunctionsTest : public Test {
|
class QuicServerStreamFunctionsTest : public Test {
|
||||||
public:
|
public:
|
||||||
|
QuicServerStreamFunctionsTest()
|
||||||
|
: conn(std::make_shared<FizzServerQuicHandshakeContext>()) {}
|
||||||
|
|
||||||
void SetUp() override {
|
void SetUp() override {
|
||||||
conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal =
|
conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal =
|
||||||
kDefaultStreamWindowSize;
|
kDefaultStreamWindowSize;
|
||||||
@@ -1102,7 +1106,8 @@ TEST_F(QuicStreamFunctionsTest, IsBidirectionalStream) {
|
|||||||
TEST_F(QuicStreamFunctionsTest, IsSendingStream) {
|
TEST_F(QuicStreamFunctionsTest, IsSendingStream) {
|
||||||
QuicClientConnectionState clientState(
|
QuicClientConnectionState clientState(
|
||||||
FizzClientQuicHandshakeContext::Builder().build());
|
FizzClientQuicHandshakeContext::Builder().build());
|
||||||
QuicServerConnectionState serverState;
|
QuicServerConnectionState serverState(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
QuicNodeType nodeType;
|
QuicNodeType nodeType;
|
||||||
StreamId id;
|
StreamId id;
|
||||||
|
|
||||||
@@ -1130,7 +1135,8 @@ TEST_F(QuicStreamFunctionsTest, IsSendingStream) {
|
|||||||
TEST_F(QuicStreamFunctionsTest, IsReceivingStream) {
|
TEST_F(QuicStreamFunctionsTest, IsReceivingStream) {
|
||||||
QuicClientConnectionState clientState(
|
QuicClientConnectionState clientState(
|
||||||
FizzClientQuicHandshakeContext::Builder().build());
|
FizzClientQuicHandshakeContext::Builder().build());
|
||||||
QuicServerConnectionState serverState;
|
QuicServerConnectionState serverState(
|
||||||
|
std::make_shared<FizzServerQuicHandshakeContext>());
|
||||||
QuicNodeType nodeType;
|
QuicNodeType nodeType;
|
||||||
StreamId id;
|
StreamId id;
|
||||||
|
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#include <gmock/gmock.h>
|
#include <gmock/gmock.h>
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#include <quic/fizz/server/handshake/FizzServerQuicHandshakeContext.h>
|
||||||
#include <quic/server/state/ServerStateMachine.h>
|
#include <quic/server/state/ServerStateMachine.h>
|
||||||
#include <quic/state/QuicStreamManager.h>
|
#include <quic/state/QuicStreamManager.h>
|
||||||
#include <quic/state/test/Mocks.h>
|
#include <quic/state/test/Mocks.h>
|
||||||
@@ -20,6 +21,8 @@ namespace test {
|
|||||||
|
|
||||||
class QuicStreamManagerTest : public Test {
|
class QuicStreamManagerTest : public Test {
|
||||||
public:
|
public:
|
||||||
|
QuicStreamManagerTest()
|
||||||
|
: conn(std::make_shared<FizzServerQuicHandshakeContext>()) {}
|
||||||
void SetUp() override {
|
void SetUp() override {
|
||||||
conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal =
|
conn.flowControlState.peerAdvertisedInitialMaxStreamOffsetBidiLocal =
|
||||||
kDefaultStreamWindowSize;
|
kDefaultStreamWindowSize;
|
||||||
|
Reference in New Issue
Block a user