1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-08-06 22:22:38 +03:00

Add open_streams metric

Summary: I want to have visibility in to the current count of streams. There are already callback methods onNew/onClosed, unfortunately, the latter is not called when connections are closed, so I had to fix that to prevent the metric from uncontrolled growth. I am still not positive it's correct and was thinking of hooking into QuicStreamState destructor instead.

Reviewed By: kvtsoy

Differential Revision: D56195487

fbshipit-source-id: 901bce9473327a8f7ef1bc0f70af10899784d681
This commit is contained in:
Vadim Meleshuk
2024-04-24 19:39:14 -07:00
committed by Facebook GitHub Bot
parent 688743070d
commit 16501032fa
6 changed files with 84 additions and 17 deletions

View File

@@ -22,6 +22,7 @@
#include <quic/state/QuicStreamUtilities.h>
#include <quic/state/stream/StreamReceiveHandlers.h>
#include <quic/state/stream/StreamSendHandlers.h>
#include <quic/state/test/MockQuicStats.h>
#include <quic/state/test/Mocks.h>
#include <quic/common/testutil/MockAsyncUDPSocket.h>
@@ -4289,6 +4290,26 @@ TEST_P(QuicTransportImplTestBase, BackgroundModeChangeWithStreamChanges) {
manager.removeClosedStream(stream2Id);
}
class QuicTransportImplTestCounters : public QuicTransportImplTest {};
TEST_F(QuicTransportImplTestCounters, TransportResetClosesStreams) {
MockQuicStats quicStats;
auto transportSettings = transport->getTransportSettings();
auto& conn = transport->getConnectionState();
conn.statsCallback = &quicStats;
EXPECT_CALL(quicStats, onNewQuicStream()).Times(2);
EXPECT_CALL(quicStats, onQuicStreamClosed()).Times(2);
auto stream1 = transport->createBidirectionalStream().value();
auto stream2 = transport->createBidirectionalStream().value();
EXPECT_EQ(stream1, 1);
EXPECT_EQ(stream2, 5);
EXPECT_EQ(conn.streamManager->streamCount(), 2);
transport.reset();
}
class QuicTransportImplTestWithGroups : public QuicTransportImplTestBase {};
INSTANTIATE_TEST_SUITE_P(