diff --git a/quic/core/quic_dispatcher_test.cc b/quic/core/quic_dispatcher_test.cc
index b8cc470..b3f13d9 100644
--- a/quic/core/quic_dispatcher_test.cc
+++ b/quic/core/quic_dispatcher_test.cc
@@ -132,17 +132,6 @@
   MOCK_METHOD1(ShouldCreateOrBufferPacketForConnection,
                bool(const ReceivedPacketInfo& packet_info));
 
-  QuicConnectionId GenerateNewServerConnectionId(
-      ParsedQuicVersion /*version*/,
-      QuicConnectionId connection_id) const override {
-    if (!GetQuicRestartFlag(quic_deterministic_replacement_connection_ids)) {
-      return QuicUtils::CreateRandomConnectionId(random_);
-    }
-    // TODO(dschinazi) Remove this override entirely when
-    // quic_deterministic_replacement_connection_ids is deprecated.
-    return QuicUtils::CreateReplacementConnectionId(connection_id);
-  }
-
   struct TestQuicPerPacketContext : public QuicPerPacketContext {
     std::string custom_packet_context;
   };
@@ -760,14 +749,8 @@
   QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1);
 
   QuicConnectionId bad_connection_id = TestConnectionIdNineBytesLong(2);
-  QuicConnectionId fixed_connection_id;
-  if (!GetQuicRestartFlag(quic_deterministic_replacement_connection_ids)) {
-    fixed_connection_id =
-        QuicUtils::CreateRandomConnectionId(mock_helper_.GetRandomGenerator());
-  } else {
-    fixed_connection_id =
-        QuicUtils::CreateReplacementConnectionId(bad_connection_id);
-  }
+  QuicConnectionId fixed_connection_id =
+      QuicUtils::CreateReplacementConnectionId(bad_connection_id);
 
   EXPECT_CALL(*dispatcher_,
               CreateQuicSession(fixed_connection_id, client_address,
@@ -799,14 +782,8 @@
   QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1);
 
   QuicConnectionId bad_connection_id = EmptyQuicConnectionId();
-  QuicConnectionId fixed_connection_id;
-  if (!GetQuicRestartFlag(quic_deterministic_replacement_connection_ids)) {
-    fixed_connection_id =
-        QuicUtils::CreateRandomConnectionId(mock_helper_.GetRandomGenerator());
-  } else {
-    fixed_connection_id =
-        QuicUtils::CreateReplacementConnectionId(bad_connection_id);
-  }
+  QuicConnectionId fixed_connection_id =
+      QuicUtils::CreateReplacementConnectionId(bad_connection_id);
 
   // Disable validation of invalid short connection IDs.
   dispatcher_->SetAllowShortInitialServerConnectionIds(true);
@@ -842,14 +819,8 @@
 
   QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1);
   QuicConnectionId bad_connection_id = TestConnectionIdNineBytesLong(2);
-  QuicConnectionId fixed_connection_id;
-  if (!GetQuicRestartFlag(quic_deterministic_replacement_connection_ids)) {
-    fixed_connection_id =
-        QuicUtils::CreateRandomConnectionId(mock_helper_.GetRandomGenerator());
-  } else {
-    fixed_connection_id =
-        QuicUtils::CreateReplacementConnectionId(bad_connection_id);
-  }
+  QuicConnectionId fixed_connection_id =
+      QuicUtils::CreateReplacementConnectionId(bad_connection_id);
 
   EXPECT_CALL(*dispatcher_,
               CreateQuicSession(TestConnectionId(1), client_address,
