Add end to end QUIC test for server padding extension Add an end to end tests for QUIC connections through the GFE for server padding. PiperOrigin-RevId: 927452792
diff --git a/quiche/quic/core/http/end_to_end_test.cc b/quiche/quic/core/http/end_to_end_test.cc index 33ba639..9a949bb 100644 --- a/quiche/quic/core/http/end_to_end_test.cc +++ b/quiche/quic/core/http/end_to_end_test.cc
@@ -60,6 +60,7 @@ #include "quiche/quic/core/quic_connection_id.h" #include "quiche/quic/core/quic_connection_stats.h" #include "quiche/quic/core/quic_constants.h" +#include "quiche/quic/core/quic_crypto_client_stream.h" #include "quiche/quic/core/quic_default_clock.h" #include "quiche/quic/core/quic_dispatcher.h" #include "quiche/quic/core/quic_dispatcher_stats.h" @@ -9020,6 +9021,79 @@ client_->Disconnect(); } +TEST_P(EndToEndTest, ServerPaddingRequestedServerDisabled) { + if (!version_.IsIetfQuic()) { + ASSERT_TRUE(Initialize()); + return; + } + + SetQuicRestartFlag(tls_server_padding_support, false); + connect_to_server_on_initialize_ = false; + ASSERT_TRUE(Initialize()); + + client_.reset(CreateQuicClient(client_writer_, /*connect=*/false)); + client_->client()->Initialize(); + + client_->client()->crypto_config()->ssl_config().server_padding_to_request = + 128; + + client_->Connect(); + ASSERT_TRUE(client_->client()->connected()); + SendSynchronousFooRequestAndCheckResponse(); + + const QuicCryptoClientStream* client_crypto_stream = + static_cast<const QuicCryptoClientStream*>( + GetClientSession()->GetCryptoStream()); + EXPECT_FALSE(client_crypto_stream->ServerPaddingSentForTesting()); + + client_->Disconnect(); +} + +TEST_P(EndToEndTest, ServerPaddingRequestedServerEnabled) { + if (!version_.IsIetfQuic()) { + ASSERT_TRUE(Initialize()); + return; + } + + SetQuicRestartFlag(tls_server_padding_support, true); + connect_to_server_on_initialize_ = false; + ASSERT_TRUE(Initialize()); + + client_.reset(CreateQuicClient(client_writer_, /*connect=*/false)); + client_->client()->Initialize(); + + client_->client()->crypto_config()->ssl_config().server_padding_to_request = + 128; + + client_->Connect(); + ASSERT_TRUE(client_->client()->connected()); + SendSynchronousFooRequestAndCheckResponse(); + + const QuicCryptoClientStream* client_crypto_stream = + static_cast<const QuicCryptoClientStream*>( + GetClientSession()->GetCryptoStream()); + EXPECT_TRUE(client_crypto_stream->ServerPaddingSentForTesting()); + + client_->Disconnect(); +} + +TEST_P(EndToEndTest, ServerPaddingNotRequestedServerEnabled) { + SetQuicRestartFlag(tls_server_padding_support, true); + ASSERT_TRUE(Initialize()); + if (!version_.IsIetfQuic()) { + return; + } + + SendSynchronousFooRequestAndCheckResponse(); + + const QuicCryptoClientStream* client_crypto_stream = + static_cast<const QuicCryptoClientStream*>( + GetClientSession()->GetCryptoStream()); + EXPECT_FALSE(client_crypto_stream->ServerPaddingSentForTesting()); + + client_->Disconnect(); +} + TEST_P(EndToEndTest, SpinBitEnableSafety) { SetQuicReloadableFlag(quic_enable_spin_bit, true);