diff --git a/build/source_list.bzl b/build/source_list.bzl
index f8f6e7e..e4bfad3 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -1508,6 +1508,7 @@
     "quic/moqt/moqt_session.h",
     "quic/moqt/moqt_subscribe_windows.h",
     "quic/moqt/moqt_track.h",
+    "quic/moqt/test_tools/moqt_simulator_harness.h",
     "quic/moqt/test_tools/moqt_test_message.h",
     "quic/moqt/tools/moqt_client.h",
     "quic/moqt/tools/moqt_mock_visitor.h",
@@ -1527,6 +1528,7 @@
     "quic/moqt/moqt_subscribe_windows.cc",
     "quic/moqt/moqt_subscribe_windows_test.cc",
     "quic/moqt/moqt_track_test.cc",
+    "quic/moqt/test_tools/moqt_simulator_harness.cc",
     "quic/moqt/tools/chat_client_bin.cc",
     "quic/moqt/tools/moqt_client.cc",
     "quic/moqt/tools/moqt_end_to_end_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni
index f203a7a..60c5103 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -1512,6 +1512,7 @@
     "src/quiche/quic/moqt/moqt_session.h",
     "src/quiche/quic/moqt/moqt_subscribe_windows.h",
     "src/quiche/quic/moqt/moqt_track.h",
+    "src/quiche/quic/moqt/test_tools/moqt_simulator_harness.h",
     "src/quiche/quic/moqt/test_tools/moqt_test_message.h",
     "src/quiche/quic/moqt/tools/moqt_client.h",
     "src/quiche/quic/moqt/tools/moqt_mock_visitor.h",
@@ -1531,6 +1532,7 @@
     "src/quiche/quic/moqt/moqt_subscribe_windows.cc",
     "src/quiche/quic/moqt/moqt_subscribe_windows_test.cc",
     "src/quiche/quic/moqt/moqt_track_test.cc",
+    "src/quiche/quic/moqt/test_tools/moqt_simulator_harness.cc",
     "src/quiche/quic/moqt/tools/chat_client_bin.cc",
     "src/quiche/quic/moqt/tools/moqt_client.cc",
     "src/quiche/quic/moqt/tools/moqt_end_to_end_test.cc",
diff --git a/build/source_list.json b/build/source_list.json
index c5edd4d..b34b8f9 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -1511,6 +1511,7 @@
     "quiche/quic/moqt/moqt_session.h",
     "quiche/quic/moqt/moqt_subscribe_windows.h",
     "quiche/quic/moqt/moqt_track.h",
+    "quiche/quic/moqt/test_tools/moqt_simulator_harness.h",
     "quiche/quic/moqt/test_tools/moqt_test_message.h",
     "quiche/quic/moqt/tools/moqt_client.h",
     "quiche/quic/moqt/tools/moqt_mock_visitor.h",
@@ -1530,6 +1531,7 @@
     "quiche/quic/moqt/moqt_subscribe_windows.cc",
     "quiche/quic/moqt/moqt_subscribe_windows_test.cc",
     "quiche/quic/moqt/moqt_track_test.cc",
+    "quiche/quic/moqt/test_tools/moqt_simulator_harness.cc",
     "quiche/quic/moqt/tools/chat_client_bin.cc",
     "quiche/quic/moqt/tools/moqt_client.cc",
     "quiche/quic/moqt/tools/moqt_end_to_end_test.cc",
diff --git a/quiche/quic/moqt/moqt_integration_test.cc b/quiche/quic/moqt/moqt_integration_test.cc
index 3f71bb4..1e2de16 100644
--- a/quiche/quic/moqt/moqt_integration_test.cc
+++ b/quiche/quic/moqt/moqt_integration_test.cc
@@ -8,18 +8,12 @@
 #include <string>
 
 #include "absl/strings/string_view.h"
-#include "quiche/quic/core/crypto/quic_compressed_certs_cache.h"
-#include "quiche/quic/core/crypto/quic_crypto_client_config.h"
-#include "quiche/quic/core/crypto/quic_crypto_server_config.h"
-#include "quiche/quic/core/crypto/quic_random.h"
-#include "quiche/quic/core/quic_config.h"
 #include "quiche/quic/core/quic_generic_session.h"
-#include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/moqt/moqt_messages.h"
 #include "quiche/quic/moqt/moqt_outgoing_queue.h"
 #include "quiche/quic/moqt/moqt_session.h"
+#include "quiche/quic/moqt/test_tools/moqt_simulator_harness.h"
 #include "quiche/quic/moqt/tools/moqt_mock_visitor.h"
