Convert the QSocks5SocketEngine test to use Docker
Change-Id: I5d223758471a72c93ad57d250001c1de51a208cd Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
This commit is contained in:
parent
2ec47d6cb5
commit
1844f011f6
@ -72,15 +72,20 @@ public:
|
||||
}
|
||||
|
||||
#ifdef QT_NETWORK_LIB
|
||||
static QHostAddress serverIP()
|
||||
static QHostAddress getServerIpImpl(const QString &serverName)
|
||||
{
|
||||
const QHostInfo info = QHostInfo::fromName(serverName());
|
||||
const QHostInfo info = QHostInfo::fromName(serverName);
|
||||
if (info.error()) {
|
||||
QTest::qFail(qPrintable(info.errorString()), __FILE__, __LINE__);
|
||||
return QHostAddress();
|
||||
}
|
||||
return info.addresses().constFirst();
|
||||
}
|
||||
|
||||
static QHostAddress serverIP()
|
||||
{
|
||||
return getServerIpImpl(serverName());
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool compareReplyIMAP(QByteArray const& actual)
|
||||
@ -214,4 +219,19 @@ public:
|
||||
return serverName();
|
||||
#endif
|
||||
}
|
||||
static QString imapServerName()
|
||||
{
|
||||
#ifdef QT_TEST_SERVER_NAME
|
||||
return QString("cyrus.") % serverDomainName();
|
||||
#else
|
||||
return serverName();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef QT_NETWORK_LIB
|
||||
static QHostAddress imapServerIp()
|
||||
{
|
||||
return getServerIpImpl(imapServerName());
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
@ -11,3 +11,9 @@ MOC_DIR=tmp
|
||||
QT = core-private network-private testlib
|
||||
|
||||
requires(qtConfig(private_tests))
|
||||
|
||||
# Only on Linux until cyrus has been added to docker-compose-for-{windows,macOS}.yml and tested
|
||||
linux {
|
||||
QT_TEST_SERVER_LIST = danted apache2 cyrus
|
||||
include($$dirname(_QMAKE_CONF_)/tests/auto/testserver.pri)
|
||||
}
|
||||
|
@ -137,7 +137,13 @@ private slots:
|
||||
|
||||
void tst_QSocks5SocketEngine::initTestCase()
|
||||
{
|
||||
#ifdef QT_TEST_SERVER
|
||||
QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::socksProxyServerName(), 1080));
|
||||
QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::httpServerName(), 80));
|
||||
QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::imapServerName(), 143));
|
||||
#else
|
||||
QVERIFY(QtNetworkSettings::verifyTestNetworkSettings());
|
||||
#endif
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
@ -293,13 +299,13 @@ void tst_QSocks5SocketEngine::simpleConnectToIMAP()
|
||||
QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
|
||||
QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState);
|
||||
|
||||
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
|
||||
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::socksProxyServerName(), 1080));
|
||||
|
||||
QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
|
||||
QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::imapServerIp(), 143));
|
||||
QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectingState);
|
||||
QVERIFY(socketDevice.waitForWrite());
|
||||
QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectedState);
|
||||
QCOMPARE(socketDevice.peerAddress(), QtNetworkSettings::serverIP());
|
||||
QCOMPARE(socketDevice.peerAddress(), QtNetworkSettings::imapServerIp());
|
||||
|
||||
// Wait for the greeting
|
||||
QVERIFY(socketDevice.waitForRead());
|
||||
@ -347,10 +353,10 @@ void tst_QSocks5SocketEngine::simpleErrorsAndStates()
|
||||
// Initialize device
|
||||
QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
|
||||
|
||||
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
|
||||
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::socksProxyServerName(), 1080));
|
||||
|
||||
QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState);
|
||||
QVERIFY(!socketDevice.connectToHost(QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first(), 8088));
|
||||
QVERIFY(!socketDevice.connectToHost(QHostInfo::fromName(QtNetworkSettings::socksProxyServerName()).addresses().first(), 8088));
|
||||
QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectingState);
|
||||
if (socketDevice.waitForWrite(15000)) {
|
||||
QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState ||
|
||||
@ -433,7 +439,7 @@ void tst_QSocks5SocketEngine::serverTest()
|
||||
// Initialize a Tcp socket
|
||||
QVERIFY(server.initialize(QAbstractSocket::TcpSocket));
|
||||
|
||||
QNetworkProxy proxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
|
||||
QNetworkProxy proxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::socksProxyServerName(), 1080);
|
||||
|
||||
server.setProxy(proxy);
|
||||
|
||||
@ -510,7 +516,7 @@ void tst_QSocks5SocketEngine::udpTest()
|
||||
QVERIFY(udpSocket.initialize(QAbstractSocket::UdpSocket));
|
||||
QVERIFY(udpSocket.isValid());
|
||||
|
||||
QNetworkProxy proxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080);
|
||||
QNetworkProxy proxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::socksProxyServerName(), 1080);
|
||||
|
||||
udpSocket.setProxy(proxy);
|
||||
|
||||
@ -564,7 +570,7 @@ void tst_QSocks5SocketEngine::tcpSocketBlockingTest()
|
||||
QTcpSocket socket;
|
||||
|
||||
// Connect
|
||||
socket.connectToHost(QtNetworkSettings::serverName(), 143);
|
||||
socket.connectToHost(QtNetworkSettings::imapServerName(), 143);
|
||||
QVERIFY(socket.waitForConnected());
|
||||
QCOMPARE(socket.state(), QTcpSocket::ConnectedState);
|
||||
|
||||
@ -635,7 +641,7 @@ void tst_QSocks5SocketEngine::tcpSocketNonBlockingTest()
|
||||
});
|
||||
|
||||
// Connect
|
||||
socket.connectToHost(QtNetworkSettings::serverName(), 143);
|
||||
socket.connectToHost(QtNetworkSettings::imapServerName(), 143);
|
||||
QVERIFY(socket.state() == QTcpSocket::HostLookupState ||
|
||||
socket.state() == QTcpSocket::ConnectingState);
|
||||
|
||||
@ -754,13 +760,13 @@ void tst_QSocks5SocketEngine::downloadBigFile()
|
||||
<< " (" << stopWatch.elapsed() << "ms)";
|
||||
});
|
||||
|
||||
socket.connectToHost(QtNetworkSettings::serverName(), 80);
|
||||
socket.connectToHost(QtNetworkSettings::httpServerName(), 80);
|
||||
|
||||
QTestEventLoop::instance().enterLoop(30);
|
||||
if (QTestEventLoop::instance().timeout())
|
||||
QFAIL("Network operation timed out");
|
||||
|
||||
QByteArray hostName = QtNetworkSettings::serverName().toLatin1();
|
||||
QByteArray hostName = QtNetworkSettings::httpServerName().toLatin1();
|
||||
QCOMPARE(socket.state(), QAbstractSocket::ConnectedState);
|
||||
QVERIFY(socket.write("GET /qtest/mediumfile HTTP/1.0\r\n") > 0);
|
||||
QVERIFY(socket.write("HOST: ") > 0);
|
||||
@ -791,13 +797,13 @@ void tst_QSocks5SocketEngine::passwordAuth()
|
||||
QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
|
||||
QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState);
|
||||
|
||||
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080, "qsockstest", "password"));
|
||||
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::socksProxyServerName(), 1080, "qsockstest", "password"));
|
||||
|
||||
// Connect to imap.trolltech.com's IP
|
||||
QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
|
||||
QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::imapServerIp(), 143));
|
||||
QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectingState);
|
||||
QVERIFY(socketDevice.waitForWrite());
|
||||
if (!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143)) {
|
||||
if (!socketDevice.connectToHost(QtNetworkSettings::imapServerIp(), 143)) {
|
||||
qDebug("%d, %s", socketDevice.error(), socketDevice.errorString().toLatin1().constData());
|
||||
}
|
||||
QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectedState);
|
||||
@ -857,19 +863,19 @@ void tst_QSocks5SocketEngine::passwordAuth2()
|
||||
QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol));
|
||||
QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState);
|
||||
|
||||
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081));
|
||||
socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::socksProxyServerName(), 1081));
|
||||
socketDevice.setReceiver(this);
|
||||
|
||||
QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143));
|
||||
QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::imapServerIp(), 143));
|
||||
QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectingState);
|
||||
while (socketDevice.state() == QAbstractSocket::ConnectingState) {
|
||||
QVERIFY(socketDevice.waitForWrite());
|
||||
socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143);
|
||||
socketDevice.connectToHost(QtNetworkSettings::imapServerIp(), 143);
|
||||
}
|
||||
if (socketDevice.state() != QAbstractSocket::ConnectedState)
|
||||
qDebug("%d, %s", socketDevice.error(), socketDevice.errorString().toLatin1().constData());
|
||||
QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectedState);
|
||||
QCOMPARE(socketDevice.peerAddress(), QtNetworkSettings::serverIP());
|
||||
QCOMPARE(socketDevice.peerAddress(), QtNetworkSettings::imapServerIp());
|
||||
|
||||
// Wait for the greeting
|
||||
QVERIFY(socketDevice.waitForRead());
|
||||
|
34
tests/testserver/cyrus/cyrus.sh
Executable file
34
tests/testserver/cyrus/cyrus.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#############################################################################
|
||||
##
|
||||
## Copyright (C) 2019 The Qt Company Ltd.
|
||||
## Contact: https://www.qt.io/licensing/
|
||||
##
|
||||
## This file is part of the test suite of the Qt Toolkit.
|
||||
##
|
||||
## $QT_BEGIN_LICENSE:GPL$
|
||||
## Commercial License Usage
|
||||
## Licensees holding valid commercial Qt licenses may use this file in
|
||||
## accordance with the commercial license agreement provided with the
|
||||
## Software or, alternatively, in accordance with the terms contained in
|
||||
## a written agreement between you and The Qt Company. For licensing terms
|
||||
## and conditions see https://www.qt.io/terms-conditions. For further
|
||||
## information use the contact form at https://www.qt.io/contact-us.
|
||||
##
|
||||
## GNU General Public License Usage
|
||||
## Alternatively, this file may be used under the terms of the GNU
|
||||
## General Public License version 3 or (at your option) any later version
|
||||
## approved by the KDE Free Qt Foundation. The licenses are as published by
|
||||
## the Free Software Foundation and appearing in the file LICENSE.GPL3
|
||||
## included in the packaging of this file. Please review the following
|
||||
## information to ensure the GNU General Public License requirements will
|
||||
## be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
##
|
||||
## $QT_END_LICENSE$
|
||||
##
|
||||
#############################################################################
|
||||
|
||||
set -ex
|
||||
|
||||
service cyrus-imapd start
|
@ -76,8 +76,20 @@ services:
|
||||
- apache2:apache2.${TEST_DOMAIN}
|
||||
- vsftpd:vsftpd.${TEST_DOMAIN}
|
||||
- ftp-proxy:ftp-proxy.${TEST_DOMAIN}
|
||||
- cyrus:cyrus.${TEST_DOMAIN}
|
||||
volumes:
|
||||
- ./common:/common:ro
|
||||
- ./danted:/service:ro
|
||||
entrypoint: common/startup.sh
|
||||
command: service/danted.sh
|
||||
|
||||
cyrus:
|
||||
image: qt-test-server-cyrus:c8d72754abc0e501afd624ce838e4df35505abc9
|
||||
container_name: qt-test-server-cyrus
|
||||
domainname: ${TEST_DOMAIN}
|
||||
hostname: cyrus
|
||||
volumes:
|
||||
- ./common:/common:ro
|
||||
- ./cyrus:/service:ro
|
||||
entrypoint: common/startup.sh
|
||||
command: service/cyrus.sh
|
||||
|
Loading…
x
Reference in New Issue
Block a user