Use client-supplied path instead of external configuration to switch between ECHO and DISCARD mode in QuicTransportSimpleServer

gfe-relnote: n/a (not used in production)
PiperOrigin-RevId: 284186862
Change-Id: Iaed82071af43f509c3d8104b143f2ff9f76efdb1
diff --git a/quic/quic_transport/quic_transport_integration_test.cc b/quic/quic_transport/quic_transport_integration_test.cc
index 57f5380..b8d8eae 100644
--- a/quic/quic_transport/quic_transport_integration_test.cc
+++ b/quic/quic_transport/quic_transport_integration_test.cc
@@ -70,7 +70,8 @@
   QuicTransportClientEndpoint(Simulator* simulator,
                               const std::string& name,
                               const std::string& peer_name,
-                              url::Origin origin)
+                              url::Origin origin,
+                              const std::string& path)
       : QuicTransportEndpointBase(simulator,
                                   name,
                                   peer_name,
@@ -80,7 +81,7 @@
                  nullptr,
                  DefaultQuicConfig(),
                  GetVersions(),
-                 GURL("quic-transport://test.example.com:50000"),
+                 GURL("quic-transport://test.example.com:50000" + path),
                  &crypto_config_,
                  origin,
                  &visitor_) {
@@ -101,7 +102,6 @@
   QuicTransportServerEndpoint(Simulator* simulator,
                               const std::string& name,
                               const std::string& peer_name,
-                              QuicTransportSimpleServerSession::Mode mode,
                               std::vector<url::Origin> accepted_origins)
       : QuicTransportEndpointBase(simulator,
                                   name,
@@ -120,7 +120,6 @@
                  GetVersions(),
                  &crypto_config_,
                  &compressed_certs_cache_,
-                 mode,
                  accepted_origins) {
     session_.Initialize();
   }
@@ -161,11 +160,11 @@
   QuicTransportIntegrationTest()
       : switch_(&simulator_, "Switch", 8, 2 * kBdp) {}
 
-  void CreateDefaultEndpoints(QuicTransportSimpleServerSession::Mode mode) {
+  void CreateDefaultEndpoints(const std::string& path) {
     client_ = std::make_unique<QuicTransportClientEndpoint>(
-        &simulator_, "Client", "Server", GetTestOrigin());
+        &simulator_, "Client", "Server", GetTestOrigin(), path);
     server_ = std::make_unique<QuicTransportServerEndpoint>(
-        &simulator_, "Server", "Client", mode, accepted_origins_);
+        &simulator_, "Server", "Client", accepted_origins_);
   }
 
   void WireUpEndpoints() {
@@ -206,7 +205,7 @@
 };
 
 TEST_F(QuicTransportIntegrationTest, SuccessfulHandshake) {
-  CreateDefaultEndpoints(QuicTransportSimpleServerSession::DISCARD);
+  CreateDefaultEndpoints("/discard");
   WireUpEndpoints();
   RunHandshake();
   EXPECT_TRUE(client_->session()->IsSessionReady());
@@ -215,7 +214,7 @@
 
 TEST_F(QuicTransportIntegrationTest, OriginMismatch) {
   accepted_origins_ = {url::Origin::Create(GURL{"https://wrong-origin.test"})};
-  CreateDefaultEndpoints(QuicTransportSimpleServerSession::DISCARD);
+  CreateDefaultEndpoints("/discard");
   WireUpEndpoints();
   RunHandshake();
   // Wait until the client receives CONNECTION_CLOSE.
@@ -233,7 +232,7 @@
 }
 
 TEST_F(QuicTransportIntegrationTest, SendOutgoingStreams) {
-  CreateDefaultEndpoints(QuicTransportSimpleServerSession::DISCARD);
+  CreateDefaultEndpoints("/discard");
   WireUpEndpoints();
   RunHandshake();
 
@@ -259,7 +258,7 @@
 }
 
 TEST_F(QuicTransportIntegrationTest, EchoBidirectionalStreams) {
-  CreateDefaultEndpoints(QuicTransportSimpleServerSession::ECHO);
+  CreateDefaultEndpoints("/echo");
   WireUpEndpoints();
   RunHandshake();
 
@@ -281,7 +280,7 @@
 }
 
 TEST_F(QuicTransportIntegrationTest, EchoUnidirectionalStreams) {
-  CreateDefaultEndpoints(QuicTransportSimpleServerSession::ECHO);
+  CreateDefaultEndpoints("/echo");
   WireUpEndpoints();
   RunHandshake();
 
diff --git a/quic/tools/quic_transport_simple_server_dispatcher.cc b/quic/tools/quic_transport_simple_server_dispatcher.cc
index 9b1ea04..2302b67 100644
--- a/quic/tools/quic_transport_simple_server_dispatcher.cc
+++ b/quic/tools/quic_transport_simple_server_dispatcher.cc
@@ -22,7 +22,6 @@
     std::unique_ptr<QuicCryptoServerStream::Helper> session_helper,
     std::unique_ptr<QuicAlarmFactory> alarm_factory,
     uint8_t expected_server_connection_id_length,
-    QuicTransportSimpleServerSession::Mode mode,
     std::vector<url::Origin> accepted_origins)
     : QuicDispatcher(config,
                      crypto_config,
@@ -31,7 +30,6 @@
                      std::move(session_helper),
                      std::move(alarm_factory),
                      expected_server_connection_id_length),
-      mode_(mode),
       accepted_origins_(accepted_origins) {}
 
 QuicSession* QuicTransportSimpleServerDispatcher::CreateQuicSession(
@@ -47,7 +45,7 @@
       new QuicTransportSimpleServerSession(
           connection.release(), /*owns_connection=*/true, this, config(),
           GetSupportedVersions(), crypto_config(), compressed_certs_cache(),
-          mode_, accepted_origins_);
+          accepted_origins_);
   session->Initialize();
   return session;
 }
