Add GetLargestGuaranteedMessagePayload to QuicSession/Connection/Generator/Creator to expose the largest message payload that's guaranteed to fit in any packet containing application data.
gfe-relnote: n/a (Only used in Quartc)
PiperOrigin-RevId: 242135946
Change-Id: I52cc763af88d22fc240210e00cf4d4062d0b9c59
diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index c3f50ef..6935dee 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -3552,8 +3552,8 @@
}
SetPacketLossPercentage(30);
- ASSERT_GT(kMaxPacketSize, client_session->GetLargestMessagePayload());
- ASSERT_LT(0, client_session->GetLargestMessagePayload());
+ ASSERT_GT(kMaxPacketSize, client_session->GetCurrentLargestMessagePayload());
+ ASSERT_LT(0, client_session->GetCurrentLargestMessagePayload());
std::string message_string(kMaxPacketSize, 'a');
QuicStringPiece message_buffer(message_string);
@@ -3564,20 +3564,23 @@
QuicConnection::ScopedPacketFlusher flusher(
client_session->connection(), QuicConnection::SEND_ACK_IF_PENDING);
// Verify the largest message gets successfully sent.
- EXPECT_EQ(MessageResult(MESSAGE_STATUS_SUCCESS, 1),
- client_session->SendMessage(MakeSpan(
- client_session->connection()
- ->helper()
- ->GetStreamSendBufferAllocator(),
- QuicStringPiece(message_buffer.data(),
- client_session->GetLargestMessagePayload()),
- &storage)));
+ EXPECT_EQ(
+ MessageResult(MESSAGE_STATUS_SUCCESS, 1),
+ client_session->SendMessage(MakeSpan(
+ client_session->connection()
+ ->helper()
+ ->GetStreamSendBufferAllocator(),
+ QuicStringPiece(message_buffer.data(),
+ client_session->GetCurrentLargestMessagePayload()),
+ &storage)));
// Send more messages with size (0, largest_payload] until connection is
// write blocked.
const int kTestMaxNumberOfMessages = 100;
for (size_t i = 2; i <= kTestMaxNumberOfMessages; ++i) {
size_t message_length =
- random->RandUint64() % client_session->GetLargestMessagePayload() + 1;
+ random->RandUint64() %
+ client_session->GetCurrentLargestMessagePayload() +
+ 1;
MessageResult result = client_session->SendMessage(MakeSpan(
client_session->connection()
->helper()
@@ -3592,17 +3595,17 @@
}
client_->WaitForDelayedAcks();
- EXPECT_EQ(
- MESSAGE_STATUS_TOO_LARGE,
- client_session
- ->SendMessage(MakeSpan(
- client_session->connection()
- ->helper()
- ->GetStreamSendBufferAllocator(),
- QuicStringPiece(message_buffer.data(),
- client_session->GetLargestMessagePayload() + 1),
- &storage))
- .status);
+ EXPECT_EQ(MESSAGE_STATUS_TOO_LARGE,
+ client_session
+ ->SendMessage(MakeSpan(
+ client_session->connection()
+ ->helper()
+ ->GetStreamSendBufferAllocator(),
+ QuicStringPiece(
+ message_buffer.data(),
+ client_session->GetCurrentLargestMessagePayload() + 1),
+ &storage))
+ .status);
EXPECT_EQ(QUIC_NO_ERROR, client_->connection_error());
}