Fix QUICHE build on platforms using EXPECT_DEBUG_DEATH for EXPECT_QUIC_BUG
PiperOrigin-RevId: 452622101
diff --git a/quiche/quic/core/http/quic_spdy_session_test.cc b/quiche/quic/core/http/quic_spdy_session_test.cc
index f854763..4cfb5b7 100644
--- a/quiche/quic/core/http/quic_spdy_session_test.cc
+++ b/quiche/quic/core/http/quic_spdy_session_test.cc
@@ -2679,11 +2679,13 @@
GetNthServerInitiatedUnidirectionalStreamId(transport_version(), 1);
QuicStreamFrame data2(id2, false, 0, absl::string_view(type1, 1));
EXPECT_CALL(debug_visitor, OnPeerControlStreamCreated(id2)).Times(0);
- EXPECT_CALL(*connection_,
- CloseConnection(QUIC_HTTP_DUPLICATE_UNIDIRECTIONAL_STREAM,
- "Control stream is received twice.", _));
EXPECT_QUIC_PEER_BUG(
- session_.OnStreamFrame(data2),
+ {
+ EXPECT_CALL(*connection_,
+ CloseConnection(QUIC_HTTP_DUPLICATE_UNIDIRECTIONAL_STREAM,
+ "Control stream is received twice.", _));
+ session_.OnStreamFrame(data2);
+ },
"Received a duplicate Control stream: Closing connection.");
QuicStreamId id3 =
@@ -2698,11 +2700,14 @@
GetNthServerInitiatedUnidirectionalStreamId(transport_version(), 3);
QuicStreamFrame data4(id4, false, 0, absl::string_view(type2, 1));
EXPECT_CALL(debug_visitor, OnPeerQpackEncoderStreamCreated(id4)).Times(0);
- EXPECT_CALL(*connection_,
- CloseConnection(QUIC_HTTP_DUPLICATE_UNIDIRECTIONAL_STREAM,
- "QPACK encoder stream is received twice.", _));
EXPECT_QUIC_PEER_BUG(
- session_.OnStreamFrame(data4),
+ {
+ EXPECT_CALL(
+ *connection_,
+ CloseConnection(QUIC_HTTP_DUPLICATE_UNIDIRECTIONAL_STREAM,
+ "QPACK encoder stream is received twice.", _));
+ session_.OnStreamFrame(data4);
+ },
"Received a duplicate QPACK encoder stream: Closing connection.");
QuicStreamId id5 =
@@ -2717,11 +2722,14 @@
GetNthServerInitiatedUnidirectionalStreamId(transport_version(), 5);
QuicStreamFrame data6(id6, false, 0, absl::string_view(type3, 1));
EXPECT_CALL(debug_visitor, OnPeerQpackDecoderStreamCreated(id6)).Times(0);
- EXPECT_CALL(*connection_,
- CloseConnection(QUIC_HTTP_DUPLICATE_UNIDIRECTIONAL_STREAM,
- "QPACK decoder stream is received twice.", _));
EXPECT_QUIC_PEER_BUG(
- session_.OnStreamFrame(data6),
+ {
+ EXPECT_CALL(
+ *connection_,
+ CloseConnection(QUIC_HTTP_DUPLICATE_UNIDIRECTIONAL_STREAM,
+ "QPACK decoder stream is received twice.", _));
+ session_.OnStreamFrame(data6);
+ },
"Received a duplicate QPACK decoder stream: Closing connection.");
}
@@ -3790,10 +3798,12 @@
? GetNthClientInitiatedUnidirectionalStreamId(transport_version(), 3)
: GetNthServerInitiatedUnidirectionalStreamId(transport_version(), 3);
QuicStreamFrame frame(control_stream_id, /*fin=*/false, /*offset=*/0, data);
- EXPECT_CALL(*connection_,
- CloseConnection(QUIC_HTTP_INVALID_SETTING_VALUE, _, _));
EXPECT_QUIC_PEER_BUG(
- session_.OnStreamFrame(frame),
+ {
+ EXPECT_CALL(*connection_,
+ CloseConnection(QUIC_HTTP_INVALID_SETTING_VALUE, _, _));
+ session_.OnStreamFrame(frame);
+ },
"Received SETTINGS_ENABLE_CONNECT_PROTOCOL with invalid value");
}
diff --git a/quiche/quic/core/quic_connection_test.cc b/quiche/quic/core/quic_connection_test.cc
index 682f867..ff84538 100644
--- a/quiche/quic/core/quic_connection_test.cc
+++ b/quiche/quic/core/quic_connection_test.cc
@@ -6957,14 +6957,19 @@
return;
}
- EXPECT_CALL(visitor_, OnConnectionClosed(_, ConnectionCloseSource::FROM_SELF))
- .WillOnce(Invoke(this, &QuicConnectionTest::SaveConnectionCloseFrame));
- EXPECT_QUIC_BUG(connection_.SaveAndSendStreamData(3, {}, 0, FIN),
- "Cannot send stream data with level: ENCRYPTION_INITIAL");
- EXPECT_FALSE(connection_.connected());
- EXPECT_EQ(1, connection_close_frame_count_);
- EXPECT_THAT(saved_connection_close_frame_.quic_error_code,
- IsError(QUIC_ATTEMPT_TO_SEND_UNENCRYPTED_STREAM_DATA));
+ EXPECT_QUIC_BUG(
+ {
+ EXPECT_CALL(visitor_,
+ OnConnectionClosed(_, ConnectionCloseSource::FROM_SELF))
+ .WillOnce(
+ Invoke(this, &QuicConnectionTest::SaveConnectionCloseFrame));
+ connection_.SaveAndSendStreamData(3, {}, 0, FIN);
+ EXPECT_FALSE(connection_.connected());
+ EXPECT_EQ(1, connection_close_frame_count_);
+ EXPECT_THAT(saved_connection_close_frame_.quic_error_code,
+ IsError(QUIC_ATTEMPT_TO_SEND_UNENCRYPTED_STREAM_DATA));
+ },
+ "Cannot send stream data with level: ENCRYPTION_INITIAL");
}
TEST_P(QuicConnectionTest, SetRetransmissionAlarmForCryptoPacket) {
@@ -9776,60 +9781,65 @@
set_perspective(Perspective::IS_SERVER);
use_tagging_decrypter();
- EXPECT_CALL(visitor_, OnHandshakePacketSent());
-
- EXPECT_CALL(visitor_, OnConnectionClosed(_, ConnectionCloseSource::FROM_SELF))
- .WillOnce(Invoke(this, &QuicConnectionTest::SaveConnectionCloseFrame));
-
- ProcessDataPacketAtLevel(1, !kHasStopWaiting, ENCRYPTION_INITIAL);
auto test_body = [&] {
- QuicConnection::ScopedPacketFlusher flusher(&connection_);
- connection_.SetEncrypter(ENCRYPTION_INITIAL,
- std::make_unique<TaggingEncrypter>(0x01));
- connection_.SetDefaultEncryptionLevel(ENCRYPTION_INITIAL);
- connection_.SendCryptoDataWithString("foo", 0);
- // Verify this packet is on hold.
- EXPECT_EQ(0u, writer_->packets_write_attempts());
+ EXPECT_CALL(visitor_, OnHandshakePacketSent());
- connection_.SetEncrypter(ENCRYPTION_HANDSHAKE,
- std::make_unique<TaggingEncrypter>(0x02));
- connection_.SetDefaultEncryptionLevel(ENCRYPTION_HANDSHAKE);
- connection_.SendCryptoDataWithString("bar", 3);
- EXPECT_EQ(0u, writer_->packets_write_attempts());
+ EXPECT_CALL(visitor_,
+ OnConnectionClosed(_, ConnectionCloseSource::FROM_SELF))
+ .WillOnce(Invoke(this, &QuicConnectionTest::SaveConnectionCloseFrame));
- connection_.SetEncrypter(ENCRYPTION_FORWARD_SECURE,
- std::make_unique<TaggingEncrypter>(0x03));
- connection_.SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE);
- SendStreamDataToPeer(2, "baz", 3, NO_FIN, nullptr);
+ ProcessDataPacketAtLevel(1, !kHasStopWaiting, ENCRYPTION_INITIAL);
- creator_->Flush();
+ {
+ QuicConnection::ScopedPacketFlusher flusher(&connection_);
+ connection_.SetEncrypter(ENCRYPTION_INITIAL,
+ std::make_unique<TaggingEncrypter>(0x01));
+ connection_.SetDefaultEncryptionLevel(ENCRYPTION_INITIAL);
+ connection_.SendCryptoDataWithString("foo", 0);
+ // Verify this packet is on hold.
+ EXPECT_EQ(0u, writer_->packets_write_attempts());
- auto& coalesced_packet =
- QuicConnectionPeer::GetCoalescedPacket(&connection_);
- QuicPacketLength coalesced_packet_max_length =
- coalesced_packet.max_packet_length();
- QuicCoalescedPacketPeer::SetMaxPacketLength(coalesced_packet,
- coalesced_packet.length());
+ connection_.SetEncrypter(ENCRYPTION_HANDSHAKE,
+ std::make_unique<TaggingEncrypter>(0x02));
+ connection_.SetDefaultEncryptionLevel(ENCRYPTION_HANDSHAKE);
+ connection_.SendCryptoDataWithString("bar", 3);
+ EXPECT_EQ(0u, writer_->packets_write_attempts());
- // Make the coalescer's FORWARD_SECURE packet longer.
- *QuicCoalescedPacketPeer::GetMutableEncryptedBuffer(
- coalesced_packet, ENCRYPTION_FORWARD_SECURE) += "!!! TEST !!!";
+ connection_.SetEncrypter(ENCRYPTION_FORWARD_SECURE,
+ std::make_unique<TaggingEncrypter>(0x03));
+ connection_.SetDefaultEncryptionLevel(ENCRYPTION_FORWARD_SECURE);
+ SendStreamDataToPeer(2, "baz", 3, NO_FIN, nullptr);
- QUIC_LOG(INFO) << "Reduced coalesced_packet_max_length from "
- << coalesced_packet_max_length << " to "
- << coalesced_packet.max_packet_length()
- << ", coalesced_packet.length:" << coalesced_packet.length()
- << ", coalesced_packet.packet_lengths:"
- << absl::StrJoin(coalesced_packet.packet_lengths(), ":");
+ creator_->Flush();
+
+ auto& coalesced_packet =
+ QuicConnectionPeer::GetCoalescedPacket(&connection_);
+ QuicPacketLength coalesced_packet_max_length =
+ coalesced_packet.max_packet_length();
+ QuicCoalescedPacketPeer::SetMaxPacketLength(coalesced_packet,
+ coalesced_packet.length());
+
+ // Make the coalescer's FORWARD_SECURE packet longer.
+ *QuicCoalescedPacketPeer::GetMutableEncryptedBuffer(
+ coalesced_packet, ENCRYPTION_FORWARD_SECURE) += "!!! TEST !!!";
+
+ QUIC_LOG(INFO) << "Reduced coalesced_packet_max_length from "
+ << coalesced_packet_max_length << " to "
+ << coalesced_packet.max_packet_length()
+ << ", coalesced_packet.length:"
+ << coalesced_packet.length()
+ << ", coalesced_packet.packet_lengths:"
+ << absl::StrJoin(coalesced_packet.packet_lengths(), ":");
+ }
+
+ EXPECT_FALSE(connection_.connected());
+ EXPECT_THAT(saved_connection_close_frame_.quic_error_code,
+ IsError(QUIC_FAILED_TO_SERIALIZE_PACKET));
+ EXPECT_EQ(saved_connection_close_frame_.error_details,
+ "Failed to serialize coalesced packet.");
};
EXPECT_QUIC_BUG(test_body(), "SerializeCoalescedPacket failed.");
-
- EXPECT_FALSE(connection_.connected());
- EXPECT_THAT(saved_connection_close_frame_.quic_error_code,
- IsError(QUIC_FAILED_TO_SERIALIZE_PACKET));
- EXPECT_EQ(saved_connection_close_frame_.error_details,
- "Failed to serialize coalesced packet.");
}
TEST_P(QuicConnectionTest, LegacyVersionEncapsulation) {
@@ -14386,21 +14396,24 @@
QuicAckFrame ack = InitAckFrame({{QuicPacketNumber(1), QuicPacketNumber(5)}});
frames.push_back(QuicFrame(&ack));
- EXPECT_CALL(visitor_, OnConnectionMigration(_)).Times(1);
-
// Invoke OnCanWrite.
- EXPECT_CALL(visitor_, OnStreamFrame(_))
- .WillOnce(
- InvokeWithoutArgs(¬ifier_, &SimpleSessionNotifier::OnCanWrite));
QuicIpAddress ip_address;
ASSERT_TRUE(ip_address.FromString("127.0.52.223"));
- EXPECT_QUIC_BUG(ProcessFramesPacketWithAddresses(
- frames, kSelfAddress, QuicSocketAddress(ip_address, 1000),
- ENCRYPTION_FORWARD_SECURE),
- "Try to write mid packet processing");
- EXPECT_EQ(1u, writer_->path_challenge_frames().size());
- // Verify stream frame will not be retransmitted.
- EXPECT_TRUE(writer_->stream_frames().empty());
+ EXPECT_QUIC_BUG(
+ {
+ EXPECT_CALL(visitor_, OnConnectionMigration(_)).Times(1);
+ EXPECT_CALL(visitor_, OnStreamFrame(_))
+ .WillOnce(InvokeWithoutArgs(¬ifier_,
+ &SimpleSessionNotifier::OnCanWrite));
+ ProcessFramesPacketWithAddresses(frames, kSelfAddress,
+ QuicSocketAddress(ip_address, 1000),
+ ENCRYPTION_FORWARD_SECURE);
+ EXPECT_EQ(1u, writer_->path_challenge_frames().size());
+
+ // Verify stream frame will not be retransmitted.
+ EXPECT_TRUE(writer_->stream_frames().empty());
+ },
+ "Try to write mid packet processing");
}
TEST_P(QuicConnectionTest, PtoSendStreamData) {
diff --git a/quiche/quic/core/quic_dispatcher_test.cc b/quiche/quic/core/quic_dispatcher_test.cc
index 3f65d3e..e5e6ea2 100644
--- a/quiche/quic/core/quic_dispatcher_test.cc
+++ b/quiche/quic/core/quic_dispatcher_test.cc
@@ -2162,20 +2162,23 @@
TEST_P(QuicDispatcherWriteBlockedListTest,
RemoveConnectionFromWriteBlockedListWhenDeletingSessions) {
- dispatcher_->OnConnectionClosed(connection1()->connection_id(),
- QUIC_PACKET_WRITE_ERROR, "Closed by test.",
- ConnectionCloseSource::FROM_SELF);
+ EXPECT_QUIC_BUG(
+ {
+ dispatcher_->OnConnectionClosed(
+ connection1()->connection_id(), QUIC_PACKET_WRITE_ERROR,
+ "Closed by test.", ConnectionCloseSource::FROM_SELF);
- SetBlocked();
+ SetBlocked();
- ASSERT_FALSE(dispatcher_->HasPendingWrites());
- SetBlocked();
- dispatcher_->OnWriteBlocked(connection1());
- ASSERT_TRUE(dispatcher_->HasPendingWrites());
+ ASSERT_FALSE(dispatcher_->HasPendingWrites());
+ SetBlocked();
+ dispatcher_->OnWriteBlocked(connection1());
+ ASSERT_TRUE(dispatcher_->HasPendingWrites());
- EXPECT_QUIC_BUG(dispatcher_->DeleteSessions(),
- "QuicConnection was in WriteBlockedList before destruction");
- MarkSession1Deleted();
+ dispatcher_->DeleteSessions();
+ MarkSession1Deleted();
+ },
+ "QuicConnection was in WriteBlockedList before destruction");
}
class QuicDispatcherSupportMultipleConnectionIdPerConnectionTest
diff --git a/quiche/quic/core/quic_flow_controller_test.cc b/quiche/quic/core/quic_flow_controller_test.cc
index a03cff0..567b120 100644
--- a/quiche/quic/core/quic_flow_controller_test.cc
+++ b/quiche/quic/core/quic_flow_controller_test.cc
@@ -95,13 +95,16 @@
EXPECT_EQ(send_window_, flow_controller_->SendWindowSize());
// Try to send more bytes, violating flow control.
- EXPECT_CALL(*connection_,
- CloseConnection(QUIC_FLOW_CONTROL_SENT_TOO_MUCH_DATA, _, _));
EXPECT_QUIC_BUG(
- flow_controller_->AddBytesSent(send_window_ * 10),
+ {
+ EXPECT_CALL(
+ *connection_,
+ CloseConnection(QUIC_FLOW_CONTROL_SENT_TOO_MUCH_DATA, _, _));
+ flow_controller_->AddBytesSent(send_window_ * 10);
+ EXPECT_TRUE(flow_controller_->IsBlocked());
+ EXPECT_EQ(0u, flow_controller_->SendWindowSize());
+ },
absl::StrCat("Trying to send an extra ", send_window_ * 10, " bytes"));
- EXPECT_TRUE(flow_controller_->IsBlocked());
- EXPECT_EQ(0u, flow_controller_->SendWindowSize());
}
TEST_F(QuicFlowControllerTest, ReceivingBytes) {
diff --git a/quiche/quic/core/quic_framer_test.cc b/quiche/quic/core/quic_framer_test.cc
index 7751510..9b022a2 100644
--- a/quiche/quic/core/quic_framer_test.cc
+++ b/quiche/quic/core/quic_framer_test.cc
@@ -10446,11 +10446,14 @@
/*retry_token_length=*/0, VARIABLE_LENGTH_INTEGER_LENGTH_0);
char buffer[kMaxOutgoingPacketSize];
size_t encrypted_length = 1;
- EXPECT_QUIC_BUG(encrypted_length = framer_.EncryptPayload(
- ENCRYPTION_INITIAL, kPacketNumber, *packet, buffer,
- kMaxOutgoingPacketSize),
- "packet is shorter than associated data length");
- EXPECT_EQ(0u, encrypted_length);
+ EXPECT_QUIC_BUG(
+ {
+ encrypted_length =
+ framer_.EncryptPayload(ENCRYPTION_INITIAL, kPacketNumber, *packet,
+ buffer, kMaxOutgoingPacketSize);
+ EXPECT_EQ(0u, encrypted_length);
+ },
+ "packet is shorter than associated data length");
}
TEST_P(QuicFramerTest, EncryptPacketWithVersionFlag) {
diff --git a/quiche/quic/core/quic_stream_test.cc b/quiche/quic/core/quic_stream_test.cc
index e96a99d..51b25a5 100644
--- a/quiche/quic/core/quic_stream_test.cc
+++ b/quiche/quic/core/quic_stream_test.cc
@@ -480,9 +480,13 @@
.WillOnce(Invoke(session_.get(), &MockQuicSession::ConsumeData));
stream_->WriteOrBufferData(data, false, nullptr);
EXPECT_TRUE(session_->HasUnackedStreamData());
- EXPECT_CALL(*connection_, CloseConnection(QUIC_STREAM_LENGTH_OVERFLOW, _, _));
- EXPECT_QUIC_BUG(stream_->WriteOrBufferData("a", false, nullptr),
- "Write too many data via stream");
+ EXPECT_QUIC_BUG(
+ {
+ EXPECT_CALL(*connection_,
+ CloseConnection(QUIC_STREAM_LENGTH_OVERFLOW, _, _));
+ stream_->WriteOrBufferData("a", false, nullptr);
+ },
+ "Write too many data via stream");
}
TEST_P(QuicStreamTest, ConnectionCloseAfterStreamClose) {
@@ -789,11 +793,14 @@
TEST_P(QuicStreamTest, StreamTooLong) {
Initialize();
- EXPECT_CALL(*connection_, CloseConnection(QUIC_STREAM_LENGTH_OVERFLOW, _, _))
- .Times(1);
QuicStreamFrame stream_frame(stream_->id(), false, kMaxStreamLength, ".");
EXPECT_QUIC_PEER_BUG(
- stream_->OnStreamFrame(stream_frame),
+ {
+ EXPECT_CALL(*connection_,
+ CloseConnection(QUIC_STREAM_LENGTH_OVERFLOW, _, _))
+ .Times(1);
+ stream_->OnStreamFrame(stream_frame);
+ },
absl::StrCat("Receive stream frame on stream ", stream_->id(),
" reaches max stream length"));
}
@@ -1237,9 +1244,13 @@
quiche::QuicheMemSliceStorage storage2(
&iov2, 1,
session_->connection()->helper()->GetStreamSendBufferAllocator(), 1024);
- EXPECT_CALL(*connection_, CloseConnection(QUIC_STREAM_LENGTH_OVERFLOW, _, _));
- EXPECT_QUIC_BUG(stream_->WriteMemSlices(storage2.ToSpan(), false),
- "Write too many data via stream");
+ EXPECT_QUIC_BUG(
+ {
+ EXPECT_CALL(*connection_,
+ CloseConnection(QUIC_STREAM_LENGTH_OVERFLOW, _, _));
+ stream_->WriteMemSlices(storage2.ToSpan(), false);
+ },
+ "Write too many data via stream");
}
TEST_P(QuicStreamTest, WriteMemSlices) {
@@ -1328,9 +1339,13 @@
EXPECT_EQ(5u, consumed.bytes_consumed);
quiche::QuicheMemSlice slice2 = MemSliceFromString("6");
- EXPECT_CALL(*connection_, CloseConnection(QUIC_STREAM_LENGTH_OVERFLOW, _, _));
- EXPECT_QUIC_BUG(stream_->WriteMemSlice(std::move(slice2), false),
- "Write too many data via stream");
+ EXPECT_QUIC_BUG(
+ {
+ EXPECT_CALL(*connection_,
+ CloseConnection(QUIC_STREAM_LENGTH_OVERFLOW, _, _));
+ stream_->WriteMemSlice(std::move(slice2), false);
+ },
+ "Write too many data via stream");
}
TEST_P(QuicStreamTest, StreamDataGetAckedMultipleTimes) {