Test that QuicConfig is capable of processing 2 consecutive transport parameters.
In 0-rtt, QuicConfig will first be set up with cached transport params and then reset with the transport params from handshake.
gfe-relnote: test change only, not protected.
PiperOrigin-RevId: 309123862
Change-Id: If56e4e1b1f8c2027e366b8fda932d2f1780b5d97
diff --git a/quic/core/quic_config_test.cc b/quic/core/quic_config_test.cc
index 69ce78d..28b56b9 100644
--- a/quic/core/quic_config_test.cc
+++ b/quic/core/quic_config_test.cc
@@ -429,11 +429,13 @@
kMinimumFlowControlSendWindow);
params.max_packet_size.set_value(kMaxPacketSizeForTest);
params.max_datagram_frame_size.set_value(kMaxDatagramFrameSizeForTest);
+ params.initial_max_streams_bidi.set_value(kDefaultMaxStreamsPerConnection);
std::string error_details;
EXPECT_THAT(
config_.ProcessTransportParameters(params, SERVER, &error_details),
- IsQuicNoError());
+ IsQuicNoError())
+ << error_details;
ASSERT_TRUE(
config_.HasReceivedInitialMaxStreamDataBytesIncomingBidirectional());
@@ -456,7 +458,58 @@
EXPECT_EQ(kMaxDatagramFrameSizeForTest,
config_.ReceivedMaxDatagramFrameSize());
+ ASSERT_TRUE(config_.HasReceivedMaxBidirectionalStreams());
+ EXPECT_EQ(kDefaultMaxStreamsPerConnection,
+ config_.ReceivedMaxBidirectionalStreams());
+
EXPECT_FALSE(config_.DisableConnectionMigration());
+
+ // Let the config process another slightly tweaked transport paramters.
+ // Note that the values for flow control and stream limit cannot be smaller
+ // than before. This rule is enforced in QuicSession::OnConfigNegotiated().
+ params.initial_max_stream_data_bidi_local.set_value(
+ 2 * kMinimumFlowControlSendWindow + 1);
+ params.initial_max_stream_data_bidi_remote.set_value(
+ 4 * kMinimumFlowControlSendWindow);
+ params.initial_max_stream_data_uni.set_value(5 *
+ kMinimumFlowControlSendWindow);
+ params.max_packet_size.set_value(2 * kMaxPacketSizeForTest);
+ params.max_datagram_frame_size.set_value(2 * kMaxDatagramFrameSizeForTest);
+ params.initial_max_streams_bidi.set_value(2 *
+ kDefaultMaxStreamsPerConnection);
+ params.disable_migration = true;
+
+ EXPECT_THAT(
+ config_.ProcessTransportParameters(params, SERVER, &error_details),
+ IsQuicNoError())
+ << error_details;
+
+ ASSERT_TRUE(
+ config_.HasReceivedInitialMaxStreamDataBytesIncomingBidirectional());
+ EXPECT_EQ(2 * kMinimumFlowControlSendWindow + 1,
+ config_.ReceivedInitialMaxStreamDataBytesIncomingBidirectional());
+
+ ASSERT_TRUE(
+ config_.HasReceivedInitialMaxStreamDataBytesOutgoingBidirectional());
+ EXPECT_EQ(4 * kMinimumFlowControlSendWindow,
+ config_.ReceivedInitialMaxStreamDataBytesOutgoingBidirectional());
+
+ ASSERT_TRUE(config_.HasReceivedInitialMaxStreamDataBytesUnidirectional());
+ EXPECT_EQ(5 * kMinimumFlowControlSendWindow,
+ config_.ReceivedInitialMaxStreamDataBytesUnidirectional());
+
+ ASSERT_TRUE(config_.HasReceivedMaxPacketSize());
+ EXPECT_EQ(2 * kMaxPacketSizeForTest, config_.ReceivedMaxPacketSize());
+
+ ASSERT_TRUE(config_.HasReceivedMaxDatagramFrameSize());
+ EXPECT_EQ(2 * kMaxDatagramFrameSizeForTest,
+ config_.ReceivedMaxDatagramFrameSize());
+
+ ASSERT_TRUE(config_.HasReceivedMaxBidirectionalStreams());
+ EXPECT_EQ(2 * kDefaultMaxStreamsPerConnection,
+ config_.ReceivedMaxBidirectionalStreams());
+
+ EXPECT_TRUE(config_.DisableConnectionMigration());
}
TEST_P(QuicConfigTest, DisableMigrationTransportParameter) {