Allow QUIC end_to_end and quic_server tests to pass if the listening port is specified as 0 to allow Chrome tests to use 0 instead of attempting to find an unused port (which is hard). Also rename QuicPickUnusedPortOrDie to QuicPickServerPortForTestsOrDie gfe-relnote: n/a - Test only PiperOrigin-RevId: 265545371 Change-Id: Iab88b60f6348c8e249c6420d895c9775b7f8405c
diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc index 6eb6ac6..89cf9ca 100644 --- a/quic/core/http/end_to_end_test.cc +++ b/quic/core/http/end_to_end_test.cc
@@ -225,8 +225,8 @@ EndToEndTest() : initialized_(false), connect_to_server_on_initialize_(true), - server_address_( - QuicSocketAddress(TestLoopback(), QuicPickUnusedPortOrDie())), + server_address_(QuicSocketAddress(TestLoopback(), + QuicPickServerPortForTestsOrDie())), server_hostname_("test.example.com"), client_writer_(nullptr), server_writer_(nullptr), @@ -416,6 +416,8 @@ server_thread_->server()->SetPreSharedKey(pre_shared_key_server_); } server_thread_->Initialize(); + server_address_ = + QuicSocketAddress(server_address_.host(), server_thread_->GetPort()); QuicDispatcher* dispatcher = QuicServerPeer::GetDispatcher(server_thread_->server()); QuicDispatcherPeer::UseWriter(dispatcher, server_writer_);
diff --git a/quic/platform/api/quic_port_utils.h b/quic/platform/api/quic_port_utils.h index aa85fc5..685be0a 100644 --- a/quic/platform/api/quic_port_utils.h +++ b/quic/platform/api/quic_port_utils.h
@@ -10,13 +10,14 @@ namespace quic { // Returns a UDP port that is currently unused. Check-fails if none are -// available. -inline int QuicPickUnusedPortOrDie() { - return QuicPickUnusedPortOrDieImpl(); +// available. May return 0 in which case the bind() call will cause the OS +// to use an unused port. +inline int QuicPickServerPortForTestsOrDie() { + return QuicPickServerPortForTestsOrDieImpl(); } // Indicates that a specified port previously returned by -// QuicPickUnusedPortOrDie is no longer used. +// QuicPickServerPortForTestsOrDie is no longer used. inline void QuicRecyclePort(int port) { return QuicRecyclePortImpl(port); }
diff --git a/quic/qbone/qbone_client_test.cc b/quic/qbone/qbone_client_test.cc index 78e533c..2902b19 100644 --- a/quic/qbone/qbone_client_test.cc +++ b/quic/qbone/qbone_client_test.cc
@@ -208,7 +208,8 @@ TEST(QboneClientTest, SendDataFromClient) { SetQuicReloadableFlag(quic_use_parse_public_header, true); auto server = new QboneTestServer(crypto_test_utils::ProofSourceForTesting()); - QuicSocketAddress server_address(TestLoopback(), QuicPickUnusedPortOrDie()); + QuicSocketAddress server_address(TestLoopback(), + QuicPickServerPortForTestsOrDie()); ServerThread server_thread(server, server_address); server_thread.Initialize(); server_thread.Start();
diff --git a/quic/qbone/qbone_session_test.cc b/quic/qbone/qbone_session_test.cc index 80bf08f..be598a9 100644 --- a/quic/qbone/qbone_session_test.cc +++ b/quic/qbone/qbone_session_test.cc
@@ -251,7 +251,8 @@ QuicMakeUnique<DataSavingQboneControlHandler<QboneClientRequest>>(); server_handler_ = QuicMakeUnique<DataSavingQboneControlHandler<QboneServerRequest>>(); - QuicSocketAddress server_address(TestLoopback(), QuicPickUnusedPortOrDie()); + QuicSocketAddress server_address(TestLoopback(), + QuicPickServerPortForTestsOrDie()); QuicSocketAddress client_address; if (server_address.host().address_family() == IpAddressFamily::IP_V4) { client_address = QuicSocketAddress(QuicIpAddress::Any4(), 0);
diff --git a/quic/tools/quic_client_test.cc b/quic/tools/quic_client_test.cc index 134119b..e2d7f14 100644 --- a/quic/tools/quic_client_test.cc +++ b/quic/tools/quic_client_test.cc
@@ -65,7 +65,7 @@ // Creates a new QuicClient and Initializes it on an unused port. // Caller is responsible for deletion. std::unique_ptr<QuicClient> CreateAndInitializeQuicClient() { - uint16_t port = QuicPickUnusedPortOrDie(); + uint16_t port = QuicPickServerPortForTestsOrDie(); QuicSocketAddress server_address(QuicSocketAddress(TestLoopback(), port)); QuicServerId server_id("hostname", server_address.port(), false); ParsedQuicVersionVector versions = AllSupportedVersions(); @@ -85,7 +85,6 @@ // port exhaustion in long running processes which repeatedly create clients. // Record the initial number of FDs. - size_t number_of_open_fds = NumOpenSocketFDs(); // Create a number of clients, initialize them, and verify this has resulted
diff --git a/quic/tools/quic_server_test.cc b/quic/tools/quic_server_test.cc index 3a2d520..8c89443 100644 --- a/quic/tools/quic_server_test.cc +++ b/quic/tools/quic_server_test.cc
@@ -86,11 +86,13 @@ class QuicServerEpollInTest : public QuicTest { public: QuicServerEpollInTest() - : port_(QuicPickUnusedPortOrDie()), + : port_(QuicPickServerPortForTestsOrDie()), server_address_(TestLoopback(), port_) {} void StartListening() { server_.CreateUDPSocketAndListen(server_address_); + server_address_ = QuicSocketAddress(server_address_.host(), server_.port()); + ASSERT_TRUE(QuicServerPeer::SetSmallSocket(&server_)); if (!server_.overflow_supported()) {