diff options
Diffstat (limited to 'tests')
15 files changed, 89 insertions, 107 deletions
diff --git a/tests/auto/websockets/dataprocessor/dataprocessor.pro b/tests/auto/websockets/dataprocessor/dataprocessor.pro index ad99900..907bfeb 100644 --- a/tests/auto/websockets/dataprocessor/dataprocessor.pro +++ b/tests/auto/websockets/dataprocessor/dataprocessor.pro @@ -6,7 +6,7 @@ TEMPLATE = app TARGET = tst_dataprocessor -QT = core testlib websockets websockets-private +QT = testlib websockets-private SOURCES += tst_dataprocessor.cpp diff --git a/tests/auto/websockets/dataprocessor/tst_dataprocessor.cpp b/tests/auto/websockets/dataprocessor/tst_dataprocessor.cpp index 5f6cfba..f9a91d5 100644 --- a/tests/auto/websockets/dataprocessor/tst_dataprocessor.cpp +++ b/tests/auto/websockets/dataprocessor/tst_dataprocessor.cpp @@ -901,7 +901,7 @@ void tst_DataProcessor::frameTooBig_data() QTest::addColumn<QWebSocketProtocol::CloseCode>("expectedCloseCode"); quint64 swapped64 = 0; - const char *wireRepresentation = 0; + const char *wireRepresentation = nullptr; //only data frames are checked for being too big //control frames have explicit checking on a maximum payload size of 125, diff --git a/tests/auto/websockets/handshakerequest/handshakerequest.pro b/tests/auto/websockets/handshakerequest/handshakerequest.pro index aa7779e..b641445 100644 --- a/tests/auto/websockets/handshakerequest/handshakerequest.pro +++ b/tests/auto/websockets/handshakerequest/handshakerequest.pro @@ -6,7 +6,7 @@ TEMPLATE = app TARGET = tst_handshakerequest -QT = core testlib websockets websockets-private +QT = testlib websockets-private SOURCES += tst_handshakerequest.cpp diff --git a/tests/auto/websockets/handshakeresponse/handshakeresponse.pro b/tests/auto/websockets/handshakeresponse/handshakeresponse.pro index ab6682b..61ff2f7 100644 --- a/tests/auto/websockets/handshakeresponse/handshakeresponse.pro +++ b/tests/auto/websockets/handshakeresponse/handshakeresponse.pro @@ -6,7 +6,7 @@ TEMPLATE = app TARGET = tst_handshakeresponse -QT = core testlib websockets websockets-private +QT = testlib websockets-private SOURCES += tst_handshakeresponse.cpp diff --git a/tests/auto/websockets/qdefaultmaskgenerator/qdefaultmaskgenerator.pro b/tests/auto/websockets/qdefaultmaskgenerator/qdefaultmaskgenerator.pro index c3b1046..07ea14d 100644 --- a/tests/auto/websockets/qdefaultmaskgenerator/qdefaultmaskgenerator.pro +++ b/tests/auto/websockets/qdefaultmaskgenerator/qdefaultmaskgenerator.pro @@ -6,7 +6,7 @@ TEMPLATE = app TARGET = tst_defaultmaskgenerator -QT = core testlib websockets websockets-private +QT = testlib websockets-private SOURCES += tst_defaultmaskgenerator.cpp diff --git a/tests/auto/websockets/qwebsocket/qwebsocket.pro b/tests/auto/websockets/qwebsocket/qwebsocket.pro index 1b08dc7..df143d5 100644 --- a/tests/auto/websockets/qwebsocket/qwebsocket.pro +++ b/tests/auto/websockets/qwebsocket/qwebsocket.pro @@ -2,7 +2,7 @@ CONFIG += console CONFIG += testcase CONFIG -= app_bundle -QT = core testlib websockets +QT = testlib websockets TARGET = tst_qwebsocket diff --git a/tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp b/tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp index 211ea25..2bb5d16 100644 --- a/tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp +++ b/tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp @@ -435,9 +435,13 @@ void tst_QWebSocket::tst_sendTextMessage() QUrl urlConnected = arguments.at(0).toUrl(); QCOMPARE(urlConnected, url); + QCOMPARE(socket.bytesToWrite(), 0); socket.sendTextMessage(QStringLiteral("Hello world!")); + QVERIFY(socket.bytesToWrite() > 12); // 12 + a few extra bytes for header QVERIFY(textMessageReceived.wait(500)); + QCOMPARE(socket.bytesToWrite(), 0); + QCOMPARE(textMessageReceived.count(), 1); QCOMPARE(binaryMessageReceived.count(), 0); QCOMPARE(binaryFrameReceived.count(), 0); @@ -509,9 +513,13 @@ void tst_QWebSocket::tst_sendBinaryMessage() QTRY_COMPARE(socketConnectedSpy.count(), 1); QCOMPARE(socket.state(), QAbstractSocket::ConnectedState); + QCOMPARE(socket.bytesToWrite(), 0); socket.sendBinaryMessage(QByteArrayLiteral("Hello world!")); + QVERIFY(socket.bytesToWrite() > 12); // 12 + a few extra bytes for header QVERIFY(binaryMessageReceived.wait(500)); + QCOMPARE(socket.bytesToWrite(), 0); + QCOMPARE(textMessageReceived.count(), 0); QCOMPARE(textFrameReceived.count(), 0); QCOMPARE(binaryMessageReceived.count(), 1); @@ -650,7 +658,7 @@ struct Warned origHandler(type, context, str); } }; -QtMessageHandler Warned::origHandler = 0; +QtMessageHandler Warned::origHandler = nullptr; bool Warned::warned = false; diff --git a/tests/auto/websockets/qwebsocketcorsauthenticator/qwebsocketcorsauthenticator.pro b/tests/auto/websockets/qwebsocketcorsauthenticator/qwebsocketcorsauthenticator.pro index 9a5af6b..caa97ad 100644 --- a/tests/auto/websockets/qwebsocketcorsauthenticator/qwebsocketcorsauthenticator.pro +++ b/tests/auto/websockets/qwebsocketcorsauthenticator/qwebsocketcorsauthenticator.pro @@ -6,7 +6,7 @@ TEMPLATE = app TARGET = tst_qwebsocketcorsauthenticator -QT = core testlib websockets +QT = testlib websockets SOURCES += tst_qwebsocketcorsauthenticator.cpp diff --git a/tests/auto/websockets/qwebsocketserver/qwebsocketserver.pro b/tests/auto/websockets/qwebsocketserver/qwebsocketserver.pro index 178fd88..c1ca4af 100644 --- a/tests/auto/websockets/qwebsocketserver/qwebsocketserver.pro +++ b/tests/auto/websockets/qwebsocketserver/qwebsocketserver.pro @@ -2,7 +2,7 @@ CONFIG += console CONFIG += testcase CONFIG -= app_bundle -QT = core testlib websockets +QT = testlib websockets TARGET = tst_qwebsocketserver diff --git a/tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp b/tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp index 9b3d5b6..64b2489 100644 --- a/tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp +++ b/tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp @@ -192,7 +192,11 @@ void tst_QWebSocketServer::tst_initialisation() QCOMPARE(server.maxPendingConnections(), 30); QCOMPARE(server.serverPort(), quint16(0)); QCOMPARE(server.serverAddress(), QHostAddress()); +#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) QCOMPARE(server.socketDescriptor(), -1); +#else // ### Qt 6: Remove leftovers + QCOMPARE(server.nativeDescriptor(), -1); +#endif // (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) QVERIFY(!server.hasPendingConnections()); QVERIFY(!server.nextPendingConnection()); QCOMPARE(server.error(), QWebSocketProtocol::CloseCodeNormal); @@ -217,7 +221,11 @@ void tst_QWebSocketServer::tst_initialisation() QCOMPARE(server.maxPendingConnections(), 30); QCOMPARE(server.serverPort(), quint16(0)); QCOMPARE(server.serverAddress(), QHostAddress()); +#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) QCOMPARE(server.socketDescriptor(), -1); +#else // ### Qt 6: Remove leftovers + QCOMPARE(server.nativeDescriptor(), -1); +#endif // (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) QVERIFY(!server.hasPendingConnections()); QVERIFY(!server.nextPendingConnection()); QCOMPARE(server.error(), QWebSocketProtocol::CloseCodeNormal); @@ -253,8 +261,13 @@ void tst_QWebSocketServer::tst_settersAndGetters() server.setMaxPendingConnections(INT_MAX); QCOMPARE(server.maxPendingConnections(), INT_MAX); +#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) QVERIFY(!server.setSocketDescriptor(-2)); QCOMPARE(server.socketDescriptor(), -1); +#else // ### Qt 6: Remove leftovers + QVERIFY(!server.setNativeDescriptor(-2)); + QCOMPARE(server.nativeDescriptor(), -1); +#endif // (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) server.setServerName(QStringLiteral("Qt WebSocketServer")); QCOMPARE(server.serverName(), QStringLiteral("Qt WebSocketServer")); @@ -645,6 +658,14 @@ void tst_QWebSocketServer::tst_handleConnection() QTRY_COMPARE(wsMessageReceivedSpy.count(), 1); QList<QVariant> arguments = wsMessageReceivedSpy.takeFirst(); QCOMPARE(arguments.first().toString(), QString("dummy")); + + QSignalSpy clientMessageReceivedSpy(&webSocket, &QWebSocket::textMessageReceived); + webServerSocket->sendTextMessage("hello"); + QVERIFY(webServerSocket->bytesToWrite() > 5); // 5 + a few extra bytes for header + QTRY_COMPARE(webServerSocket->bytesToWrite(), 0); + QTRY_COMPARE(clientMessageReceivedSpy.count(), 1); + arguments = clientMessageReceivedSpy.takeFirst(); + QCOMPARE(arguments.first().toString(), QString("hello")); } QTEST_MAIN(tst_QWebSocketServer) diff --git a/tests/auto/websockets/websocketframe/websocketframe.pro b/tests/auto/websockets/websocketframe/websocketframe.pro index 8f58302..babb296 100644 --- a/tests/auto/websockets/websocketframe/websocketframe.pro +++ b/tests/auto/websockets/websocketframe/websocketframe.pro @@ -6,7 +6,7 @@ TEMPLATE = app TARGET = tst_websocketframe -QT = core testlib websockets websockets-private +QT = testlib websockets-private SOURCES += tst_websocketframe.cpp diff --git a/tests/auto/websockets/websocketprotocol/websocketprotocol.pro b/tests/auto/websockets/websocketprotocol/websocketprotocol.pro index 27748a9..22a8140 100644 --- a/tests/auto/websockets/websocketprotocol/websocketprotocol.pro +++ b/tests/auto/websockets/websocketprotocol/websocketprotocol.pro @@ -6,7 +6,7 @@ TEMPLATE = app TARGET = tst_websocketprotocol -QT = core testlib websockets websockets-private +QT = testlib websockets-private SOURCES += tst_websocketprotocol.cpp diff --git a/tests/manual/compliance/compliance.pro b/tests/manual/compliance/compliance.pro index 30ac320..078c258 100644 --- a/tests/manual/compliance/compliance.pro +++ b/tests/manual/compliance/compliance.pro @@ -1,5 +1,4 @@ CONFIG += console -CONFIG += c++11 CONFIG += testcase CONFIG -= app_bundle @@ -7,7 +6,6 @@ TEMPLATE = app TARGET = tst_compliance -QT = core network websockets testlib +QT = websockets testlib SOURCES += tst_compliance.cpp - diff --git a/tests/manual/compliance/tst_compliance.cpp b/tests/manual/compliance/tst_compliance.cpp index 478ca33..8ef3c14 100644 --- a/tests/manual/compliance/tst_compliance.cpp +++ b/tests/manual/compliance/tst_compliance.cpp @@ -37,116 +37,74 @@ class tst_ComplianceTest : public QObject { Q_OBJECT -public: - tst_ComplianceTest(); - private Q_SLOTS: - void initTestCase(); void cleanupTestCase(); - void init(); - void cleanup(); - /** - * @brief Runs the autobahn tests against our implementation - */ - void autobahnTest(); - -private: - QUrl m_url; - void runTestCases(int startNbr, int stopNbr = -1); - void runTestCase(int nbr, int total); + void autobahnTest_data(); + void autobahnTest(); }; -tst_ComplianceTest::tst_ComplianceTest() : - m_url("ws://localhost:9001") -{ -} - -void tst_ComplianceTest::initTestCase() -{ -} +static const QUrl baseUrl { "ws://localhost:9001" }; +static const auto agent = QStringLiteral("QtWebSockets/" QT_VERSION_STR); void tst_ComplianceTest::cleanupTestCase() { -} - -void tst_ComplianceTest::init() -{ -} - -void tst_ComplianceTest::cleanup() -{ -} - -void tst_ComplianceTest::runTestCase(int nbr, int total) -{ - if (nbr == total) - { - return; - } - - QWebSocket *pWebSocket = new QWebSocket; - QSignalSpy spy(pWebSocket, SIGNAL(disconnected())); - - //next for every case, connect to url - //ws://ipaddress:port/runCase?case=<number>&agent=<agentname> - //where agent name will be QWebSocket - QObject::connect(pWebSocket, &QWebSocket::textMessageReceived, [=](QString message) { - pWebSocket->sendTextMessage(message); - }); - QObject::connect(pWebSocket, &QWebSocket::binaryMessageReceived, [=](QByteArray message) { - pWebSocket->sendBinaryMessage(message); - }); - - qDebug() << "Executing test" << (nbr + 1) << "/" << total; - QUrl url = m_url; - url.setPath(QStringLiteral("/runCase")); + QWebSocket webSocket; + QSignalSpy spy(&webSocket, &QWebSocket::disconnected); + auto url = baseUrl; + url.setPath(QStringLiteral("/updateReports")); QUrlQuery query; - query.addQueryItem(QStringLiteral("case"), QString::number(nbr + 1)); - query.addQueryItem(QStringLiteral("agent"), QStringLiteral("QtWebSockets/1.0")); + query.addQueryItem(QStringLiteral("agent"), agent); url.setQuery(query); - pWebSocket->open(url); - spy.wait(60000); - pWebSocket->close(); - delete pWebSocket; - pWebSocket = nullptr; - runTestCase(nbr + 1, total); -} - -void tst_ComplianceTest::runTestCases(int startNbr, int stopNbr) -{ - runTestCase(startNbr, stopNbr); + webSocket.open(url); + QVERIFY(spy.wait()); } -void tst_ComplianceTest::autobahnTest() +void tst_ComplianceTest::autobahnTest_data() { - //connect to autobahn server at url ws://ipaddress:port/getCaseCount - QWebSocket *pWebSocket = new QWebSocket; - QUrl url = m_url; - int numberOfTestCases = 0; - QSignalSpy spy(pWebSocket, SIGNAL(disconnected())); - QObject::connect(pWebSocket, &QWebSocket::textMessageReceived, [&](QString message) { - numberOfTestCases = message.toInt(); + QTest::addColumn<int>("testCase"); + + // Ask /getCaseCount how many tests we have + QWebSocket webSocket; + QSignalSpy spy(&webSocket, &QWebSocket::disconnected); + + connect(&webSocket, &QWebSocket::textMessageReceived, [](QString message) { + bool ok; + const auto numberOfTestCases = message.toInt(&ok); + if (!ok) + QSKIP("Unable to parse /getCaseCount result"); + for (auto i = 1; i <= numberOfTestCases; ++i) + QTest::addRow("%d", i) << i; }); + auto url = baseUrl; url.setPath(QStringLiteral("/getCaseCount")); - pWebSocket->open(url); - spy.wait(60000); - QVERIFY(numberOfTestCases > 0); - - QObject::disconnect(pWebSocket, &QWebSocket::textMessageReceived, 0, 0); - runTestCases(0, numberOfTestCases); + webSocket.open(url); + if (!spy.wait()) + QSKIP("AutoBahn test server didn't deliver case-count"); +} - url.setPath(QStringLiteral("/updateReports")); +void tst_ComplianceTest::autobahnTest() +{ + QFETCH(int, testCase); + QWebSocket webSocket; + QSignalSpy spy(&webSocket, &QWebSocket::disconnected); + connect(&webSocket, &QWebSocket::textMessageReceived, + &webSocket, &QWebSocket::sendTextMessage); + connect(&webSocket, &QWebSocket::binaryMessageReceived, + &webSocket, &QWebSocket::sendBinaryMessage); + + // Ask /runCase?case=<number>&agent=<agent> to run the test-case. + auto url = baseUrl; + url.setPath(QStringLiteral("/runCase")); QUrlQuery query; - query.addQueryItem(QStringLiteral("agent"), QStringLiteral("QtWebSockets")); + query.addQueryItem(QStringLiteral("case"), QString::number(testCase)); + query.addQueryItem(QStringLiteral("agent"), agent); url.setQuery(query); - pWebSocket->open(url); - spy.wait(60000); - delete pWebSocket; + webSocket.open(url); + QVERIFY(spy.wait()); } QTEST_MAIN(tst_ComplianceTest) #include "tst_compliance.moc" - diff --git a/tests/manual/websockets/websockets.pro b/tests/manual/websockets/websockets.pro index a8b2edb..62000b9 100644 --- a/tests/manual/websockets/websockets.pro +++ b/tests/manual/websockets/websockets.pro @@ -1,5 +1,4 @@ CONFIG += console -CONFIG += c++11 CONFIG += testcase CONFIG -= app_bundle @@ -7,8 +6,6 @@ TEMPLATE = app TARGET = tst_websockets -QT = core network websockets testlib +QT = websockets testlib SOURCES += tst_websockets.cpp - -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 |