mirror of
https://github.com/facebookincubator/mvfst.git
synced 2025-08-08 09:42:06 +03:00
Adding packet loss event detection to instrumentationobserver
Summary: `InstrumentationObserver` is owned by `QuicSocket` now. However, to capture packet loss signal, we need it in `QuicConnectionState`. So, I refactored the code a little bit to make this easy. Changes in this code: (a) Moved the definition of `InstrumentationObserver` and `LifeCycleObserver` to a separate header `Observer.h`. (b) Moved the vector of `InstrumentationObserver`s from `QuicSocket` to `QuicConnectionState`. (c) Added a callback in `conn->pendingCallbacks` when a packet loss is detected Reviewed By: bschlinker Differential Revision: D23018569 fbshipit-source-id: e70d954839bdb70679ecd52d2bd1a6a6841f6778
This commit is contained in:
committed by
Facebook GitHub Bot
parent
6ef992b5ea
commit
327af996e2
@@ -423,6 +423,10 @@ class TestQuicTransport
|
||||
writeSocketData();
|
||||
}
|
||||
|
||||
void invokeProcessCallbacksAfterNetworkData() {
|
||||
processCallbacksAfterNetworkData();
|
||||
}
|
||||
|
||||
QuicServerConnectionState* transportConn;
|
||||
std::unique_ptr<Aead> aead;
|
||||
std::unique_ptr<PacketNumberCipher> headerCipher;
|
||||
@@ -3652,5 +3656,27 @@ TEST_F(
|
||||
Mock::VerifyAndClearExpectations(cb2.get());
|
||||
}
|
||||
|
||||
TEST_F(QuicTransportImplTest, ImplementationObserverCallbacksDeleted) {
|
||||
auto noopCallback = [] {};
|
||||
transport->transportConn->pendingCallbacks.emplace_back(noopCallback);
|
||||
EXPECT_EQ(1, size(transport->transportConn->pendingCallbacks));
|
||||
transport->invokeProcessCallbacksAfterNetworkData();
|
||||
EXPECT_EQ(0, size(transport->transportConn->pendingCallbacks));
|
||||
}
|
||||
|
||||
TEST_F(QuicTransportImplTest, ImplementationObserverCallbacksInvoked) {
|
||||
uint32_t callbacksInvoked = 0;
|
||||
auto countingCallback = [&]() { callbacksInvoked++; };
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
transport->transportConn->pendingCallbacks.emplace_back(countingCallback);
|
||||
}
|
||||
EXPECT_EQ(2, size(transport->transportConn->pendingCallbacks));
|
||||
transport->invokeProcessCallbacksAfterNetworkData();
|
||||
|
||||
EXPECT_EQ(2, callbacksInvoked);
|
||||
EXPECT_EQ(0, size(transport->transportConn->pendingCallbacks));
|
||||
}
|
||||
|
||||
} // namespace test
|
||||
} // namespace quic
|
||||
|
Reference in New Issue
Block a user