From 6035fd8f2c23357c46c401fb7120af83e5cf5887 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Tue, 24 Nov 2020 17:21:41 +0100 Subject: tst_qtcpserver: Test pauseAccepting/resumeAccepting Currently untested The socks case is odd: after accepting the first connection it shows as unconnected. Details as for why is unknown, out of scope of adding this test. Pick-to: 6.0 Change-Id: I0e7658f23b89f3af8db379b001ee33a844f3bec4 Reviewed-by: Timur Pocheptsov --- .../network/socket/qtcpserver/tst_qtcpserver.cpp | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'tests/auto/network') diff --git a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp index 1bf6777040..3ad206ccfe 100644 --- a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp +++ b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp @@ -113,6 +113,8 @@ private slots: void canAccessPendingConnectionsWhileNotListening(); + void pauseAccepting(); + private: bool shouldSkipIpv6TestsForBrokenGetsockopt(); #ifdef SHOULD_CHECK_SYSCALL_SUPPORT @@ -1046,5 +1048,36 @@ void tst_QTcpServer::canAccessPendingConnectionsWhileNotListening() QCOMPARE(&socket, server.nextPendingConnection()); } +void tst_QTcpServer::pauseAccepting() +{ + QTcpServer server; + QSignalSpy spy(&server, &QTcpServer::newConnection); + QVERIFY(server.listen()); + + QFETCH_GLOBAL(bool, setProxy); + const auto address = QHostAddress(setProxy ? QtNetworkSettings::socksProxyServerIp() + : QHostAddress::LocalHost); + + const int NumSockets = 6; + QTcpSocket sockets[NumSockets]; + sockets[0].connectToHost(address, server.serverPort()); + QVERIFY(spy.wait()); + QCOMPARE(spy.count(), 1); + + server.pauseAccepting(); + for (int i = 1; i < NumSockets; ++i) + sockets[i].connectToHost(address, server.serverPort()); + QVERIFY(!spy.wait(400)); + QCOMPARE(spy.count(), 1); + + server.resumeAccepting(); + if (setProxy) { + QEXPECT_FAIL("", "The socks proxy does weird things after accepting the first connection", + Abort); + } + QVERIFY(spy.wait()); + QCOMPARE(spy.count(), 6); +} + QTEST_MAIN(tst_QTcpServer) #include "tst_qtcpserver.moc" -- cgit v1.2.3