summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/socket
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/network/socket')
-rw-r--r--tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp14
-rw-r--r--tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp2
-rw-r--r--tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp38
-rw-r--r--tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp77
-rw-r--r--tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp16
-rw-r--r--tests/auto/network/socket/socket.pro4
6 files changed, 148 insertions, 3 deletions
diff --git a/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp b/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp
index f474f97f5d..35028735e2 100644
--- a/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp
+++ b/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp
@@ -64,7 +64,11 @@
#define PLATFORMSOCKETENGINE QNativeSocketEngine
#define PLATFORMSOCKETENGINESTRING "QNativeSocketEngine"
-#include <private/qnativesocketengine_p.h>
+#ifndef Q_OS_WINRT
+# include <private/qnativesocketengine_p.h>
+#else
+# include <private/qnativesocketengine_winrt_p.h>
+#endif
#include <qstringlist.h>
@@ -97,7 +101,9 @@ private slots:
void networkError();
void setSocketDescriptor();
void invalidSend();
+#ifndef Q_OS_WINRT
void receiveUrgentData();
+#endif
void tooManySockets();
};
@@ -608,7 +614,9 @@ void tst_PlatformSocketEngine::networkError()
QVERIFY(client.state() == QAbstractSocket::ConnectedState);
// An unexpected network error!
-#ifdef Q_OS_WIN
+#ifdef Q_OS_WINRT
+ client.close();
+#elif defined(Q_OS_WIN)
// could use shutdown to produce different errors
::closesocket(client.socketDescriptor());
#else
@@ -641,6 +649,7 @@ void tst_PlatformSocketEngine::invalidSend()
}
//---------------------------------------------------------------------------
+#ifndef Q_OS_WINRT
void tst_PlatformSocketEngine::receiveUrgentData()
{
PLATFORMSOCKETENGINE server;
@@ -703,6 +712,7 @@ void tst_PlatformSocketEngine::receiveUrgentData()
QCOMPARE(response.at(0), msg);
#endif
}
+#endif // !Q_OS_WINRT
QTEST_MAIN(tst_PlatformSocketEngine)
#include "tst_platformsocketengine.moc"
diff --git a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp
index 9887acf7dd..6053021cf4 100644
--- a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp
+++ b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp
@@ -1026,7 +1026,7 @@ void tst_QLocalSocket::writeToClientAndDisconnect()
void tst_QLocalSocket::debug()
{
// Make sure this compiles
- QTest::ignoreMessage(QtDebugMsg, "QLocalSocket::ConnectionRefusedError QLocalSocket::UnconnectedState ");
+ QTest::ignoreMessage(QtDebugMsg, "QLocalSocket::ConnectionRefusedError QLocalSocket::UnconnectedState");
qDebug() << QLocalSocket::ConnectionRefusedError << QLocalSocket::UnconnectedState;
}
diff --git a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
index d838b463f7..10b41ced9e 100644
--- a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
+++ b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
@@ -100,16 +100,20 @@ private slots:
void maxPendingConnections();
void listenError();
void waitForConnectionTest();
+#ifndef Q_OS_WINRT
void setSocketDescriptor();
+#endif
void listenWhileListening();
#ifndef QT_NO_PROCESS
void addressReusable();
#endif
void setNewSocketDescriptorBlocking();
+#ifndef QT_NO_NETWORKPROXY
void invalidProxy_data();
void invalidProxy();
void proxyFactory_data();
void proxyFactory();
+#endif // !QT_NO_NETWORKPROXY
void qtbug14268_peek();
@@ -158,7 +162,9 @@ void tst_QTcpServer::initTestCase_data()
QTest::addColumn<int>("proxyType");
QTest::newRow("WithoutProxy") << false << 0;
+#ifndef QT_NO_SOCKS5
QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy);
+#endif
crashingServerDir = QFINDTESTDATA("crashingServer");
QVERIFY2(!crashingServerDir.isEmpty(), qPrintable(
@@ -181,16 +187,22 @@ void tst_QTcpServer::init()
{
QFETCH_GLOBAL(bool, setProxy);
if (setProxy) {
+#ifndef QT_NO_NETWORKPROXY
QFETCH_GLOBAL(int, proxyType);
if (proxyType == QNetworkProxy::Socks5Proxy) {
QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
}
+#else // !QT_NO_NETWORKPROXY
+ QSKIP("No proxy support");
+#endif // QT_NO_NETWORKPROXY
}
}
void tst_QTcpServer::cleanup()
{
+#ifndef QT_NO_NETWORKPROXY
QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
+#endif
}
//----------------------------------------------------------------------------------
@@ -369,9 +381,13 @@ void tst_QTcpServer::maxPendingConnections()
{
QFETCH_GLOBAL(bool, setProxy);
if (setProxy) {
+#ifndef QT_NO_NETWORKPROXY
QFETCH_GLOBAL(int, proxyType);
if (proxyType == QNetworkProxy::Socks5Proxy)
QSKIP("With socks5 only 1 connection is allowed ever");
+#else // !QT_NO_NETWORKPROXY
+ QSKIP("No proxy support");
+#endif // QT_NO_NETWORKPROXY
}
//### sees to fail sometimes ... a timing issue with the test on windows
QTcpServer server;
@@ -407,9 +423,13 @@ void tst_QTcpServer::listenError()
{
QFETCH_GLOBAL(bool, setProxy);
if (setProxy) {
+#ifndef QT_NO_NETWORKPROXY
QFETCH_GLOBAL(int, proxyType);
if (proxyType == QNetworkProxy::Socks5Proxy)
QSKIP("With socks5 we can not make hard requirements on the address or port");
+#else // !QT_NO_NETWORKPROXY
+ QSKIP("No proxy support");
+#endif //QT_NO_NETWORKPROXY
}
QTcpServer server;
QVERIFY(!server.listen(QHostAddress("1.2.3.4"), 0));
@@ -453,9 +473,13 @@ void tst_QTcpServer::waitForConnectionTest()
QFETCH_GLOBAL(bool, setProxy);
if (setProxy) {
+#ifndef QT_NO_NETWORKPROXY
QFETCH_GLOBAL(int, proxyType);
if (proxyType == QNetworkProxy::Socks5Proxy)
QSKIP("Localhost servers don't work well with SOCKS5");
+#else // !QT_NO_NETWORKPROXY
+ QSKIP("No proxy support");
+#endif // QT_NO_NETWORKPROXY
}
QTcpSocket findLocalIpSocket;
@@ -481,6 +505,7 @@ void tst_QTcpServer::waitForConnectionTest()
}
//----------------------------------------------------------------------------------
+#ifndef Q_OS_WINRT
void tst_QTcpServer::setSocketDescriptor()
{
QTcpServer server;
@@ -510,6 +535,7 @@ void tst_QTcpServer::setSocketDescriptor()
WSACleanup();
#endif
}
+#endif // !Q_OS_WINRT
//----------------------------------------------------------------------------------
void tst_QTcpServer::listenWhileListening()
@@ -531,6 +557,7 @@ public:
bool ok;
protected:
+#ifndef Q_OS_WINRT
void incomingConnection(qintptr socketDescriptor)
{
// how a user woulddo it (qabstractsocketengine is not public)
@@ -543,6 +570,7 @@ protected:
::close(socketDescriptor);
#endif
}
+#endif // !Q_OS_WINRT
};
#ifndef QT_NO_PROCESS
@@ -550,9 +578,13 @@ void tst_QTcpServer::addressReusable()
{
QFETCH_GLOBAL(bool, setProxy);
if (setProxy) {
+#ifndef QT_NO_NETWORKPROXY
QFETCH_GLOBAL(int, proxyType);
if (proxyType == QNetworkProxy::Socks5Proxy)
QSKIP("With socks5 this test does not make senans at the momment");
+#else // !QT_NO_NETWORKPROXY
+ QSKIP("No proxy support");
+#endif // QT_NO_NETWORKPROXY
}
#if defined(Q_OS_WINCE)
QString signalName = QString::fromLatin1("/test_signal.txt");
@@ -596,9 +628,13 @@ void tst_QTcpServer::setNewSocketDescriptorBlocking()
{
QFETCH_GLOBAL(bool, setProxy);
if (setProxy) {
+#ifndef QT_NO_NETWORKPROXY
QFETCH_GLOBAL(int, proxyType);
if (proxyType == QNetworkProxy::Socks5Proxy)
QSKIP("With socks5 we can not make the socket descripter blocking");
+#else // !QT_NO_NETWORKPROXY
+ QSKIP("No proxy support");
+#endif // QT_NO_NETWORKPROXY
}
SeverWithBlockingSockets server;
QVERIFY(server.listen());
@@ -609,6 +645,7 @@ void tst_QTcpServer::setNewSocketDescriptorBlocking()
QVERIFY(server.ok);
}
+#ifndef QT_NO_NETWORKPROXY
void tst_QTcpServer::invalidProxy_data()
{
QTest::addColumn<int>("type");
@@ -763,6 +800,7 @@ void tst_QTcpServer::proxyFactory()
// Sometimes, error codes change for the better
QTEST(int(server.serverError()), "expectedError");
}
+#endif // !QT_NO_NETWORKPROXY
class Qtbug14268Helper : public QObject
{
diff --git a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
index b6df536b98..e589d520cb 100644
--- a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
+++ b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
@@ -132,7 +132,9 @@ private slots:
void bind_data();
void bind();
void setInvalidSocketDescriptor();
+#ifndef Q_OS_WINRT
void setSocketDescriptor();
+#endif
void socketDescriptor();
void blockingIMAP();
void nonBlockingIMAP();
@@ -187,14 +189,17 @@ private slots:
void connectToMultiIP();
void moveToThread0();
void increaseReadBufferSize();
+ void increaseReadBufferSizeFromSlot();
void taskQtBug5799ConnectionErrorWaitForConnected();
void taskQtBug5799ConnectionErrorEventLoop();
void taskQtBug7054TimeoutErrorResetting();
+#ifndef QT_NO_NETWORKPROXY
void invalidProxy_data();
void invalidProxy();
void proxyFactory_data();
void proxyFactory();
+#endif // !QT_NO_NETWORKPROXY
void qtbug14268_peek();
@@ -216,9 +221,12 @@ protected slots:
void hostLookupSlot();
void abortiveClose_abortSlot();
void remoteCloseErrorSlot();
+#ifndef QT_NO_NETWORKPROXY
void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth);
+#endif
void earlySocketBytesSent(qint64 bytes);
void earlySocketReadyRead();
+ void slotIncreaseReadBufferSizeReadyRead();
private:
QByteArray expectedReplyIMAP();
@@ -354,6 +362,7 @@ void tst_QTcpSocket::init()
{
QFETCH_GLOBAL(bool, setProxy);
if (setProxy) {
+#ifndef QT_NO_NETWORKPROXY
QFETCH_GLOBAL(int, proxyType);
QList<QHostAddress> addresses = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses();
QVERIFY2(addresses.count() > 0, "failed to get ip address for test server");
@@ -382,6 +391,9 @@ void tst_QTcpSocket::init()
break;
}
QNetworkProxy::setApplicationProxy(proxy);
+#else // !QT_NO_NETWORKPROXY
+ QSKIP("No proxy support");
+#endif // QT_NO_NETWORKPROXY
}
qt_qhostinfo_clear_cache();
@@ -406,15 +418,19 @@ QTcpSocket *tst_QTcpSocket::newSocket() const
void tst_QTcpSocket::cleanup()
{
+#ifndef QT_NO_NETWORKPROXY
QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
+#endif
}
+#ifndef QT_NO_NETWORKPROXY
void tst_QTcpSocket::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
{
++proxyAuthCalled;
auth->setUser("qsockstest");
auth->setPassword("password");
}
+#endif // !QT_NO_NETWORKPROXY
//----------------------------------------------------------------------------------
@@ -552,6 +568,7 @@ void tst_QTcpSocket::setInvalidSocketDescriptor()
//----------------------------------------------------------------------------------
+#ifndef Q_OS_WINRT
void tst_QTcpSocket::setSocketDescriptor()
{
QFETCH_GLOBAL(bool, setProxy);
@@ -596,6 +613,7 @@ void tst_QTcpSocket::setSocketDescriptor()
delete dummy;
#endif
}
+#endif // !Q_OS_WINRT
//----------------------------------------------------------------------------------
@@ -1546,7 +1564,9 @@ void tst_QTcpSocket::synchronousApi()
void tst_QTcpSocket::dontCloseOnTimeout()
{
QTcpServer server;
+#ifndef QT_NO_NETWORKPROXY
server.setProxy(QNetworkProxy(QNetworkProxy::NoProxy));
+#endif
QVERIFY(server.listen());
QHostAddress serverAddress = QHostAddress::LocalHost;
@@ -1673,11 +1693,13 @@ private slots:
{
quit();
}
+#ifndef QT_NO_NETWORKPROXY
inline void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
{
auth->setUser("qsockstest");
auth->setPassword("password");
}
+#endif // !QT_NO_NETWORKPROXY
private:
int exitCode;
QTcpSocket *socket;
@@ -1970,11 +1992,13 @@ public slots:
tst_QTcpSocket::exitLoop();
}
+#ifndef QT_NO_NETWORKPROXY
inline void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
{
auth->setUser("qsockstest");
auth->setPassword("password");
}
+#endif // !QT_NO_NETWORKPROXY
};
//----------------------------------------------------------------------------------
@@ -2437,6 +2461,57 @@ void tst_QTcpSocket::increaseReadBufferSize()
delete active;
}
+void tst_QTcpSocket::increaseReadBufferSizeFromSlot() // like KIO's socketconnectionbackend
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return; //proxy not useful for localhost test case
+ QTcpServer server;
+ QTcpSocket *active = newSocket();
+ connect(active, SIGNAL(readyRead()), SLOT(slotIncreaseReadBufferSizeReadyRead()));
+
+ // connect two sockets to each other:
+ QVERIFY(server.listen(QHostAddress::LocalHost));
+ active->connectToHost("127.0.0.1", server.serverPort());
+ QVERIFY(active->waitForConnected(5000));
+ QVERIFY(server.waitForNewConnection(5000));
+
+ QTcpSocket *passive = server.nextPendingConnection();
+ QVERIFY(passive);
+
+ // now write 512 bytes of data on one end
+ QByteArray data(512, 'a');
+ passive->write(data);
+ QVERIFY2(passive->waitForBytesWritten(5000), "Network timeout");
+
+ // set the read buffer size to less than what was written,
+ // and increase it from the slot, first to 384 then to 1024.
+ active->setReadBufferSize(256);
+ enterLoop(10);
+ QVERIFY2(!timeout(), "Network timeout");
+ QCOMPARE(active->bytesAvailable(), qint64(data.size()));
+
+ // drain it and compare
+ QCOMPARE(active->readAll(), data);
+
+ delete active;
+}
+
+void tst_QTcpSocket::slotIncreaseReadBufferSizeReadyRead()
+{
+ QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
+ const int currentBufferSize = socket->readBufferSize();
+ QCOMPARE(currentBufferSize, socket->bytesAvailable());
+ if (currentBufferSize == 256)
+ socket->setReadBufferSize(384);
+ else if (currentBufferSize == 384)
+ socket->setReadBufferSize(512);
+ else if (currentBufferSize == 512)
+ exitLoopSlot();
+ else // should not happen
+ qFatal("buffer size was %d", currentBufferSize);
+}
+
void tst_QTcpSocket::taskQtBug5799ConnectionErrorWaitForConnected()
{
QFETCH_GLOBAL(bool, setProxy);
@@ -2500,6 +2575,7 @@ void tst_QTcpSocket::taskQtBug7054TimeoutErrorResetting()
QVERIFY(socket->error() == QAbstractSocket::RemoteHostClosedError);
}
+#ifndef QT_NO_NETWORKPROXY
void tst_QTcpSocket::invalidProxy_data()
{
QTest::addColumn<int>("type");
@@ -2676,6 +2752,7 @@ void tst_QTcpSocket::proxyFactory()
delete socket;
}
+#endif // !QT_NO_NETWORKPROXY
// there is a similar test inside tst_qtcpserver that uses the event loop instead
void tst_QTcpSocket::qtbug14268_peek()
diff --git a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
index f08afaa9a5..f3cae6f4eb 100644
--- a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
+++ b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
@@ -162,8 +162,10 @@ void tst_QUdpSocket::initTestCase_data()
QTest::addColumn<int>("proxyType");
QTest::newRow("WithoutProxy") << false << 0;
+#ifndef QT_NO_SOCKS5
if (!newTestServer)
QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy);
+#endif
#ifndef QT_NO_BEARERMANAGEMENT
netConfMan = new QNetworkConfigurationManager(this);
@@ -186,16 +188,22 @@ void tst_QUdpSocket::init()
{
QFETCH_GLOBAL(bool, setProxy);
if (setProxy) {
+#ifndef QT_NO_SOCKS5
QFETCH_GLOBAL(int, proxyType);
if (proxyType == QNetworkProxy::Socks5Proxy) {
QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
}
+#else
+ QSKIP("No proxy support");
+#endif // !QT_NO_SOCKS5
}
}
void tst_QUdpSocket::cleanup()
{
+#ifndef QT_NO_NETWORKPROXY
QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
+#endif // !QT_NO_NETWORKPROXY
}
@@ -265,9 +273,13 @@ void tst_QUdpSocket::broadcasting()
{
QFETCH_GLOBAL(bool, setProxy);
if (setProxy) {
+#ifndef QT_NO_NETWORKPROXY
QFETCH_GLOBAL(int, proxyType);
if (proxyType == QNetworkProxy::Socks5Proxy)
QSKIP("With socks5 Broadcast is not supported.");
+#else // !QT_NO_NETWORKPROXY
+ QSKIP("No proxy support");
+#endif // QT_NO_NETWORKPROXY
}
#ifdef Q_OS_AIX
QSKIP("Broadcast does not work on darko");
@@ -761,9 +773,13 @@ void tst_QUdpSocket::bindMode()
{
QFETCH_GLOBAL(bool, setProxy);
if (setProxy) {
+#ifndef QT_NO_NETWORKPROXY
QFETCH_GLOBAL(int, proxyType);
if (proxyType == QNetworkProxy::Socks5Proxy)
QSKIP("With socks5 explicit port binding is not supported.");
+#else // !QT_NO_NETWORKPROXY
+ QSKIP("No proxy support");
+#endif // QT_NO_NETWORKPROXY
}
QUdpSocket socket;
diff --git a/tests/auto/network/socket/socket.pro b/tests/auto/network/socket/socket.pro
index 6d86eab209..436ebe5c7f 100644
--- a/tests/auto/network/socket/socket.pro
+++ b/tests/auto/network/socket/socket.pro
@@ -14,3 +14,7 @@ SUBDIRS=\
qtcpsocket \
qhttpsocketengine \
qsocks5socketengine \
+
+winrt: SUBDIRS -= \
+ qhttpsocketengine \
+ qsocks5socketengine \