Remove QuicTestUtils::GetPacketLengthForOneStream and change three QUIC tests to instead send full sized packets followed by a partially full packet.
gfe-relnote: n/a (Test only)
PiperOrigin-RevId: 241926261
Change-Id: I84dc9dedb30a809cb800bc4e0c3460c7383415af
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index b01906d..3d1e483 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -5354,89 +5354,35 @@
if (connection_.SupportsMultiplePacketNumberSpaces()) {
return;
}
- // All packets carry version info till version is negotiated.
- size_t payload_length;
- size_t length = GetPacketLengthForOneStream(
- connection_.version().transport_version, kIncludeVersion,
- !kIncludeDiversificationNonce, PACKET_8BYTE_CONNECTION_ID,
- PACKET_0BYTE_CONNECTION_ID,
- QuicPacketCreatorPeer::GetPacketNumberLength(creator_),
- QuicPacketCreatorPeer::GetRetryTokenLengthLength(creator_),
- QuicPacketCreatorPeer::GetLengthLength(creator_), &payload_length);
- connection_.SetMaxPacketLength(length);
// Queue the first packet.
+ size_t payload_length = connection_.max_packet_length();
EXPECT_CALL(*send_algorithm_, CanSend(_)).WillOnce(testing::Return(false));
const std::string payload(payload_length, 'a');
- EXPECT_EQ(0u, connection_.SendStreamDataWithString(3, payload, 0, NO_FIN)
+ QuicStreamId first_bidi_stream_id(QuicUtils::GetFirstBidirectionalStreamId(
+ connection_.version().transport_version, Perspective::IS_CLIENT));
+ EXPECT_EQ(0u, connection_
+ .SendStreamDataWithString(first_bidi_stream_id, payload, 0,
+ NO_FIN)
.bytes_consumed);
EXPECT_EQ(0u, connection_.NumQueuedPackets());
}
-TEST_P(QuicConnectionTest, LoopThroughSendingPackets) {
+TEST_P(QuicConnectionTest, SendingThreePackets) {
if (connection_.SupportsMultiplePacketNumberSpaces()) {
return;
}
- // All packets carry version info till version is negotiated.
- size_t payload_length;
- // Number of packets this test generates. The goal is to have
- // kPacketCount packets, each the same size (overhead and payload).
- // The payload will vary depending on the overhead (which in turn
- // varies per the QUIC packet encoding rules).
- const int kPacketCount = 7;
-
- // Get the basic packet size. This assumes, among other things, a
- // stream offset of 0.
- size_t length = GetPacketLengthForOneStream(
- connection_.version().transport_version, kIncludeVersion,
- !kIncludeDiversificationNonce, PACKET_8BYTE_CONNECTION_ID,
- PACKET_0BYTE_CONNECTION_ID,
- QuicPacketCreatorPeer::GetPacketNumberLength(creator_),
- QuicPacketCreatorPeer::GetRetryTokenLengthLength(creator_),
- QuicPacketCreatorPeer::GetLengthLength(creator_), &payload_length);
- // GetPacketLengthForOneStream() assumes a stream offset of 0 in determining
- // packet length. The size of the offset field in a stream frame is
- // 0 for offset 0, and 2 for non-zero offsets up through 16K (for
- // versions other than 99) and 1 for non-zero offsets through 16K
- // for version 99. Increase the length by 1 or 2, as apporpriate, so
- // that subsequent packets containing subsequent stream frames with
- // non-zero offsets will fit within the packet length.
- if (connection_.version().transport_version == QUIC_VERSION_99) {
- length = length + 1;
- } else {
- length = length + 2;
- }
-
- connection_.SetMaxPacketLength(length);
-
- // Queue the first packet.
- EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _))
- .Times(kPacketCount);
-
- size_t total_payload_length = payload_length * kPacketCount;
- // The first frame of the stream is at offset 0. When the offset is
- // 0, it is not included in the stream frame. Increase the total
- // payload so that the "missing" offset byte in the first packet is
- // occupied by a payload byte. The net result is that each of the N
- // packets of the test will contain a single stream frame, each of
- // which will be the same size (overhead + data).
- if (connection_.version().transport_version == QUIC_VERSION_99) {
- // Version 99 encodes the offset in 1 byte for the scope of this test.
- total_payload_length = total_payload_length + 1;
- } else {
- // Versions other than 99 encode the offset in 2 bytes for the
- // scope of this test.
- total_payload_length = total_payload_length + 2;
- }
+ // Make the payload twice the size of the packet, so 3 packets are written.
+ size_t total_payload_length = 2 * connection_.max_packet_length();
const std::string payload(total_payload_length, 'a');
-
- EXPECT_EQ(payload.size(),
- connection_
- .SendStreamDataWithString(QuicUtils::GetCryptoStreamId(
- connection_.transport_version()),
- payload, 0, NO_FIN)
- .bytes_consumed);
+ QuicStreamId first_bidi_stream_id(QuicUtils::GetFirstBidirectionalStreamId(
+ connection_.version().transport_version, Perspective::IS_CLIENT));
+ EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(3);
+ EXPECT_EQ(payload.size(), connection_
+ .SendStreamDataWithString(first_bidi_stream_id,
+ payload, 0, NO_FIN)
+ .bytes_consumed);
}
TEST_P(QuicConnectionTest, LoopThroughSendingPacketsWithTruncation) {
diff --git a/quic/core/quic_packet_creator_test.cc b/quic/core/quic_packet_creator_test.cc
index 45f2651..1cdc3e4 100644
--- a/quic/core/quic_packet_creator_test.cc
+++ b/quic/core/quic_packet_creator_test.cc
@@ -1197,18 +1197,9 @@
}
creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE);
// A string larger than fits into a frame.
- size_t payload_length;
- creator_.SetMaxPacketLength(GetPacketLengthForOneStream(
- client_framer_.transport_version(),
- QuicPacketCreatorPeer::SendVersionInPacket(&creator_),
- !kIncludeDiversificationNonce,
- creator_.GetDestinationConnectionIdLength(),
- creator_.GetSourceConnectionIdLength(),
- QuicPacketCreatorPeer::GetPacketNumberLength(&creator_),
- QuicPacketCreatorPeer::GetRetryTokenLengthLength(&creator_),
- QuicPacketCreatorPeer::GetLengthLength(&creator_), &payload_length));
QuicFrame frame;
- const std::string too_long_payload(payload_length * 2, 'a');
+ size_t payload_length = creator_.max_packet_length();
+ const std::string too_long_payload(payload_length, 'a');
MakeIOVector(too_long_payload, &iov_);
EXPECT_CALL(delegate_, OnSerializedPacket(_))
.WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket));
@@ -1217,9 +1208,8 @@
ASSERT_TRUE(creator_.ConsumeData(stream_id, &iov_, 1u, iov_.iov_len, 0u, 0u,
true, false, NOT_RETRANSMISSION, &frame));
size_t consumed = frame.stream_frame.data_length;
- EXPECT_EQ(payload_length, consumed);
- const std::string payload(payload_length, 'a');
- CheckStreamFrame(frame, stream_id, payload, 0u, false);
+ // The entire payload could not be consumed.
+ EXPECT_GT(payload_length, consumed);
creator_.Flush();
DeleteSerializedPacket();
}
diff --git a/quic/test_tools/quic_test_utils.cc b/quic/test_tools/quic_test_utils.cc
index c80a055..db57071 100644
--- a/quic/test_tools/quic_test_utils.cc
+++ b/quic/test_tools/quic_test_utils.cc
@@ -982,45 +982,6 @@
<< HexDumpWithMarks(actual, actual_len, marks.get(), max_len);
}
-size_t GetPacketLengthForOneStream(
- QuicTransportVersion version,
- bool include_version,
- bool include_diversification_nonce,
- QuicConnectionIdLength destination_connection_id_length,
- QuicConnectionIdLength source_connection_id_length,
- QuicPacketNumberLength packet_number_length,
- QuicVariableLengthIntegerLength retry_token_length_length,
- QuicVariableLengthIntegerLength length_length,
- size_t* payload_length) {
- *payload_length = 1;
- const size_t stream_length =
- NullEncrypter(Perspective::IS_CLIENT).GetCiphertextSize(*payload_length) +
- QuicPacketCreator::StreamFramePacketOverhead(
- version, destination_connection_id_length,
- source_connection_id_length, include_version,
- include_diversification_nonce, packet_number_length,
- retry_token_length_length, length_length, 0u);
- const size_t ack_length =
- NullEncrypter(Perspective::IS_CLIENT)
- .GetCiphertextSize(QuicFramer::GetMinAckFrameSize(
- version, PACKET_1BYTE_PACKET_NUMBER)) +
- GetPacketHeaderSize(version, destination_connection_id_length,
- source_connection_id_length, include_version,
- include_diversification_nonce, packet_number_length,
- retry_token_length_length, 0, length_length);
- if (stream_length < ack_length) {
- *payload_length = 1 + ack_length - stream_length;
- }
-
- return NullEncrypter(Perspective::IS_CLIENT)
- .GetCiphertextSize(*payload_length) +
- QuicPacketCreator::StreamFramePacketOverhead(
- version, destination_connection_id_length,
- source_connection_id_length, include_version,
- include_diversification_nonce, packet_number_length,
- retry_token_length_length, length_length, 0u);
-}
-
QuicConfig DefaultQuicConfig() {
QuicConfig config;
config.SetInitialStreamFlowControlWindowToSend(
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index f61bd25..00c9748 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -158,20 +158,6 @@
const char* expected,
const int expected_len);
-// Returns the length of a QuicPacket that is capable of holding either a
-// stream frame or a minimal ack frame. Sets |*payload_length| to the number
-// of bytes of stream data that will fit in such a packet.
-size_t GetPacketLengthForOneStream(
- QuicTransportVersion version,
- bool include_version,
- bool include_diversification_nonce,
- QuicConnectionIdLength destination_connection_id_length,
- QuicConnectionIdLength source_connection_id_length,
- QuicPacketNumberLength packet_number_length,
- QuicVariableLengthIntegerLength retry_token_length_length,
- QuicVariableLengthIntegerLength length_length,
- size_t* payload_length);
-
// Returns QuicConfig set to default values.
QuicConfig DefaultQuicConfig();