In quic, default enable pto loss recovery which unifies tlp + rto. protected by gfe2_reloadable_flag_quic_default_on_pto.
PiperOrigin-RevId: 311401954
Change-Id: I6ee45eb71288d332aaddd358c8848f220a537d14
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index acbb1e0..24f233e 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -901,7 +901,8 @@
if (QuicConnectionPeer::GetSentPacketManager(this)->pto_enabled()) {
// PTO mode is default enabled for T099. And TLP/RTO related tests are
// stale.
- DCHECK_EQ(PROTOCOL_TLS1_3, version().handshake_protocol);
+ DCHECK(PROTOCOL_TLS1_3 == version().handshake_protocol ||
+ GetQuicReloadableFlag(quic_default_on_pto));
return true;
}
return false;
@@ -3936,8 +3937,10 @@
writer_->SetWritable();
connection_.OnCanWrite();
EXPECT_TRUE(connection_.GetRetransmissionAlarm()->IsSet());
- const uint64_t retransmission =
- connection_.SupportsMultiplePacketNumberSpaces() ? 3 : 2;
+ uint64_t retransmission = connection_.SupportsMultiplePacketNumberSpaces() &&
+ !GetQuicReloadableFlag(quic_default_on_pto)
+ ? 3
+ : 2;
EXPECT_FALSE(QuicConnectionPeer::HasRetransmittableFrames(&connection_,
retransmission));
}
@@ -4167,6 +4170,9 @@
}
TEST_P(QuicConnectionTest, TLP) {
+ if (connection_.PtoEnabled()) {
+ return;
+ }
connection_.SetMaxTailLossProbes(1);
SendStreamDataToPeer(3, "foo", 0, NO_FIN, nullptr);
@@ -9994,7 +10000,12 @@
EXPECT_EQ(0u, connection_.GetStats().crypto_retransmit_count);
// PTO fires, verify a PING packet gets sent because there is no data to send.
- EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, QuicPacketNumber(3), _, _));
+ EXPECT_CALL(*send_algorithm_,
+ OnPacketSent(_, _,
+ GetQuicReloadableFlag(quic_default_on_pto)
+ ? QuicPacketNumber(2)
+ : QuicPacketNumber(3),
+ _, _));
EXPECT_CALL(visitor_, SendPing()).WillOnce(Invoke([this]() { SendPing(); }));
connection_.GetRetransmissionAlarm()->Fire();
EXPECT_EQ(1u, connection_.GetStats().pto_count);
@@ -10242,7 +10253,12 @@
// Retransmit handshake data.
clock_.AdvanceTime(retransmission_time - clock_.Now());
- EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, QuicPacketNumber(4), _, _));
+ EXPECT_CALL(*send_algorithm_,
+ OnPacketSent(_, _,
+ GetQuicReloadableFlag(quic_default_on_pto)
+ ? QuicPacketNumber(3)
+ : QuicPacketNumber(4),
+ _, _));
EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
connection_.GetRetransmissionAlarm()->Fire();
EXPECT_EQ(0x02020202u, writer_->final_bytes_of_last_packet());
@@ -10256,7 +10272,12 @@
// Retransmit handshake data again.
clock_.AdvanceTime(retransmission_time - clock_.Now());
- EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, QuicPacketNumber(7), _, _));
+ EXPECT_CALL(*send_algorithm_,
+ OnPacketSent(_, _,
+ GetQuicReloadableFlag(quic_default_on_pto)
+ ? QuicPacketNumber(5)
+ : QuicPacketNumber(7),
+ _, _));
EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
connection_.GetRetransmissionAlarm()->Fire();
EXPECT_EQ(0x02020202u, writer_->final_bytes_of_last_packet());
@@ -10268,7 +10289,12 @@
// Retransmit application data.
clock_.AdvanceTime(retransmission_time - clock_.Now());
- EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, QuicPacketNumber(9), _, _));
+ EXPECT_CALL(*send_algorithm_,
+ OnPacketSent(_, _,
+ GetQuicReloadableFlag(quic_default_on_pto)
+ ? QuicPacketNumber(6)
+ : QuicPacketNumber(9),
+ _, _));
connection_.GetRetransmissionAlarm()->Fire();
EXPECT_EQ(0x01010101u, writer_->final_bytes_of_last_packet());
}