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) {
