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();