1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2026-01-06 03:41:10 +03:00

Let handshale alarm also increase PTO stats

Summary:
as title. This also fixes the handshake alarm QLog. It logs before we
increased the handshake alarm count

Reviewed By: mjoras

Differential Revision: D20831207

fbshipit-source-id: c9a555884ec1c5737180c64b686793df0351a488
This commit is contained in:
Yang Chi
2020-05-27 11:08:24 -07:00
committed by Facebook GitHub Bot
parent 64866d78c1
commit 00db7bc8f7
2 changed files with 28 additions and 10 deletions

View File

@@ -299,13 +299,10 @@ void onHandshakeAlarm(
// Alternatively we can experiment with only retransmit them without marking
// loss
VLOG(10) << __func__ << " " << conn;
if (conn.qLogger) {
conn.qLogger->addLossAlarm(
conn.lossState.largestSent,
conn.lossState.handshakeAlarmCount,
(uint64_t)conn.outstandingPackets.size(),
kHandshakeAlarm);
}
++conn.lossState.ptoCount;
++conn.lossState.totalPTOCount;
++conn.lossState.handshakeAlarmCount;
QUIC_STATS(conn.statsCallback, onPTO);
QUIC_TRACE(
handshake_alarm,
conn,
@@ -313,7 +310,13 @@ void onHandshakeAlarm(
conn.lossState.handshakeAlarmCount,
(uint64_t)conn.outstandingHandshakePacketsCount,
(uint64_t)conn.outstandingPackets.size());
++conn.lossState.handshakeAlarmCount;
if (conn.qLogger) {
conn.qLogger->addLossAlarm(
conn.lossState.largestSent,
conn.lossState.handshakeAlarmCount,
(uint64_t)conn.outstandingPackets.size(),
kHandshakeAlarm);
}
CongestionController::LossEvent lossEvent(ClockType::now());
auto iter = conn.outstandingPackets.begin();
while (iter != conn.outstandingPackets.end()) {

View File

@@ -990,7 +990,7 @@ TEST_F(
conn->congestionController = std::move(mockCongestionController);
EXPECT_CALL(*rawCongestionController, onPacketSent(_))
.WillRepeatedly(Return());
EXPECT_CALL(*mockQLogger, addLossAlarm(5, 0, 10, kHandshakeAlarm));
EXPECT_CALL(*mockQLogger, addLossAlarm(5, 1, 10, kHandshakeAlarm));
std::vector<PacketNum> lostPackets;
PacketNum expectedLargestLostNum = 0;
conn->lossState.currentAlarmMethod = LossState::AlarmMethod::Handshake;
@@ -1032,7 +1032,7 @@ TEST_F(QuicLossFunctionsTest, HandshakeAlarmWithOneRttCipher) {
conn->oneRttWriteCipher = createNoOpAead();
conn->lossState.currentAlarmMethod = LossState::AlarmMethod::Handshake;
std::vector<PacketNum> lostPackets;
EXPECT_CALL(*mockQLogger, addLossAlarm(1, 0, 1, kHandshakeAlarm));
EXPECT_CALL(*mockQLogger, addLossAlarm(1, 1, 1, kHandshakeAlarm));
sendPacket(*conn, TimePoint(100ms), folly::none, PacketType::Handshake);
onLossDetectionAlarm<decltype(testingLossMarkFunc(lostPackets)), Clock>(
*conn, testingLossMarkFunc(lostPackets));
@@ -1320,6 +1320,21 @@ TEST_F(QuicLossFunctionsTest, TestTotalPTOCount) {
EXPECT_EQ(101, conn->lossState.totalPTOCount);
}
TEST_F(QuicLossFunctionsTest, HandshakeAlarmPTOCountingAndCallbacks) {
auto conn = createConn();
auto mockQLogger = std::make_shared<MockQLogger>(VantagePoint::Server);
conn->qLogger = mockQLogger;
conn->lossState.ptoCount = 22;
conn->lossState.totalPTOCount = 100;
conn->lossState.handshakeAlarmCount = 3;
EXPECT_CALL(*mockQLogger, addLossAlarm(0, 4, 0, kHandshakeAlarm));
EXPECT_CALL(*transportInfoCb_, onPTO());
onHandshakeAlarm(*conn, [](const auto&, auto, bool, PacketNum) {});
EXPECT_EQ(101, conn->lossState.totalPTOCount);
EXPECT_EQ(23, conn->lossState.ptoCount);
EXPECT_EQ(4, conn->lossState.handshakeAlarmCount);
}
TEST_F(QuicLossFunctionsTest, TestExceedsMaxPTOThrows) {
auto conn = createConn();
auto mockQLogger = std::make_shared<MockQLogger>(VantagePoint::Server);