speed up tst_QLocalSocket::readBufferOverflow
authorJoerg Bornemann <joerg.bornemann@digia.com>
Fri, 2 Nov 2012 11:25:58 +0000 (12:25 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 2 Nov 2012 14:59:57 +0000 (15:59 +0100)
Ifdef out waitForBytesWritten on Windows.
See comment in source.

Change-Id: I7a2268d2634c2524cd8291c72dd9708e430e314e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp

index 4f6fc46..ed00d7d 100644 (file)
@@ -555,7 +555,16 @@ void tst_QLocalSocket::readBufferOverflow()
     char buffer[dataBufferSize];
     memset(buffer, 0, dataBufferSize);
     serverSocket->write(buffer, dataBufferSize);
+#ifndef Q_OS_WIN
+    // The data is not immediately sent, but buffered.
+    // On Windows, the flushing is done asynchronously by a separate thread.
+    // However, this operation will never complete as long as the data is not
+    // read by the other end, so the call below always times out.
+    // On Unix, the flushing is synchronous and thus needs to be done before
+    // attempting to read the data in the same thread. Buffering by the OS
+    // prevents the deadlock seen on Windows.
     serverSocket->waitForBytesWritten();
+#endif
 
     // wait until the first 128 bytes are ready to read
     QVERIFY(client.waitForReadyRead());