gfe-relnote: Use QPACK Dynamic Table in the toy client and server, but not in the test client and server. Protected by disabled --v99 flag.
PiperOrigin-RevId: 275026885
Change-Id: I9d051f4b377992a03e974c6f4f57e9fee6970c63
diff --git a/quic/test_tools/quic_test_client.cc b/quic/test_tools/quic_test_client.cc
index 3531318..237d9f6 100644
--- a/quic/test_tools/quic_test_client.cc
+++ b/quic/test_tools/quic_test_client.cc
@@ -347,6 +347,10 @@
num_requests_ = 0;
num_responses_ = 0;
ClearPerConnectionState();
+ // TODO(b/142715651): Figure out how to use QPACK in tests.
+ // Do not use the QPACK dynamic table in tests to avoid flakiness due to the
+ // uncertain order of receiving the SETTINGS frame and sending headers.
+ client_->disable_qpack_dynamic_table();
// As chrome will generally do this, we want it to be the default when it's
// not overridden.
if (!client_->config()->HasSetBytesForConnectionIdToSend()) {
diff --git a/quic/test_tools/quic_test_server.cc b/quic/test_tools/quic_test_server.cc
index 26e50a8..a893830 100644
--- a/quic/test_tools/quic_test_server.cc
+++ b/quic/test_tools/quic_test_server.cc
@@ -118,6 +118,11 @@
config(), connection, this, session_helper(), crypto_config(),
compressed_certs_cache(), server_backend());
}
+ // TODO(b/142715651): Figure out how to use QPACK in tests.
+ // Do not use the QPACK dynamic table in tests to avoid flakiness due to the
+ // uncertain order of receiving the SETTINGS frame and sending headers.
+ session->set_qpack_maximum_dynamic_table_capacity(0);
+ session->set_qpack_maximum_blocked_streams(0);
session->Initialize();
return session;
}
diff --git a/quic/tools/quic_simple_client_session.cc b/quic/tools/quic_simple_client_session.cc
index c62786f..38ff4fc 100644
--- a/quic/tools/quic_simple_client_session.cc
+++ b/quic/tools/quic_simple_client_session.cc
@@ -22,12 +22,7 @@
server_id,
crypto_config,
push_promise_index),
- drop_response_body_(drop_response_body) {
- // Do not use the QPACK dynamic table in tests to avoid flakiness due to the
- // uncertain order of receiving the SETTINGS frame and sending headers.
- set_qpack_maximum_dynamic_table_capacity(0);
- set_qpack_maximum_blocked_streams(0);
-}
+ drop_response_body_(drop_response_body) {}
std::unique_ptr<QuicSpdyClientStream>
QuicSimpleClientSession::CreateClientStream() {
diff --git a/quic/tools/quic_simple_server_session.cc b/quic/tools/quic_simple_server_session.cc
index b2ee913..c60a9e2 100644
--- a/quic/tools/quic_simple_server_session.cc
+++ b/quic/tools/quic_simple_server_session.cc
@@ -36,11 +36,6 @@
QuicUtils::GetInvalidStreamId(connection->transport_version())),
quic_simple_server_backend_(quic_simple_server_backend) {
DCHECK(quic_simple_server_backend_);
-
- // Do not use the QPACK dynamic table in tests to avoid flakiness due to the
- // uncertain order of receiving the SETTINGS frame and sending headers.
- set_qpack_maximum_dynamic_table_capacity(0);
- set_qpack_maximum_blocked_streams(0);
}
QuicSimpleServerSession::~QuicSimpleServerSession() {
diff --git a/quic/tools/quic_spdy_client_base.cc b/quic/tools/quic_spdy_client_base.cc
index ab1542d..3cd4cbd 100644
--- a/quic/tools/quic_spdy_client_base.cc
+++ b/quic/tools/quic_spdy_client_base.cc
@@ -47,7 +47,8 @@
std::move(proof_verifier)),
store_response_(false),
latest_response_code_(-1),
- max_allowed_push_id_(0) {}
+ max_allowed_push_id_(0),
+ disable_qpack_dynamic_table_(false) {}
QuicSpdyClientBase::~QuicSpdyClientBase() {
// We own the push promise index. We need to explicitly kill
@@ -60,6 +61,10 @@
}
void QuicSpdyClientBase::InitializeSession() {
+ if (disable_qpack_dynamic_table_) {
+ client_session()->set_qpack_maximum_dynamic_table_capacity(0);
+ client_session()->set_qpack_maximum_blocked_streams(0);
+ }
client_session()->Initialize();
client_session()->CryptoConnect();
if (max_allowed_push_id_ > 0) {
diff --git a/quic/tools/quic_spdy_client_base.h b/quic/tools/quic_spdy_client_base.h
index 3107d60..2a1267f 100644
--- a/quic/tools/quic_spdy_client_base.h
+++ b/quic/tools/quic_spdy_client_base.h
@@ -139,6 +139,10 @@
// Set the max promise id for the client session.
void SetMaxAllowedPushId(QuicStreamId max) { max_allowed_push_id_ = max; }
+ // Disables the use of the QPACK dynamic table and of blocked streams.
+ // Must be called before InitializeSession().
+ void disable_qpack_dynamic_table() { disable_qpack_dynamic_table_ = true; }
+
protected:
int GetNumSentClientHellosFromSession() override;
int GetNumReceivedServerConfigUpdatesFromSession() override;
@@ -215,6 +219,8 @@
// The max promise id to set on the client session when created.
QuicStreamId max_allowed_push_id_;
+
+ bool disable_qpack_dynamic_table_;
};
} // namespace quic
diff --git a/quic/tools/quic_toy_client.cc b/quic/tools/quic_toy_client.cc
index a9a3886..eee4e61 100644
--- a/quic/tools/quic_toy_client.cc
+++ b/quic/tools/quic_toy_client.cc
@@ -237,6 +237,10 @@
std::cerr << "Failed to initialize client." << std::endl;
return 1;
}
+ client->client_session()->set_qpack_maximum_dynamic_table_capacity(
+ kDefaultQpackMaxDynamicTableCapacity);
+ client->client_session()->set_qpack_maximum_blocked_streams(
+ kDefaultMaximumBlockedStreams);
if (!client->Connect()) {
quic::QuicErrorCode error = client->session()->error();
if (error == quic::QUIC_INVALID_VERSION) {