diff options
author | Ryan Chu <ryan.chu@qt.io> | 2018-02-28 16:48:38 +0100 |
---|---|---|
committer | Ryan Chu <ryan.chu@qt.io> | 2018-07-05 14:13:36 +0000 |
commit | 9e24b43cb962d7d0035154a546ef281d0a786162 (patch) | |
tree | b6ff855327bde315a0e6066c13c2b73881abb844 /tests/auto/network-settings.h | |
parent | 7cd7d6ab3fbfffff8707271c03bb01bcbe5a6d45 (diff) |
Docker-based test servers for network-related Qt autotests
The existing network test server has some limitations. Most notably, it
is not accessible by every Qt developer. Also, some services don't allow
simultaneous access, which causes flaky test results.
Instead of centralizing all the services to one physical machine, the
idea is to build up several dedicated servers inside separate Docker
containers.
1. Create testserver.pri and integrate it into the make check command of
Qt Test.
2. Define QT_TEST_SERVER flag for changing test parameters at compile
time.
Task-number: QTQAINFRA-1686
Change-Id: I0422ddb97eb8c11b4818771454851d19671253b1
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
Reviewed-by: Ryan Chu <ryan.chu@qt.io>
Diffstat (limited to 'tests/auto/network-settings.h')
-rw-r--r-- | tests/auto/network-settings.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/auto/network-settings.h b/tests/auto/network-settings.h index 16966ced4e..85f93120b1 100644 --- a/tests/auto/network-settings.h +++ b/tests/auto/network-settings.h @@ -27,6 +27,7 @@ ****************************************************************************/ #include <QString> +#include <QtTest/QtTest> #ifdef QT_NETWORK_LIB #include <QtNetwork/QHostInfo> #include <QtNetwork/QHostAddress> @@ -50,7 +51,11 @@ public: } static QString serverDomainName() { +#ifdef QT_TEST_SERVER_DOMAIN + return QString(QT_TEST_SERVER_DOMAIN); // Defined in testserver feature +#else return QString("qt-test-net"); +#endif } static QString serverName() { @@ -137,6 +142,20 @@ public: return true; } + static bool verifyConnection(QString serverName, quint16 port, quint32 retry = 10) + { + QTcpSocket socket; + for (quint32 i = 1; i < retry; i++) { + socket.connectToHost(serverName, port); + if (socket.waitForConnected(1000)) + return true; + // Wait for service to start up + QTest::qWait(1000); + } + socket.connectToHost(serverName, port); + return socket.waitForConnected(1000); + } + // Helper function for usage with QVERIFY2 on sockets. static QByteArray msgSocketError(const QAbstractSocket &s) { |