-#include "quiche/quic/test_tools/crypto_test_utils.h"
 #include "quiche/quic/test_tools/quic_test_utils.h"
 #include "quiche/quic/test_tools/simulator/simulator.h"
 #include "quiche/quic/test_tools/simulator/test_harness.h"
@@ -35,87 +29,29 @@
 using ::testing::Assign;
 using ::testing::Return;
 
-class ClientEndpoint : public quic::simulator::QuicEndpointWithConnection {
+class ClientEndpoint : public MoqtClientEndpoint {
  public:
   ClientEndpoint(Simulator* simulator, const std::string& name,
                  const std::string& peer_name, MoqtVersion version)
-      : QuicEndpointWithConnection(simulator, name, peer_name,
-                                   quic::Perspective::IS_CLIENT,
-                                   quic::GetQuicVersionsForGenericSession()),
-        crypto_config_(
-            quic::test::crypto_test_utils::ProofVerifierForTesting()),
-        quic_session_(connection_.get(), false, nullptr, quic::QuicConfig(),
-                      "test.example.com", 443, "moqt", &session_,
-                      /*visitor_owned=*/false, nullptr, &crypto_config_),
-        session_(
-            &quic_session_,
-            MoqtSessionParameters{.version = version,
-                                  .perspective = quic::Perspective::IS_CLIENT,
-                                  .using_webtrans = false,
-                                  .deliver_partial_objects = false},
-            callbacks_.AsSessionCallbacks()) {
-    quic_session_.Initialize();
-  }
-
-  MoqtSession* session() { return &session_; }
-  quic::QuicGenericClientSession* quic_session() { return &quic_session_; }
-  testing::MockFunction<void()>& established_callback() {
-    return callbacks_.session_established_callback;
-  }
-  testing::MockFunction<void(absl::string_view)>& terminated_callback() {
-    return callbacks_.session_terminated_callback;
+      : MoqtClientEndpoint(simulator, name, peer_name, version) {
+    session()->callbacks() = callbacks_.AsSessionCallbacks();
   }
   MockSessionCallbacks& callbacks() { return callbacks_; }
 
  private:
   MockSessionCallbacks callbacks_;
-  quic::QuicCryptoClientConfig crypto_config_;
-  quic::QuicGenericClientSession quic_session_;
-  MoqtSession session_;
 };
-
-class ServerEndpoint : public quic::simulator::QuicEndpointWithConnection {
+class ServerEndpoint : public MoqtServerEndpoint {
  public:
   ServerEndpoint(Simulator* simulator, const std::string& name,
                  const std::string& peer_name, MoqtVersion version)
-      : QuicEndpointWithConnection(simulator, name, peer_name,
-                                   quic::Perspective::IS_SERVER,
-                                   quic::GetQuicVersionsForGenericSession()),
-        compressed_certs_cache_(
-            quic::QuicCompressedCertsCache::kQuicCompressedCertsCacheSize),
-        crypto_config_(quic::QuicCryptoServerConfig::TESTING,
-                       quic::QuicRandom::GetInstance(),
-                       quic::test::crypto_test_utils::ProofSourceForTesting(),
-                       quic::KeyExchangeSource::Default()),
-        quic_session_(connection_.get(), false, nullptr, quic::QuicConfig(),
-                      "moqt", &session_,
-                      /*visitor_owned=*/false, nullptr, &crypto_config_,
-                      &compressed_certs_cache_),
-        session_(
-            &quic_session_,
-            MoqtSessionParameters{.version = version,
-                                  .perspective = quic::Perspective::IS_SERVER,
-                                  .using_webtrans = false,
-                                  .deliver_partial_objects = false},
-            callbacks_.AsSessionCallbacks()) {
-    quic_session_.Initialize();
-  }
-
-  MoqtSession* session() { return &session_; }
-  testing::MockFunction<void()>& established_callback() {
-    return callbacks_.session_established_callback;
-  }
-  testing::MockFunction<void(absl::string_view)>& terminated_callback() {
-    return callbacks_.session_terminated_callback;
+      : MoqtServerEndpoint(simulator, name, peer_name, version) {
+    session()->callbacks() = callbacks_.AsSessionCallbacks();
   }
   MockSessionCallbacks& callbacks() { return callbacks_; }
 
  private:
   MockSessionCallbacks callbacks_;
-  quic::QuicCompressedCertsCache compressed_certs_cache_;
-  quic::QuicCryptoServerConfig crypto_config_;
-  quic::QuicGenericServerSession quic_session_;
-  MoqtSession session_;
 };
 
 class MoqtIntegrationTest : public quiche::test::QuicheTest {
@@ -138,9 +74,9 @@
     client_->quic_session()->CryptoConnect();
     bool client_established = false;
     bool server_established = false;
-    EXPECT_CALL(client_->established_callback(), Call())
+    EXPECT_CALL(client_->callbacks().session_established_callback, Call())
         .WillOnce(Assign(&client_established, true));
-    EXPECT_CALL(server_->established_callback(), Call())
+    EXPECT_CALL(server_->callbacks().session_established_callback, Call())
         .WillOnce(Assign(&server_established, true));
     bool success = test_harness_.RunUntilWithDefaultTimeout(
         [&]() { return client_established && server_established; });
@@ -161,9 +97,9 @@
   client_->quic_session()->CryptoConnect();
   bool client_established = false;
   bool server_established = false;
-  EXPECT_CALL(client_->established_callback(), Call())
+  EXPECT_CALL(client_->callbacks().session_established_callback, Call())
       .WillOnce(Assign(&client_established, true));
-  EXPECT_CALL(server_->established_callback(), Call())
+  EXPECT_CALL(server_->callbacks().session_established_callback, Call())
       .WillOnce(Assign(&server_established, true));
   bool success = test_harness_.RunUntilWithDefaultTimeout(
       [&]() { return client_established && server_established; });
@@ -183,11 +119,13 @@
   client_->quic_session()->CryptoConnect();
   bool client_terminated = false;
   bool server_terminated = false;
-  EXPECT_CALL(client_->established_callback(), Call()).Times(0);
-  EXPECT_CALL(server_->established_callback(), Call()).Times(0);
-  EXPECT_CALL(client_->terminated_callback(), Call(_))
+  EXPECT_CALL(client_->callbacks().session_established_callback, Call())
+      .Times(0);
+  EXPECT_CALL(server_->callbacks().session_established_callback, Call())
+      .Times(0);
+  EXPECT_CALL(client_->callbacks().session_terminated_callback, Call(_))
       .WillOnce(Assign(&client_terminated, true));
-  EXPECT_CALL(server_->terminated_callback(), Call(_))
+  EXPECT_CALL(server_->callbacks().session_terminated_callback, Call(_))
       .WillOnce(Assign(&server_terminated, true));
   bool success = test_harness_.RunUntilWithDefaultTimeout(
       [&]() { return client_terminated && server_terminated; });
diff --git a/quiche/quic/moqt/test_tools/moqt_simulator_harness.cc b/quiche/quic/moqt/test_tools/moqt_simulator_harness.cc
new file mode 100644
index 0000000..20b42ee
--- /dev/null
+++ b/quiche/quic/moqt/test_tools/moqt_simulator_harness.cc
@@ -0,0 +1,73 @@
+// Copyright 2024 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "quiche/quic/moqt/test_tools/moqt_simulator_harness.h"
+
+#include <string>
+#include <utility>
+
+#include "quiche/quic/core/crypto/quic_compressed_certs_cache.h"
+#include "quiche/quic/core/crypto/quic_crypto_server_config.h"
+#include "quiche/quic/core/crypto/quic_random.h"
+#include "quiche/quic/core/quic_generic_session.h"
+#include "quiche/quic/core/quic_types.h"
+#include "quiche/quic/moqt/moqt_messages.h"
+#include "quiche/quic/moqt/moqt_session.h"
+#include "quiche/quic/test_tools/crypto_test_utils.h"
+#include "quiche/quic/test_tools/simulator/simulator.h"
+#include "quiche/quic/test_tools/simulator/test_harness.h"
+
+namespace moqt::test {
+
+MoqtClientEndpoint::MoqtClientEndpoint(quic::simulator::Simulator* simulator,
+                                       const std::string& name,
+                                       const std::string& peer_name,
+                                       MoqtVersion version)
+    : QuicEndpointWithConnection(simulator, name, peer_name,
+                                 quic::Perspective::IS_CLIENT,
+                                 quic::GetQuicVersionsForGenericSession()),
+      crypto_config_(quic::test::crypto_test_utils::ProofVerifierForTesting()),
+      quic_session_(connection_.get(), false, nullptr, quic::QuicConfig(),
+                    "test.example.com", 443, "moqt", &session_,
+                    /*visitor_owned=*/false, nullptr, &crypto_config_),
+      session_(
+          &quic_session_,
+          MoqtSessionParameters{.version = version,
+                                .perspective = quic::Perspective::IS_CLIENT,
+                                .using_webtrans = false,
+                                .path = "",
+                                .deliver_partial_objects = false},
+          MoqtSessionCallbacks()) {
+  quic_session_.Initialize();
+}
+
+MoqtServerEndpoint::MoqtServerEndpoint(quic::simulator::Simulator* simulator,
+                                       const std::string& name,
+                                       const std::string& peer_name,
+                                       MoqtVersion version)
+    : QuicEndpointWithConnection(simulator, name, peer_name,
+                                 quic::Perspective::IS_SERVER,
+                                 quic::GetQuicVersionsForGenericSession()),
+      compressed_certs_cache_(
+          quic::QuicCompressedCertsCache::kQuicCompressedCertsCacheSize),
+      crypto_config_(quic::QuicCryptoServerConfig::TESTING,
+                     quic::QuicRandom::GetInstance(),
+                     quic::test::crypto_test_utils::ProofSourceForTesting(),
+                     quic::KeyExchangeSource::Default()),
+      quic_session_(connection_.get(), false, nullptr, quic::QuicConfig(),
+                    "moqt", &session_,
+                    /*visitor_owned=*/false, nullptr, &crypto_config_,
+                    &compressed_certs_cache_),
+      session_(
+          &quic_session_,
+          MoqtSessionParameters{.version = version,
+                                .perspective = quic::Perspective::IS_SERVER,
+                                .using_webtrans = false,
+                                .path = "",
+                                .deliver_partial_objects = false},
+          MoqtSessionCallbacks()) {
+  quic_session_.Initialize();
+}
+
+}  // namespace moqt::test
diff --git a/quiche/quic/moqt/test_tools/moqt_simulator_harness.h b/quiche/quic/moqt/test_tools/moqt_simulator_harness.h
new file mode 100644
index 0000000..9b84bb8
--- /dev/null
+++ b/quiche/quic/moqt/test_tools/moqt_simulator_harness.h
@@ -0,0 +1,56 @@
+// Copyright 2024 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef QUICHE_QUIC_MOQT_TEST_TOOLS_MOQT_SIMULATOR_HARNESS_H_
+#define QUICHE_QUIC_MOQT_TEST_TOOLS_MOQT_SIMULATOR_HARNESS_H_
+
+#include <string>
+
+#include "quiche/quic/core/crypto/quic_compressed_certs_cache.h"
+#include "quiche/quic/core/crypto/quic_crypto_client_config.h"
+#include "quiche/quic/core/crypto/quic_crypto_server_config.h"
+#include "quiche/quic/core/quic_generic_session.h"
+#include "quiche/quic/moqt/moqt_messages.h"
+#include "quiche/quic/moqt/moqt_session.h"
+#include "quiche/quic/test_tools/simulator/simulator.h"
+#include "quiche/quic/test_tools/simulator/test_harness.h"
+
+namespace moqt::test {
+
+// Places a MoQT-over-raw-QUIC client within a network simulation.
+class MoqtClientEndpoint : public quic::simulator::QuicEndpointWithConnection {
+ public:
+  MoqtClientEndpoint(quic::simulator::Simulator* simulator,
+                     const std::string& name, const std::string& peer_name,
+                     MoqtVersion version);
+
+  MoqtSession* session() { return &session_; }
+  quic::QuicGenericClientSession* quic_session() { return &quic_session_; }
+
+ private:
+  quic::QuicCryptoClientConfig crypto_config_;
+  quic::QuicGenericClientSession quic_session_;
+  MoqtSession session_;
+};
+
+// Places a MoQT-over-raw-QUIC server within a network simulation.
+class MoqtServerEndpoint : public quic::simulator::QuicEndpointWithConnection {
+ public:
+  MoqtServerEndpoint(quic::simulator::Simulator* simulator,
+                     const std::string& name, const std::string& peer_name,
+                     MoqtVersion version);
+
+  MoqtSession* session() { return &session_; }
+  quic::QuicGenericServerSession* quic_session() { return &quic_session_; }
+
+ private:
+  quic::QuicCompressedCertsCache compressed_certs_cache_;
+  quic::QuicCryptoServerConfig crypto_config_;
+  quic::QuicGenericServerSession quic_session_;
+  MoqtSession session_;
+};
+
+}  // namespace moqt::test
+
+#endif  // QUICHE_QUIC_MOQT_TEST_TOOLS_MOQT_SIMULATOR_HARNESS_H_
