mirror of
https://github.com/facebookincubator/mvfst.git
synced 2025-08-05 11:21:09 +03:00
Add idle timer checker
Reviewed By: mjoras Differential Revision: D60913168 fbshipit-source-id: 1b14a2e17545ba24f879e7212153eee19cfe9972
This commit is contained in:
committed by
Facebook GitHub Bot
parent
901fcc5847
commit
b51ee87995
@@ -413,6 +413,14 @@ class TestQuicTransport
|
||||
return readLooper_;
|
||||
}
|
||||
|
||||
void runCheckIdleTimer(TimePoint now) {
|
||||
checkIdleTimer(now);
|
||||
}
|
||||
|
||||
const IdleTimeoutCheck& getIdleTimeoutCheck() {
|
||||
return idleTimeoutCheck_;
|
||||
}
|
||||
|
||||
void unbindConnection() {}
|
||||
|
||||
void onReadError(const folly::AsyncSocketException&) noexcept {}
|
||||
@@ -4961,5 +4969,46 @@ TEST_P(
|
||||
transport.reset();
|
||||
}
|
||||
|
||||
TEST_P(QuicTransportImplTestBase, TestCheckIdleTimerTimerActiveConnNotExpired) {
|
||||
auto transportSettings = transport->getTransportSettings();
|
||||
transportSettings.checkIdleTimerOnWrite = true;
|
||||
transport->setTransportSettings(transportSettings);
|
||||
transport->getConnectionState().streamManager->refreshTransportSettings(
|
||||
transportSettings);
|
||||
|
||||
transport->transportConn->oneRttWriteCipher = test::createNoOpAead();
|
||||
EXPECT_FALSE(transport->isClosed());
|
||||
|
||||
transport->setIdleTimeout();
|
||||
transport->runCheckIdleTimer(Clock::now());
|
||||
qEvb->loopOnce();
|
||||
|
||||
EXPECT_FALSE(transport->isClosed());
|
||||
|
||||
transport.reset();
|
||||
}
|
||||
|
||||
TEST_P(QuicTransportImplTestBase, TestCheckIdleTimerTimerActiveConnExpired) {
|
||||
auto transportSettings = transport->getTransportSettings();
|
||||
transportSettings.checkIdleTimerOnWrite = true;
|
||||
transport->setTransportSettings(transportSettings);
|
||||
transport->getConnectionState().streamManager->refreshTransportSettings(
|
||||
transportSettings);
|
||||
|
||||
transport->transportConn->oneRttWriteCipher = test::createNoOpAead();
|
||||
EXPECT_FALSE(transport->isClosed());
|
||||
|
||||
transport->setIdleTimeout();
|
||||
const auto& idleTimerCheck = transport->getIdleTimeoutCheck();
|
||||
TimePoint fakeFutureTs = Clock::now() +
|
||||
std::chrono::milliseconds(idleTimerCheck.idleTimeoutMs.count() + 1000);
|
||||
transport->runCheckIdleTimer(fakeFutureTs);
|
||||
qEvb->loopOnce();
|
||||
|
||||
EXPECT_TRUE(transport->isClosed());
|
||||
|
||||
transport.reset();
|
||||
}
|
||||
|
||||
} // namespace test
|
||||
} // namespace quic
|
||||
|
Reference in New Issue
Block a user