summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJanne Anttila <janne.anttila@digia.com>2009-05-06 13:41:38 (GMT)
committerJanne Anttila <janne.anttila@digia.com>2009-05-06 13:41:38 (GMT)
commitc4e7dc4467eb11fb18867a8a5f5bc830ceb73e28 (patch)
tree80298f1ae17b831d87f464e61cd808e0811f598b /tests
parente6485b618cc8126d361e41c8a2c7862f604498cc (diff)
downloadQt-c4e7dc4467eb11fb18867a8a5f5bc830ceb73e28.zip
Qt-c4e7dc4467eb11fb18867a8a5f5bc830ceb73e28.tar.gz
Qt-c4e7dc4467eb11fb18867a8a5f5bc830ceb73e28.tar.bz2
Fix to tst_qsslsocket::disconnectFromHostWhenConnected test case.
I don't understand how socket->waitForDisconnected can work on other platforms since socket->write will end to: QMetaObject::invokeMethod(this, "_q_flushWriteBuffer", Qt::QueuedConnection); In order that _q_flushWriteBuffer will be called the eventloop need to run. If we just call waitForDisconnected, which blocks the whole thread how that can happen? Changed the test for Symbian OS to use evenloop since I'm not 100% sure. Probably this can change can be applied for other platforms as well without changing the test case` logic?
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qsslsocket/tst_qsslsocket.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/tests/auto/qsslsocket/tst_qsslsocket.cpp b/tests/auto/qsslsocket/tst_qsslsocket.cpp
index 8dfbedd..0ff6692 100644
--- a/tests/auto/qsslsocket/tst_qsslsocket.cpp
+++ b/tests/auto/qsslsocket/tst_qsslsocket.cpp
@@ -1505,12 +1505,27 @@ void tst_QSslSocket::disconnectFromHostWhenConnected()
QSslSocketPtr socket = newSocket();
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
socket->ignoreSslErrors();
+#ifndef Q_OS_SYMBIAN
QVERIFY(socket->waitForEncrypted(5000));
+#else
+ QVERIFY(socket->waitForEncrypted(10000));
+#endif
socket->write("XXXX LOGOUT\r\n");
QCOMPARE(socket->state(), QAbstractSocket::ConnectedState);
socket->disconnectFromHost();
QCOMPARE(socket->state(), QAbstractSocket::ClosingState);
- QVERIFY(socket->waitForDisconnected(5000));
+#ifdef Q_OS_SYMBIAN
+ // I don't understand how socket->waitForDisconnected can work on other platforms
+ // since socket->write will end to:
+ // QMetaObject::invokeMethod(this, "_q_flushWriteBuffer", Qt::QueuedConnection);
+ // In order that _q_flushWriteBuffer will be called the eventloop need to run
+ // If we just call waitForDisconnected, which blocks the whole thread how that can happen?
+ connect(socket, SIGNAL(disconnected()), this, SLOT(exitLoop()));
+ enterLoop(5);
+ QVERIFY(!timeout());
+#else
+ QVERIFY(socket->waitForDisconnected(5000));
+#endif
QCOMPARE(socket->bytesToWrite(), qint64(0));
}