Populate stats needed for multi-port.
These stats will be logged by QuicConnectionLogger in Chrome.
PiperOrigin-RevId: 473031102
diff --git a/quiche/quic/core/quic_connection_test.cc b/quiche/quic/core/quic_connection_test.cc
index b2da24e..73300f7 100644
--- a/quiche/quic/core/quic_connection_test.cc
+++ b/quiche/quic/core/quic_connection_test.cc
@@ -2474,7 +2474,7 @@
EXPECT_EQ(expected_self_address_, context->self_address());
EXPECT_EQ(expected_peer_address_, context->peer_address());
if (connection_->perspective() == Perspective::IS_CLIENT) {
- connection_->OnPathValidationFailureAtClient();
+ connection_->OnPathValidationFailureAtClient(/*is_multi_port=*/false);
}
*success_ = false;
}
@@ -13003,6 +13003,9 @@
connection_.SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE);
connection_.OnHandshakeComplete();
+ EXPECT_CALL(visitor_, OnPathDegrading());
+ connection_.OnPathDegradingDetected();
+
auto self_address = connection_.self_address();
const QuicSocketAddress kNewSelfAddress(self_address.host(),
self_address.port() + 1);
@@ -13025,6 +13028,11 @@
EXPECT_TRUE(QuicConnectionPeer::IsAlternativePath(
&connection_, kNewSelfAddress, connection_.peer_address()));
+ // 30ms RTT.
+ const QuicTime::Delta kTestRTT = QuicTime::Delta::FromMilliseconds(30);
+ // Fake a response delay.
+ clock_.AdvanceTime(kTestRTT);
+
QuicFrames frames;
frames.push_back(QuicFrame(QuicPathResponseFrame(
99, new_writer.path_challenge_frames().front().data_buffer)));
@@ -13035,6 +13043,13 @@
EXPECT_TRUE(QuicConnectionPeer::IsAlternativePath(
&connection_, kNewSelfAddress, connection_.peer_address()));
+ auto stats = connection_.multi_port_stats();
+ EXPECT_EQ(1, stats->num_path_degrading);
+ EXPECT_EQ(0, stats->num_multi_port_probe_failures_when_path_degrading);
+ EXPECT_EQ(kTestRTT, stats->rtt_stats.latest_rtt());
+ EXPECT_EQ(kTestRTT,
+ stats->rtt_stats_when_default_path_degrading.latest_rtt());
+
connection_.GetMultiPortProbingAlarm()->Fire();
EXPECT_TRUE(connection_.HasPendingPathValidation());
EXPECT_TRUE(QuicConnectionPeer::IsAlternativePath(
@@ -13050,6 +13065,9 @@
EXPECT_FALSE(connection_.HasPendingPathValidation());
EXPECT_FALSE(QuicConnectionPeer::IsAlternativePath(
&connection_, kNewSelfAddress, connection_.peer_address()));
+ EXPECT_EQ(1, stats->num_path_degrading);
+ EXPECT_EQ(1, stats->num_multi_port_probe_failures_when_path_degrading);
+ EXPECT_EQ(0, stats->num_multi_port_probe_failures_when_path_not_degrading);
}
TEST_P(QuicConnectionTest, SingleAckInPacket) {