From 84fa8726a343228e3b1e0b4612c948bd6571b859 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 10 Oct 2022 12:56:24 -0700 Subject: [PATCH] tst_QTcpServer: Output useful more useful info for addressReusable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To try to figure out why QProcess::waitForReadyRead is returning false so quickly. Though we know it's going to be "Address in use". FAIL : tst_QTcpServer::addressReusable(WithoutProxy) 'process.waitForReadyRead(5000)' returned FALSE. (Failed to listen: The bound address is already in use Netid State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess tcp LISTEN 0 50 127.0.0.1:49199 0.0.0.0:* users:(("crashingServer",pid=40529,fd=4)) ) Change-Id: Ic43a460bfc7c7eb6379405b7a1a064e502b6fef3 Reviewed-by: MÃ¥rten Nordheim (cherry picked from commit 742584b0f2204497c7daaf3cde1c42aab6f7e55c) Reviewed-by: Qt Cherry-pick Bot --- .../socket/qtcpserver/crashingServer/main.cpp | 16 +++++++++++++++- .../network/socket/qtcpserver/tst_qtcpserver.cpp | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/tests/auto/network/socket/qtcpserver/crashingServer/main.cpp b/tests/auto/network/socket/qtcpserver/crashingServer/main.cpp index 5e00a2bd201..08f234aa3e0 100644 --- a/tests/auto/network/socket/qtcpserver/crashingServer/main.cpp +++ b/tests/auto/network/socket/qtcpserver/crashingServer/main.cpp @@ -7,6 +7,9 @@ #if defined(Q_OS_WIN) && defined(Q_CC_MSVC) # include #endif +#ifdef Q_OS_UNIX +# include +#endif int main(int argc, char *argv[]) { @@ -18,7 +21,18 @@ int main(int argc, char *argv[]) QTcpServer server; if (!server.listen(QHostAddress::LocalHost, 49199)) { - qDebug("Failed to listen: %s", server.errorString().toLatin1().constData()); + fprintf(stderr, "Failed to listen: %s\n", server.errorString().toLatin1().constData()); + if (server.serverError() == QTcpSocket::AddressInUseError) { + // let's see if we can find the process that would be holding this + // still open +#ifdef Q_OS_LINUX + static const char *ss_args[] = { + "ss", "-nap", "sport", "=", ":49199", nullptr + }; + dup2(STDERR_FILENO, STDOUT_FILENO); + execvp(ss_args[0], const_cast(ss_args)); +#endif + } return 1; } diff --git a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp index d1fa84f7d0c..e47c8f4654d 100644 --- a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp +++ b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp @@ -594,7 +594,7 @@ void tst_QTcpServer::addressReusable() process.start(processExe); QVERIFY2(process.waitForStarted(), qPrintable( QString::fromLatin1("Could not start %1: %2").arg(processExe, process.errorString()))); - QVERIFY(process.waitForReadyRead(5000)); + QVERIFY2(process.waitForReadyRead(5000), qPrintable(process.readAllStandardError())); QTcpSocket socket; socket.connectToHost(QHostAddress::LocalHost, 49199);