diff --git a/quic/tools/quic_transport_simple_server_dispatcher.h b/quic/tools/quic_transport_simple_server_dispatcher.h
index ea4eb8b..f3e1b47 100644
--- a/quic/tools/quic_transport_simple_server_dispatcher.h
+++ b/quic/tools/quic_transport_simple_server_dispatcher.h
@@ -23,7 +23,6 @@
       std::unique_ptr<QuicCryptoServerStream::Helper> session_helper,
       std::unique_ptr<QuicAlarmFactory> alarm_factory,
       uint8_t expected_server_connection_id_length,
-      QuicTransportSimpleServerSession::Mode mode,
       std::vector<url::Origin> accepted_origins);
 
  protected:
@@ -32,7 +31,6 @@
                                  QuicStringPiece alpn,
                                  const ParsedQuicVersion& version) override;
 
-  QuicTransportSimpleServerSession::Mode mode_;
   std::vector<url::Origin> accepted_origins_;
 };
 
diff --git a/quic/tools/quic_transport_simple_server_session.cc b/quic/tools/quic_transport_simple_server_session.cc
index 40e5af3..9a0a667 100644
--- a/quic/tools/quic_transport_simple_server_session.cc
+++ b/quic/tools/quic_transport_simple_server_session.cc
@@ -133,7 +133,6 @@
     const ParsedQuicVersionVector& supported_versions,
     const QuicCryptoServerConfig* crypto_config,
     QuicCompressedCertsCache* compressed_certs_cache,
-    Mode mode,
     std::vector<url::Origin> accepted_origins)
     : QuicTransportServerSession(connection,
                                  owner,
@@ -144,7 +143,7 @@
                                  this),
       connection_(connection),
       owns_connection_(owns_connection),
-      mode_(mode),
+      mode_(DISCARD),
       accepted_origins_(accepted_origins) {}
 
 QuicTransportSimpleServerSession::~QuicTransportSimpleServerSession() {
@@ -203,8 +202,17 @@
 }
 
 bool QuicTransportSimpleServerSession::ProcessPath(const GURL& url) {
-  QUIC_DLOG(INFO) << "Path requested: " << url;
-  return true;
+  if (url.path() == "/discard") {
+    mode_ = DISCARD;
+    return true;
+  }
+  if (url.path() == "/echo") {
+    mode_ = ECHO;
+    return true;
+  }
+
+  QUIC_DLOG(WARNING) << "Unknown path requested: " << url.path();
+  return false;
 }
 
 void QuicTransportSimpleServerSession::MaybeEchoStreamsBack() {
diff --git a/quic/tools/quic_transport_simple_server_session.h b/quic/tools/quic_transport_simple_server_session.h
index 5857930..aadcdf7 100644
--- a/quic/tools/quic_transport_simple_server_session.h
+++ b/quic/tools/quic_transport_simple_server_session.h
@@ -45,7 +45,6 @@
       const ParsedQuicVersionVector& supported_versions,
       const QuicCryptoServerConfig* crypto_config,
       QuicCompressedCertsCache* compressed_certs_cache,
-      Mode mode,
       std::vector<url::Origin> accepted_origins);
   ~QuicTransportSimpleServerSession();