diff --git a/quic/tools/quic_epoll_client_factory.cc b/quic/tools/quic_epoll_client_factory.cc
index 8483038..1fff089 100644
--- a/quic/tools/quic_epoll_client_factory.cc
+++ b/quic/tools/quic_epoll_client_factory.cc
@@ -24,7 +24,8 @@
     uint16_t port,
     ParsedQuicVersionVector versions,
     const QuicConfig& config,
-    std::unique_ptr<ProofVerifier> verifier) {
+    std::unique_ptr<ProofVerifier> verifier,
+    std::unique_ptr<SessionCache> session_cache) {
   QuicSocketAddress addr = tools::LookupAddress(
       address_family_for_lookup, host_for_lookup, absl::StrCat(port));
   if (!addr.IsInitialized()) {
@@ -34,7 +35,7 @@
   QuicServerId server_id(host_for_handshake, port, false);
   return std::make_unique<QuicClient>(addr, server_id, versions, config,
                                       &epoll_server_, std::move(verifier),
-                                      nullptr);
+                                      std::move(session_cache));
 }
 
 }  // namespace quic
diff --git a/quic/tools/quic_epoll_client_factory.h b/quic/tools/quic_epoll_client_factory.h
index e23eb63..9e78b47 100644
--- a/quic/tools/quic_epoll_client_factory.h
+++ b/quic/tools/quic_epoll_client_factory.h
@@ -20,7 +20,8 @@
       uint16_t port,
       ParsedQuicVersionVector versions,
       const QuicConfig& config,
-      std::unique_ptr<ProofVerifier> verifier) override;
+      std::unique_ptr<ProofVerifier> verifier,
+      std::unique_ptr<SessionCache> session_cache) override;
 
  private:
   QuicEpollServer epoll_server_;
diff --git a/quic/tools/quic_toy_client.cc b/quic/tools/quic_toy_client.cc
index 2ba9d5d..8d22791 100644
--- a/quic/tools/quic_toy_client.cc
+++ b/quic/tools/quic_toy_client.cc
@@ -59,6 +59,7 @@
 #include "quic/platform/api/quic_ip_address.h"
 #include "quic/platform/api/quic_socket_address.h"
 #include "quic/platform/api/quic_system_event_loop.h"
+#include "quic/test_tools/simple_session_cache.h"
 #include "quic/tools/fake_proof_verifier.h"
 #include "quic/tools/quic_url.h"
 #include "common/quiche_text_utils.h"
@@ -194,6 +195,12 @@
     false,
     "If true, do not change local port after each request.");
 
+DEFINE_QUIC_COMMAND_LINE_FLAG(bool,
+                              one_connection_per_request,
+                              false,
+                              "If true, close the connection after each "
+                              "request. This allows testing 0-RTT.");
+
 DEFINE_QUIC_COMMAND_LINE_FLAG(int32_t,
                               server_connection_id_length,
                               -1,
@@ -260,6 +267,10 @@
   } else {
     proof_verifier = quic::CreateDefaultProofVerifier(url.host());
   }
+  std::unique_ptr<quic::SessionCache> session_cache;
+  if (num_requests > 1 && GetQuicFlag(FLAGS_one_connection_per_request)) {
+    session_cache = std::make_unique<test::SimpleSessionCache>();
+  }
 
   QuicConfig config;
   std::string connection_options_string = GetQuicFlag(FLAGS_connection_options);
@@ -293,7 +304,7 @@
   // Build the client, and try to connect.
   std::unique_ptr<QuicSpdyClientBase> client = client_factory_->CreateClient(
       url.host(), host, address_family_for_lookup, port, versions, config,
-      std::move(proof_verifier));
+      std::move(proof_verifier), std::move(session_cache));
 
   if (client == nullptr) {
     std::cerr << "Failed to create client." << std::endl;
@@ -430,11 +441,26 @@
       return 1;
     }
 
-    // Change the ephemeral port if there are more requests to do.
-    if (!GetQuicFlag(FLAGS_disable_port_changes) && i + 1 < num_requests) {
-      if (!client->ChangeEphemeralPort()) {
-        std::cerr << "Failed to change ephemeral port." << std::endl;
-        return 1;
+    if (i + 1 < num_requests) {  // There are more requests to perform.
+      if (GetQuicFlag(FLAGS_one_connection_per_request)) {
+        std::cout << "Disconnecting client between requests." << std::endl;
+        client->Disconnect();
+        if (!client->Initialize()) {
+          std::cerr << "Failed to reinitialize client between requests."
+                    << std::endl;
+          return 1;
+        }
+        if (!client->Connect()) {
+          std::cerr << "Failed to reconnect client between requests."
+                    << std::endl;
+          return 1;
+        }
+      } else if (!GetQuicFlag(FLAGS_disable_port_changes)) {
+        // Change the ephemeral port.
+        if (!client->ChangeEphemeralPort()) {
+          std::cerr << "Failed to change ephemeral port." << std::endl;
+          return 1;
+        }
       }
     }
   }
diff --git a/quic/tools/quic_toy_client.h b/quic/tools/quic_toy_client.h
index 085e749..81b3733 100644
--- a/quic/tools/quic_toy_client.h
+++ b/quic/tools/quic_toy_client.h
@@ -29,7 +29,8 @@
         uint16_t port,
         ParsedQuicVersionVector versions,
         const QuicConfig& config,
-        std::unique_ptr<ProofVerifier> verifier) = 0;
+        std::unique_ptr<ProofVerifier> verifier,
+        std::unique_ptr<SessionCache> session_cache) = 0;
   };
 
   // Constructs a new toy client that will use |client_factory| to create the
