Internal change
PiperOrigin-RevId: 515182736
diff --git a/quiche/quic/core/quic_connection_test.cc b/quiche/quic/core/quic_connection_test.cc
index 84c8cdb..a235314 100644
--- a/quiche/quic/core/quic_connection_test.cc
+++ b/quiche/quic/core/quic_connection_test.cc
@@ -16877,12 +16877,26 @@
connection_.SupportsMultiplePacketNumberSpaces()
? connection_.received_packet_manager().GetAckFrame(APPLICATION_DATA)
: connection_.received_packet_manager().ack_frame();
+ // Send two PINGs so that the ACK goes too. The second packet should not
+ // include an ACK, which checks that the packet state is cleared properly.
+ connection_.SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE);
+ if (connection_.version().HasIetfQuicFrames()) {
+ QuicConnectionPeer::SendPing(&connection_);
+ QuicConnectionPeer::SendPing(&connection_);
+ }
+ QuicConnectionStats stats = connection_.GetStats();
if (GetQuicRestartFlag(quic_receive_ecn)) {
ASSERT_TRUE(ack_frame.ecn_counters.has_value());
EXPECT_EQ(ack_frame.ecn_counters->ect0, 1);
+ EXPECT_EQ(stats.num_ack_frames_sent_with_ecn,
+ connection_.version().HasIetfQuicFrames() ? 1 : 0);
} else {
EXPECT_FALSE(ack_frame.ecn_counters.has_value());
+ EXPECT_EQ(stats.num_ack_frames_sent_with_ecn, 0);
}
+ EXPECT_EQ(stats.num_ecn_marks_received.ect0, 1);
+ EXPECT_EQ(stats.num_ecn_marks_received.ect1, 0);
+ EXPECT_EQ(stats.num_ecn_marks_received.ce, 0);
}
TEST_P(QuicConnectionTest, EcnMarksCoalescedPacket) {
@@ -16914,6 +16928,16 @@
std::make_unique<TaggingEncrypter>(ENCRYPTION_HANDSHAKE));
EXPECT_CALL(visitor_, OnCryptoFrame(_)).Times(2);
ProcessCoalescedPacket(packets, ECN_ECT0);
+ // Send two PINGs so that the ACKs go too.
+ connection_.SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE);
+ if (connection_.version().HasIetfQuicFrames()) {
+ EXPECT_CALL(visitor_, OnHandshakePacketSent()).Times(1);
+ connection_.SetDefaultEncryptionLevel(ENCRYPTION_HANDSHAKE);
+ QuicConnectionPeer::SendPing(&connection_);
+ connection_.SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE);
+ QuicConnectionPeer::SendPing(&connection_);
+ }
+ QuicConnectionStats stats = connection_.GetStats();
ack_frame =
connection_.SupportsMultiplePacketNumberSpaces()
? connection_.received_packet_manager().GetAckFrame(HANDSHAKE_DATA)
@@ -16929,6 +16953,16 @@
EXPECT_TRUE(ack_frame.ecn_counters.has_value());
EXPECT_EQ(ack_frame.ecn_counters->ect0, 1);
}
+ if (GetQuicRestartFlag(quic_receive_ecn)) {
+ EXPECT_EQ(stats.num_ecn_marks_received.ect0, 2);
+ EXPECT_EQ(stats.num_ack_frames_sent_with_ecn,
+ connection_.version().HasIetfQuicFrames() ? 2 : 0);
+ } else {
+ EXPECT_EQ(stats.num_ecn_marks_received.ect0, 0);
+ EXPECT_EQ(stats.num_ack_frames_sent_with_ecn, 0);
+ }
+ EXPECT_EQ(stats.num_ecn_marks_received.ect1, 0);
+ EXPECT_EQ(stats.num_ecn_marks_received.ce, 0);
}
TEST_P(QuicConnectionTest, EcnMarksUndecryptableCoalescedPacket) {
@@ -17047,6 +17081,12 @@
// Should be recorded as ECT(0), not CE.
EXPECT_EQ(ack_frame.ecn_counters->ect0,
connection_.SupportsMultiplePacketNumberSpaces() ? 1 : 2);
+ QuicConnectionStats stats = connection_.GetStats();
+ EXPECT_EQ(stats.num_ecn_marks_received.ect0,
+ GetQuicRestartFlag(quic_receive_ecn) ? 2 : 0);
+ EXPECT_EQ(stats.num_ecn_marks_received.ect1, 0);
+ EXPECT_EQ(stats.num_ecn_marks_received.ce,
+ GetQuicRestartFlag(quic_receive_ecn) ? 1 : 0);
}
TEST_P(QuicConnectionTest, ReceivedPacketInfoDefaults) {