diff options
Diffstat (limited to 'tests/auto/network/socket')
15 files changed, 336 insertions, 266 deletions
diff --git a/tests/auto/network/socket/platformsocketengine/BLACKLIST b/tests/auto/network/socket/platformsocketengine/BLACKLIST new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/tests/auto/network/socket/platformsocketengine/BLACKLIST @@ -0,0 +1 @@ +windows diff --git a/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp b/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp index 9bd89cdf4f..71125f463a 100644 --- a/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp +++ b/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp @@ -130,18 +130,18 @@ void tst_PlatformSocketEngine::construction() // Initialize device QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); QVERIFY(socketDevice.isValid()); - QVERIFY(socketDevice.protocol() == QAbstractSocket::IPv4Protocol); - QVERIFY(socketDevice.socketType() == QAbstractSocket::TcpSocket); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.protocol(), QAbstractSocket::IPv4Protocol); + QCOMPARE(socketDevice.socketType(), QAbstractSocket::TcpSocket); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); QVERIFY(socketDevice.socketDescriptor() != -1); - QVERIFY(socketDevice.localAddress() == QHostAddress()); - QVERIFY(socketDevice.localPort() == 0); - QVERIFY(socketDevice.peerAddress() == QHostAddress()); - QVERIFY(socketDevice.peerPort() == 0); - QVERIFY(socketDevice.error() == QAbstractSocket::UnknownSocketError); + QCOMPARE(socketDevice.localAddress(), QHostAddress()); + QCOMPARE(socketDevice.localPort(), quint16(0)); + QCOMPARE(socketDevice.peerAddress(), QHostAddress()); + QCOMPARE(socketDevice.peerPort(), quint16(0)); + QCOMPARE(socketDevice.error(), QAbstractSocket::UnknownSocketError); QTest::ignoreMessage(QtWarningMsg, PLATFORMSOCKETENGINESTRING "::bytesAvailable() was called in QAbstractSocket::UnconnectedState"); - QVERIFY(socketDevice.bytesAvailable() == -1); + QCOMPARE(socketDevice.bytesAvailable(), -1); QTest::ignoreMessage(QtWarningMsg, PLATFORMSOCKETENGINESTRING "::hasPendingDatagrams() was called in QAbstractSocket::UnconnectedState"); QVERIFY(!socketDevice.hasPendingDatagrams()); @@ -154,16 +154,16 @@ void tst_PlatformSocketEngine::simpleConnectToIMAP() // Initialize device QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); const bool isConnected = socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143); if (!isConnected) { - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectingState); QVERIFY(socketDevice.waitForWrite()); - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectedState); } - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState); - QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP()); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectedState); + QCOMPARE(socketDevice.peerAddress(), QtNetworkSettings::serverIP()); // Wait for the greeting QVERIFY(socketDevice.waitForRead()); @@ -200,8 +200,8 @@ void tst_PlatformSocketEngine::simpleConnectToIMAP() QVERIFY(socketDevice.waitForRead()); char c; QVERIFY(socketDevice.read(&c, sizeof(c)) == -1); - QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.error(), QAbstractSocket::RemoteHostClosedError); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); } //--------------------------------------------------------------------------- @@ -213,13 +213,13 @@ void tst_PlatformSocketEngine::udpLoopbackTest() QVERIFY(udpSocket.initialize(QAbstractSocket::UdpSocket)); QVERIFY(udpSocket.isValid()); QVERIFY(udpSocket.socketDescriptor() != -1); - QVERIFY(udpSocket.protocol() == QAbstractSocket::IPv4Protocol); - QVERIFY(udpSocket.socketType() == QAbstractSocket::UdpSocket); - QVERIFY(udpSocket.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(udpSocket.protocol(), QAbstractSocket::IPv4Protocol); + QCOMPARE(udpSocket.socketType(), QAbstractSocket::UdpSocket); + QCOMPARE(udpSocket.state(), QAbstractSocket::UnconnectedState); // Bind #1 to localhost QVERIFY(udpSocket.bind(QHostAddress("127.0.0.1"), 0)); - QVERIFY(udpSocket.state() == QAbstractSocket::BoundState); + QCOMPARE(udpSocket.state(), QAbstractSocket::BoundState); quint16 port = udpSocket.localPort(); QVERIFY(port != 0); @@ -229,7 +229,7 @@ void tst_PlatformSocketEngine::udpLoopbackTest() // Connect device #2 to #1 QVERIFY(udpSocket2.connectToHost(QHostAddress("127.0.0.1"), port)); - QVERIFY(udpSocket2.state() == QAbstractSocket::ConnectedState); + QCOMPARE(udpSocket2.state(), QAbstractSocket::ConnectedState); // Write a message to #1 QByteArray message1 = "hei der"; @@ -243,13 +243,13 @@ void tst_PlatformSocketEngine::udpLoopbackTest() QVERIFY(available > 0); QByteArray answer; answer.resize(available); - QHostAddress senderAddress; - quint16 senderPort = 0; - QVERIFY(udpSocket.readDatagram(answer.data(), answer.size(), - &senderAddress, - &senderPort) == message1.size()); - QVERIFY(senderAddress == QHostAddress("127.0.0.1")); - QVERIFY(senderPort != 0); + QIpPacketHeader header; + QCOMPARE(udpSocket.readDatagram(answer.data(), answer.size(), + &header, QAbstractSocketEngine::WantDatagramSender), + qint64(message1.size())); + QVERIFY(header.senderAddress == QHostAddress("127.0.0.1")); + QCOMPARE(header.senderAddress, QHostAddress("127.0.0.1")); + QVERIFY(header.senderPort != 0); } //--------------------------------------------------------------------------- @@ -261,13 +261,13 @@ void tst_PlatformSocketEngine::udpIPv6LoopbackTest() bool init = udpSocket.initialize(QAbstractSocket::UdpSocket, QAbstractSocket::IPv6Protocol); if (!init) { - QVERIFY(udpSocket.error() == QAbstractSocket::UnsupportedSocketOperationError); + QCOMPARE(udpSocket.error(), QAbstractSocket::UnsupportedSocketOperationError); } else { - QVERIFY(udpSocket.protocol() == QAbstractSocket::IPv6Protocol); + QCOMPARE(udpSocket.protocol(), QAbstractSocket::IPv6Protocol); // Bind #1 to localhost QVERIFY(udpSocket.bind(QHostAddress("::1"), 0)); - QVERIFY(udpSocket.state() == QAbstractSocket::BoundState); + QCOMPARE(udpSocket.state(), QAbstractSocket::BoundState); quint16 port = udpSocket.localPort(); QVERIFY(port != 0); @@ -277,7 +277,7 @@ void tst_PlatformSocketEngine::udpIPv6LoopbackTest() // Connect device #2 to #1 QVERIFY(udpSocket2.connectToHost(QHostAddress("::1"), port)); - QVERIFY(udpSocket2.state() == QAbstractSocket::ConnectedState); + QCOMPARE(udpSocket2.state(), QAbstractSocket::ConnectedState); // Write a message to #1 QByteArray message1 = "hei der"; @@ -291,13 +291,13 @@ void tst_PlatformSocketEngine::udpIPv6LoopbackTest() QVERIFY(available > 0); QByteArray answer; answer.resize(available); - QHostAddress senderAddress; - quint16 senderPort = 0; - QVERIFY(udpSocket.readDatagram(answer.data(), answer.size(), - &senderAddress, - &senderPort) == message1.size()); - QVERIFY(senderAddress == QHostAddress("::1")); - QVERIFY(senderPort != 0); + QIpPacketHeader header; + QCOMPARE(udpSocket.readDatagram(answer.data(), answer.size(), + &header, QAbstractSocketEngine::WantDatagramSender), + qint64(message1.size())); + QVERIFY(header.senderAddress == QHostAddress("::1")); + QCOMPARE(header.senderAddress, QHostAddress("::1")); + QVERIFY(header.senderPort != 0); } } @@ -314,7 +314,7 @@ void tst_PlatformSocketEngine::broadcastTest() // Bind to any port on all interfaces QVERIFY(broadcastSocket.bind(QHostAddress::Any, 0)); - QVERIFY(broadcastSocket.state() == QAbstractSocket::BoundState); + QCOMPARE(broadcastSocket.state(), QAbstractSocket::BoundState); quint16 port = broadcastSocket.localPort(); QVERIFY(port > 0); @@ -323,9 +323,9 @@ void tst_PlatformSocketEngine::broadcastTest() = "MOOT wtf is a MOOT? talk english not your sutpiD ENGLISH."; qint64 written = broadcastSocket.writeDatagram(trollMessage.data(), trollMessage.size(), - QHostAddress::Broadcast, - port); + QIpPacketHeader(QHostAddress::Broadcast, port)); + QVERIFY2(written != -1, qt_error_string().toLocal8Bit()); QCOMPARE((int)written, trollMessage.size()); // Wait until we receive it ourselves @@ -354,20 +354,20 @@ void tst_PlatformSocketEngine::serverTest() // Bind to any port on all interfaces QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0)); - QVERIFY(server.state() == QAbstractSocket::BoundState); + QCOMPARE(server.state(), QAbstractSocket::BoundState); quint16 port = server.localPort(); // Listen for incoming connections QVERIFY(server.listen()); - QVERIFY(server.state() == QAbstractSocket::ListeningState); + QCOMPARE(server.state(), QAbstractSocket::ListeningState); // Initialize a Tcp socket PLATFORMSOCKETENGINE client; QVERIFY(client.initialize(QAbstractSocket::TcpSocket)); if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) { - QVERIFY(client.state() == QAbstractSocket::ConnectingState); + QCOMPARE(client.state(), QAbstractSocket::ConnectingState); QVERIFY(client.waitForWrite()); - QVERIFY(client.state() == QAbstractSocket::ConnectedState); + QCOMPARE(client.state(), QAbstractSocket::ConnectedState); } // The server accepts the connection @@ -378,7 +378,7 @@ void tst_PlatformSocketEngine::serverTest() // socket descriptor from accept(). It's pre-connected. PLATFORMSOCKETENGINE serverSocket; QVERIFY(serverSocket.initialize(socketDescriptor)); - QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState); + QCOMPARE(serverSocket.state(), QAbstractSocket::ConnectedState); // The server socket sends a greeting to the clietn QByteArray greeting = "Greetings!"; @@ -407,13 +407,13 @@ void tst_PlatformSocketEngine::udpLoopbackPerformance() QVERIFY(udpSocket.initialize(QAbstractSocket::UdpSocket)); QVERIFY(udpSocket.isValid()); QVERIFY(udpSocket.socketDescriptor() != -1); - QVERIFY(udpSocket.protocol() == QAbstractSocket::IPv4Protocol); - QVERIFY(udpSocket.socketType() == QAbstractSocket::UdpSocket); - QVERIFY(udpSocket.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(udpSocket.protocol(), QAbstractSocket::IPv4Protocol); + QCOMPARE(udpSocket.socketType(), QAbstractSocket::UdpSocket); + QCOMPARE(udpSocket.state(), QAbstractSocket::UnconnectedState); // Bind #1 to localhost QVERIFY(udpSocket.bind(QHostAddress("127.0.0.1"), 0)); - QVERIFY(udpSocket.state() == QAbstractSocket::BoundState); + QCOMPARE(udpSocket.state(), QAbstractSocket::BoundState); quint16 port = udpSocket.localPort(); QVERIFY(port != 0); @@ -423,7 +423,7 @@ void tst_PlatformSocketEngine::udpLoopbackPerformance() // Connect device #2 to #1 QVERIFY(udpSocket2.connectToHost(QHostAddress("127.0.0.1"), port)); - QVERIFY(udpSocket2.state() == QAbstractSocket::ConnectedState); + QCOMPARE(udpSocket2.state(), QAbstractSocket::ConnectedState); const int messageSize = 8192; QByteArray message1(messageSize, '@'); @@ -459,12 +459,12 @@ void tst_PlatformSocketEngine::tcpLoopbackPerformance() // Bind to any port on all interfaces QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0)); - QVERIFY(server.state() == QAbstractSocket::BoundState); + QCOMPARE(server.state(), QAbstractSocket::BoundState); quint16 port = server.localPort(); // Listen for incoming connections QVERIFY(server.listen()); - QVERIFY(server.state() == QAbstractSocket::ListeningState); + QCOMPARE(server.state(), QAbstractSocket::ListeningState); // Initialize a Tcp socket PLATFORMSOCKETENGINE client; @@ -472,9 +472,9 @@ void tst_PlatformSocketEngine::tcpLoopbackPerformance() // Connect to our server if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) { - QVERIFY(client.state() == QAbstractSocket::ConnectingState); + QCOMPARE(client.state(), QAbstractSocket::ConnectingState); QVERIFY(client.waitForWrite()); - QVERIFY(client.state() == QAbstractSocket::ConnectedState); + QCOMPARE(client.state(), QAbstractSocket::ConnectedState); } // The server accepts the connection @@ -485,7 +485,7 @@ void tst_PlatformSocketEngine::tcpLoopbackPerformance() // socket descriptor from accept(). It's pre-connected. PLATFORMSOCKETENGINE serverSocket; QVERIFY(serverSocket.initialize(socketDescriptor)); - QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState); + QCOMPARE(serverSocket.state(), QAbstractSocket::ConnectedState); const int messageSize = 1024 * 256; QByteArray message1(messageSize, '@'); @@ -562,7 +562,7 @@ void tst_PlatformSocketEngine::bind() PLATFORMSOCKETENGINE binder; QVERIFY(binder.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); QVERIFY(!binder.bind(QHostAddress::AnyIPv4, 82)); - QVERIFY(binder.error() == QAbstractSocket::SocketAccessError); + QCOMPARE(binder.error(), QAbstractSocket::SocketAccessError); #endif PLATFORMSOCKETENGINE binder2; @@ -572,7 +572,7 @@ void tst_PlatformSocketEngine::bind() PLATFORMSOCKETENGINE binder3; QVERIFY(binder3.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); QVERIFY(!binder3.bind(QHostAddress::AnyIPv4, 31180)); - QVERIFY(binder3.error() == QAbstractSocket::AddressInUseError); + QCOMPARE(binder3.error(), QAbstractSocket::AddressInUseError); if (QtNetworkSettings::hasIPv6()) { PLATFORMSOCKETENGINE binder4; @@ -582,7 +582,7 @@ void tst_PlatformSocketEngine::bind() PLATFORMSOCKETENGINE binder5; QVERIFY(binder5.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv6Protocol)); QVERIFY(!binder5.bind(QHostAddress::AnyIPv6, 31180)); - QVERIFY(binder5.error() == QAbstractSocket::AddressInUseError); + QCOMPARE(binder5.error(), QAbstractSocket::AddressInUseError); } PLATFORMSOCKETENGINE binder6; @@ -599,11 +599,11 @@ void tst_PlatformSocketEngine::networkError() const bool isConnected = client.connectToHost(QtNetworkSettings::serverIP(), 143); if (!isConnected) { - QVERIFY(client.state() == QAbstractSocket::ConnectingState); + QCOMPARE(client.state(), QAbstractSocket::ConnectingState); QVERIFY(client.waitForWrite()); - QVERIFY(client.state() == QAbstractSocket::ConnectedState); + QCOMPARE(client.state(), QAbstractSocket::ConnectedState); } - QVERIFY(client.state() == QAbstractSocket::ConnectedState); + QCOMPARE(client.state(), QAbstractSocket::ConnectedState); // An unexpected network error! #ifdef Q_OS_WINRT @@ -636,7 +636,7 @@ void tst_PlatformSocketEngine::invalidSend() QTest::ignoreMessage(QtWarningMsg, PLATFORMSOCKETENGINESTRING "::writeDatagram() was" " called by a socket other than QAbstractSocket::UdpSocket"); - QCOMPARE(socket.writeDatagram("hei", 3, QHostAddress::LocalHost, 143), + QCOMPARE(socket.writeDatagram("hei", 3, QIpPacketHeader(QHostAddress::LocalHost, 143)), (qlonglong) -1); } @@ -650,19 +650,19 @@ void tst_PlatformSocketEngine::receiveUrgentData() // Bind to any port on all interfaces QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0)); - QVERIFY(server.state() == QAbstractSocket::BoundState); + QCOMPARE(server.state(), QAbstractSocket::BoundState); quint16 port = server.localPort(); QVERIFY(server.listen()); - QVERIFY(server.state() == QAbstractSocket::ListeningState); + QCOMPARE(server.state(), QAbstractSocket::ListeningState); PLATFORMSOCKETENGINE client; QVERIFY(client.initialize(QAbstractSocket::TcpSocket)); if (!client.connectToHost(QHostAddress("127.0.0.1"), port)) { - QVERIFY(client.state() == QAbstractSocket::ConnectingState); + QCOMPARE(client.state(), QAbstractSocket::ConnectingState); QVERIFY(client.waitForWrite()); - QVERIFY(client.state() == QAbstractSocket::ConnectedState); + QCOMPARE(client.state(), QAbstractSocket::ConnectedState); } int socketDescriptor = server.accept(); @@ -670,7 +670,7 @@ void tst_PlatformSocketEngine::receiveUrgentData() PLATFORMSOCKETENGINE serverSocket; QVERIFY(serverSocket.initialize(socketDescriptor)); - QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState); + QCOMPARE(serverSocket.state(), QAbstractSocket::ConnectedState); char msg; int available; diff --git a/tests/auto/network/socket/qabstractsocket/tst_qabstractsocket.cpp b/tests/auto/network/socket/qabstractsocket/tst_qabstractsocket.cpp index 76c36831bd..1c79b6c016 100644 --- a/tests/auto/network/socket/qabstractsocket/tst_qabstractsocket.cpp +++ b/tests/auto/network/socket/qabstractsocket/tst_qabstractsocket.cpp @@ -37,11 +37,6 @@ #include <qcoreapplication.h> #include <qdebug.h> #include <qabstractsocket.h> -#include <qtcpserver.h> -#include <qtcpsocket.h> -#ifndef QT_NO_SSL -#include <qsslsocket.h> -#endif class tst_QAbstractSocket : public QObject { @@ -52,9 +47,7 @@ public: virtual ~tst_QAbstractSocket(); private slots: - void initTestCase(); void getSetCheck(); - void serverDisconnectWithBuffered(); }; tst_QAbstractSocket::tst_QAbstractSocket() @@ -73,11 +66,6 @@ public: void setPeerPort(quint16 port) { QAbstractSocket::setPeerPort(port); } }; -void tst_QAbstractSocket::initTestCase() -{ - qRegisterMetaType<QAbstractSocket::SocketState>("QAbstractSocket::SocketState"); -} - // Testing get/set functions void tst_QAbstractSocket::getSetCheck() { @@ -106,46 +94,5 @@ void tst_QAbstractSocket::getSetCheck() QCOMPARE(quint16(0xffff), obj1.peerPort()); } -// Test buffered socket being properly closed on remote disconnect -void tst_QAbstractSocket::serverDisconnectWithBuffered() -{ - QTcpServer tcpServer; -#ifndef QT_NO_SSL - QSslSocket testSocket; -#else - QTcpSocket testSocket; -#endif - - QVERIFY(tcpServer.listen(QHostAddress::LocalHost)); - testSocket.connectToHost(tcpServer.serverAddress(), tcpServer.serverPort()); - // Accept connection on server side - QVERIFY(tcpServer.waitForNewConnection(5000)); - QTcpSocket *newConnection = tcpServer.nextPendingConnection(); - // Send one char and drop link - QVERIFY(newConnection != NULL); - QVERIFY(newConnection->putChar(0)); - QVERIFY(newConnection->flush()); - delete newConnection; - - QVERIFY(testSocket.waitForConnected(5000)); // ready for write - QVERIFY(testSocket.state() == QAbstractSocket::ConnectedState); - - QSignalSpy spyStateChanged(&testSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState))); - QSignalSpy spyDisconnected(&testSocket, SIGNAL(disconnected())); - - QVERIFY(testSocket.waitForReadyRead(5000)); // have one char already in internal buffer - char buf[128]; - QCOMPARE(testSocket.read(buf, sizeof(buf)), Q_INT64_C(1)); - if (testSocket.state() != QAbstractSocket::UnconnectedState) { - QVERIFY(testSocket.waitForDisconnected(5000)); - QVERIFY(testSocket.state() == QAbstractSocket::UnconnectedState); - } - // Test signal emitting - QVERIFY(spyDisconnected.count() == 1); - QVERIFY(spyStateChanged.count() > 0); - QVERIFY(qvariant_cast<QAbstractSocket::SocketState>(spyStateChanged.last().first()) - == QAbstractSocket::UnconnectedState); -} - QTEST_MAIN(tst_QAbstractSocket) #include "tst_qabstractsocket.moc" diff --git a/tests/auto/network/socket/qhttpsocketengine/BLACKLIST b/tests/auto/network/socket/qhttpsocketengine/BLACKLIST new file mode 100644 index 0000000000..8e1a55995e --- /dev/null +++ b/tests/auto/network/socket/qhttpsocketengine/BLACKLIST @@ -0,0 +1 @@ +windows diff --git a/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp b/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp index 10e8c95fc0..f6662b6712 100644 --- a/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp +++ b/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp @@ -72,6 +72,7 @@ private slots: void downloadBigFile(); // void tcpLoopbackPerformance(); void passwordAuth(); + void ensureEofTriggersNotification(); protected slots: void tcpSocketNonBlocking_hostFound(); @@ -164,18 +165,18 @@ void tst_QHttpSocketEngine::construction() // Initialize device QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); QVERIFY(socketDevice.isValid()); - QVERIFY(socketDevice.protocol() == QAbstractSocket::IPv4Protocol); - QVERIFY(socketDevice.socketType() == QAbstractSocket::TcpSocket); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.protocol(), QAbstractSocket::IPv4Protocol); + QCOMPARE(socketDevice.socketType(), QAbstractSocket::TcpSocket); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); // QVERIFY(socketDevice.socketDescriptor() != -1); - QVERIFY(socketDevice.localAddress() == QHostAddress()); - QVERIFY(socketDevice.localPort() == 0); - QVERIFY(socketDevice.peerAddress() == QHostAddress()); - QVERIFY(socketDevice.peerPort() == 0); - QVERIFY(socketDevice.error() == QAbstractSocket::UnknownSocketError); + QCOMPARE(socketDevice.localAddress(), QHostAddress()); + QCOMPARE(socketDevice.localPort(), quint16(0)); + QCOMPARE(socketDevice.peerAddress(), QHostAddress()); + QCOMPARE(socketDevice.peerPort(), quint16(0)); + QCOMPARE(socketDevice.error(), QAbstractSocket::UnknownSocketError); //QTest::ignoreMessage(QtWarningMsg, "QSocketLayer::bytesAvailable() was called in QAbstractSocket::UnconnectedState"); - QVERIFY(socketDevice.bytesAvailable() == 0); + QCOMPARE(socketDevice.bytesAvailable(), 0); //QTest::ignoreMessage(QtWarningMsg, "QSocketLayer::hasPendingDatagrams() was called in QAbstractSocket::UnconnectedState"); QVERIFY(!socketDevice.hasPendingDatagrams()); @@ -299,15 +300,15 @@ void tst_QHttpSocketEngine::simpleConnectToIMAP() // Initialize device QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); socketDevice.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128)); QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143)); - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectingState); QVERIFY(socketDevice.waitForWrite()); - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState); - QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP()); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectedState); + QCOMPARE(socketDevice.peerAddress(), QtNetworkSettings::serverIP()); QVERIFY(!socketDevice.localAddress().isNull()); QVERIFY(socketDevice.localPort() > 0); @@ -345,8 +346,8 @@ void tst_QHttpSocketEngine::simpleConnectToIMAP() QVERIFY(socketDevice.waitForRead()); char c; QCOMPARE(socketDevice.read(&c, sizeof(c)), (qint64) -1); - QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.error(), QAbstractSocket::RemoteHostClosedError); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); } //--------------------------------------------------------------------------- @@ -360,14 +361,14 @@ void tst_QHttpSocketEngine::simpleErrorsAndStates() socketDevice.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128)); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); QVERIFY(!socketDevice.connectToHost(QHostAddress(QtNetworkSettings::serverName()), 8088)); - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectingState); if (socketDevice.waitForWrite(30000)) { QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState || socketDevice.state() == QAbstractSocket::UnconnectedState); } else { - QVERIFY(socketDevice.error() == QAbstractSocket::SocketTimeoutError); + QCOMPARE(socketDevice.error(), QAbstractSocket::SocketTimeoutError); } } @@ -381,12 +382,12 @@ void tst_QHttpSocketEngine::tcpLoopbackPerformance() // Bind to any port on all interfaces QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0)); - QVERIFY(server.state() == QAbstractSocket::BoundState); + QCOMPARE(server.state(), QAbstractSocket::BoundState); quint16 port = server.localPort(); // Listen for incoming connections QVERIFY(server.listen()); - QVERIFY(server.state() == QAbstractSocket::ListeningState); + QCOMPARE(server.state(), QAbstractSocket::ListeningState); // Initialize a Tcp socket QHttpSocketEngine client; @@ -408,7 +409,7 @@ void tst_QHttpSocketEngine::tcpLoopbackPerformance() // socket descriptor from accept(). It's pre-connected. QSocketLayer serverSocket; QVERIFY(serverSocket.initialize(socketDescriptor)); - QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState); + QCOMPARE(serverSocket.state(), QAbstractSocket::ConnectedState); const int messageSize = 1024 * 256; QByteArray message1(messageSize, '@'); @@ -544,7 +545,7 @@ void tst_QHttpSocketEngine::tcpSocketNonBlockingTest() QFAIL("Timed out"); } - QVERIFY(tcpSocketNonBlocking_totalWritten == 8); + QCOMPARE(tcpSocketNonBlocking_totalWritten, 8); QTestEventLoop::instance().enterLoop(30); @@ -569,7 +570,7 @@ void tst_QHttpSocketEngine::tcpSocketNonBlockingTest() QFAIL("Timed out"); } - QVERIFY(tcpSocketNonBlocking_totalWritten == 10); + QCOMPARE(tcpSocketNonBlocking_totalWritten, 10); // Wait for greeting QTestEventLoop::instance().enterLoop(30); @@ -637,7 +638,7 @@ void tst_QHttpSocketEngine::downloadBigFile() QFAIL("Network operation timed out"); QByteArray hostName = QtNetworkSettings::serverName().toLatin1(); - QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState); + QCOMPARE(tmpSocket->state(), QAbstractSocket::ConnectedState); QVERIFY(tmpSocket->write("GET /qtest/mediumfile HTTP/1.0\r\n") > 0); QVERIFY(tmpSocket->write("Host: ") > 0); QVERIFY(tmpSocket->write(hostName.data()) > 0); @@ -659,7 +660,7 @@ void tst_QHttpSocketEngine::downloadBigFile() QVERIFY(bytesAvailable >= 10000000); - QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState); + QCOMPARE(tmpSocket->state(), QAbstractSocket::ConnectedState); qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s", bytesAvailable / (1024.0 * 1024.0), @@ -689,15 +690,15 @@ void tst_QHttpSocketEngine::passwordAuth() // Initialize device QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); socketDevice.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128, "qsockstest", "password")); QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143)); - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectingState); QVERIFY(socketDevice.waitForWrite()); - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState); - QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP()); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectedState); + QCOMPARE(socketDevice.peerAddress(), QtNetworkSettings::serverIP()); // Wait for the greeting QVERIFY(socketDevice.waitForRead()); @@ -733,11 +734,57 @@ void tst_QHttpSocketEngine::passwordAuth() QVERIFY(socketDevice.waitForRead()); char c; QVERIFY(socketDevice.read(&c, sizeof(c)) == -1); - QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.error(), QAbstractSocket::RemoteHostClosedError); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); } //---------------------------------------------------------------------------------- +void tst_QHttpSocketEngine::ensureEofTriggersNotification() +{ + QList<QByteArray> serverData; + // Set the handshake and server response data + serverData << "HTTP/1.0 200 Connection established\r\n\r\n" << "0"; + MiniHttpServer server(serverData); + + QTcpSocket socket; + connect(&socket, SIGNAL(connected()), SLOT(exitLoopSlot())); + socket.setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, server.serverAddress().toString(), + server.serverPort())); + socket.connectToHost("0.1.2.3", 12345); + + QTestEventLoop::instance().enterLoop(5); + if (QTestEventLoop::instance().timeout()) + QFAIL("Connect timed out"); + + QCOMPARE(socket.state(), QTcpSocket::ConnectedState); + // Disable read notification on server response + socket.setReadBufferSize(1); + socket.putChar(0); + + // Wait for the response + connect(&socket, SIGNAL(readyRead()), SLOT(exitLoopSlot())); + QTestEventLoop::instance().enterLoop(5); + if (QTestEventLoop::instance().timeout()) + QFAIL("Read timed out"); + + QCOMPARE(socket.state(), QTcpSocket::ConnectedState); + QCOMPARE(socket.bytesAvailable(), 1); + // Trigger a read notification + socket.readAll(); + // Check for pending EOF at input + QCOMPARE(socket.bytesAvailable(), 0); + QCOMPARE(socket.state(), QTcpSocket::ConnectedState); + + // Try to read EOF + connect(&socket, SIGNAL(disconnected()), SLOT(exitLoopSlot())); + QTestEventLoop::instance().enterLoop(5); + if (QTestEventLoop::instance().timeout()) + QFAIL("Disconnect timed out"); + + // Check that it's closed + QCOMPARE(socket.state(), QTcpSocket::UnconnectedState); +} + QTEST_MAIN(tst_QHttpSocketEngine) #include "tst_qhttpsocketengine.moc" diff --git a/tests/auto/network/socket/qlocalsocket/BLACKLIST b/tests/auto/network/socket/qlocalsocket/BLACKLIST new file mode 100644 index 0000000000..11ddef30a5 --- /dev/null +++ b/tests/auto/network/socket/qlocalsocket/BLACKLIST @@ -0,0 +1,2 @@ +[processConnection:1 client] +windows diff --git a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp index 9130aff4e2..d7480a4109 100644 --- a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp +++ b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp @@ -247,8 +247,8 @@ void tst_QLocalSocket::socket_basic() QCOMPARE(socket.serverName(), QString()); QCOMPARE(socket.fullServerName(), QString()); socket.abort(); - QVERIFY(socket.bytesAvailable() == 0); - QVERIFY(socket.bytesToWrite() == 0); + QCOMPARE(socket.bytesAvailable(), 0); + QCOMPARE(socket.bytesToWrite(), 0); QCOMPARE(socket.canReadLine(), false); socket.close(); socket.disconnectFromServer(); @@ -256,7 +256,7 @@ void tst_QLocalSocket::socket_basic() QVERIFY(!socket.errorString().isEmpty()); QCOMPARE(socket.flush(), false); QCOMPARE(socket.isValid(), false); - QVERIFY(socket.readBufferSize() == 0); + QCOMPARE(socket.readBufferSize(), 0); socket.setReadBufferSize(0); //QCOMPARE(socket.socketDescriptor(), (qintptr)-1); QCOMPARE(socket.state(), QLocalSocket::UnconnectedState); @@ -376,13 +376,13 @@ void tst_QLocalSocket::listenAndConnect() QVERIFY(!socket->errorString().isEmpty()); QVERIFY(socket->error() != QLocalSocket::UnknownSocketError); QCOMPARE(socket->state(), QLocalSocket::UnconnectedState); - //QVERIFY(socket->socketDescriptor() == -1); + //QCOMPARE(socket->socketDescriptor(), -1); QCOMPARE(qvariant_cast<QLocalSocket::LocalSocketError>(spyError.first()[0]), QLocalSocket::ServerNotFoundError); } - QVERIFY(socket->bytesAvailable() == 0); - QVERIFY(socket->bytesToWrite() == 0); + QCOMPARE(socket->bytesAvailable(), 0); + QCOMPARE(socket->bytesToWrite(), 0); QCOMPARE(socket->canReadLine(), false); QCOMPARE(socket->flush(), false); QCOMPARE(socket->isValid(), canListen); @@ -433,7 +433,7 @@ void tst_QLocalSocket::listenAndConnect() } else { QVERIFY(server.serverName().isEmpty()); QVERIFY(server.fullServerName().isEmpty()); - QVERIFY(server.nextPendingConnection() == (QLocalSocket*)0); + QCOMPARE(server.nextPendingConnection(), (QLocalSocket*)0); QCOMPARE(spyNewConnection.count(), 0); QCOMPARE(server.hits.count(), 0); QVERIFY(!server.errorString().isEmpty()); @@ -617,7 +617,7 @@ void tst_QLocalSocket::readBufferOverflow() QVERIFY(client.waitForReadyRead()); QCOMPARE(client.read(buffer, readBufferSize), qint64(readBufferSize)); // no more bytes available - QVERIFY(client.bytesAvailable() == 0); + QCOMPARE(client.bytesAvailable(), 0); } // QLocalSocket/Server can take a name or path, check that it works as expected @@ -732,7 +732,10 @@ public: int done = clients; while (done > 0) { bool timedOut = true; - QVERIFY(server.waitForNewConnection(7000, &timedOut)); + QVERIFY2(server.waitForNewConnection(7000, &timedOut), + (QByteArrayLiteral("done=") + QByteArray::number(done) + + QByteArrayLiteral(", timedOut=") + + (timedOut ? "true" : "false")).constData()); QVERIFY(!timedOut); QLocalSocket *serverSocket = server.nextPendingConnection(); QVERIFY(serverSocket); @@ -913,7 +916,7 @@ void tst_QLocalSocket::waitForDisconnectByServer() QLocalSocket *serverSocket = server.nextPendingConnection(); QVERIFY(serverSocket); serverSocket->close(); - QVERIFY(serverSocket->state() == QLocalSocket::UnconnectedState); + QCOMPARE(serverSocket->state(), QLocalSocket::UnconnectedState); QVERIFY(socket.waitForDisconnected(3000)); QCOMPARE(spy.count(), 1); } @@ -1226,11 +1229,12 @@ void tst_QLocalSocket::verifyListenWithDescriptor() QVERIFY2(server.listen(listenSocket), "failed to start create QLocalServer with local socket"); #ifdef Q_OS_LINUX + const QChar at(QLatin1Char('@')); if (!bound) { - QVERIFY(server.serverName().at(0) == QLatin1Char('@')); - QVERIFY(server.fullServerName().at(0) == QLatin1Char('@')); + QCOMPARE(server.serverName().at(0), at); + QCOMPARE(server.fullServerName().at(0), at); } else if (abstract) { - QVERIFY2(server.fullServerName().at(0) == QLatin1Char('@'), "abstract sockets should start with a '@'"); + QVERIFY2(server.fullServerName().at(0) == at, "abstract sockets should start with a '@'"); } else { QCOMPARE(server.fullServerName(), path); if (path.contains(QLatin1String("/"))) { diff --git a/tests/auto/network/socket/qsocks5socketengine/BLACKLIST b/tests/auto/network/socket/qsocks5socketengine/BLACKLIST index bf4afa8c45..2a32a326d0 100644 --- a/tests/auto/network/socket/qsocks5socketengine/BLACKLIST +++ b/tests/auto/network/socket/qsocks5socketengine/BLACKLIST @@ -2,3 +2,5 @@ * [passwordAuth] * +[serverTest] +windows diff --git a/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp b/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp index 0ae9887773..8da656aab7 100644 --- a/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp +++ b/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp @@ -193,18 +193,18 @@ void tst_QSocks5SocketEngine::construction() // Initialize device QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); QVERIFY(socketDevice.isValid()); - QVERIFY(socketDevice.protocol() == QAbstractSocket::IPv4Protocol); - QVERIFY(socketDevice.socketType() == QAbstractSocket::TcpSocket); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.protocol(), QAbstractSocket::IPv4Protocol); + QCOMPARE(socketDevice.socketType(), QAbstractSocket::TcpSocket); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); // QVERIFY(socketDevice.socketDescriptor() != -1); - QVERIFY(socketDevice.localAddress() == QHostAddress()); - QVERIFY(socketDevice.localPort() == 0); - QVERIFY(socketDevice.peerAddress() == QHostAddress()); - QVERIFY(socketDevice.peerPort() == 0); - QVERIFY(socketDevice.error() == QAbstractSocket::UnknownSocketError); + QCOMPARE(socketDevice.localAddress(), QHostAddress()); + QCOMPARE(socketDevice.localPort(), quint16(0)); + QCOMPARE(socketDevice.peerAddress(), QHostAddress()); + QCOMPARE(socketDevice.peerPort(), quint16(0)); + QCOMPARE(socketDevice.error(), QAbstractSocket::UnknownSocketError); //QTest::ignoreMessage(QtWarningMsg, "QSocketLayer::bytesAvailable() was called in QAbstractSocket::UnconnectedState"); - QVERIFY(socketDevice.bytesAvailable() == 0); + QCOMPARE(socketDevice.bytesAvailable(), 0); //QTest::ignoreMessage(QtWarningMsg, "QSocketLayer::hasPendingDatagrams() was called in QAbstractSocket::UnconnectedState"); QVERIFY(!socketDevice.hasPendingDatagrams()); @@ -334,15 +334,15 @@ void tst_QSocks5SocketEngine::simpleConnectToIMAP() // Initialize device QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080)); QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143)); - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectingState); QVERIFY(socketDevice.waitForWrite()); - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState); - QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP()); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectedState); + QCOMPARE(socketDevice.peerAddress(), QtNetworkSettings::serverIP()); // Wait for the greeting QVERIFY(socketDevice.waitForRead()); @@ -377,8 +377,8 @@ void tst_QSocks5SocketEngine::simpleConnectToIMAP() QVERIFY(socketDevice.waitForRead()); char c; QVERIFY(socketDevice.read(&c, sizeof(c)) == -1); - QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.error(), QAbstractSocket::RemoteHostClosedError); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); } //--------------------------------------------------------------------------- @@ -392,14 +392,14 @@ void tst_QSocks5SocketEngine::simpleErrorsAndStates() socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080)); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); QVERIFY(!socketDevice.connectToHost(QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first(), 8088)); - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectingState); if (socketDevice.waitForWrite(15000)) { QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState || socketDevice.state() == QAbstractSocket::ConnectedState); } else { - QVERIFY(socketDevice.error() == QAbstractSocket::SocketTimeoutError); + QCOMPARE(socketDevice.error(), QAbstractSocket::SocketTimeoutError); } } @@ -413,12 +413,12 @@ void tst_QSocks5SocketEngine::tcpLoopbackPerformance() // Bind to any port on all interfaces QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0)); - QVERIFY(server.state() == QAbstractSocket::BoundState); + QCOMPARE(server.state(), QAbstractSocket::BoundState); quint16 port = server.localPort(); // Listen for incoming connections QVERIFY(server.listen()); - QVERIFY(server.state() == QAbstractSocket::ListeningState); + QCOMPARE(server.state(), QAbstractSocket::ListeningState); // Initialize a Tcp socket QSocks5SocketEngine client; @@ -440,7 +440,7 @@ void tst_QSocks5SocketEngine::tcpLoopbackPerformance() // socket descriptor from accept(). It's pre-connected. QSocketLayer serverSocket; QVERIFY(serverSocket.initialize(socketDescriptor)); - QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState); + QCOMPARE(serverSocket.state(), QAbstractSocket::ConnectedState); const int messageSize = 1024 * 256; QByteArray message1(messageSize, '@'); @@ -482,11 +482,11 @@ void tst_QSocks5SocketEngine::serverTest() // Bind to any port on all interfaces QVERIFY(server.bind(QHostAddress("0.0.0.0"), 0)); - QVERIFY(server.state() == QAbstractSocket::BoundState); + QCOMPARE(server.state(), QAbstractSocket::BoundState); // Listen for incoming connections QVERIFY(server.listen()); - QVERIFY(server.state() == QAbstractSocket::ListeningState); + QCOMPARE(server.state(), QAbstractSocket::ListeningState); // Initialize a Tcp socket QSocks5SocketEngine client; @@ -501,7 +501,7 @@ void tst_QSocks5SocketEngine::serverTest() if (!client.connectToHost(server.localAddress(), server.localPort())) { QVERIFY(client.waitForWrite()); // QTest::wait(100); // ### timing problem on win32 - QVERIFY(client.state() == QAbstractSocket::ConnectedState); + QCOMPARE(client.state(), QAbstractSocket::ConnectedState); //QTest::wait(100); } @@ -516,14 +516,14 @@ void tst_QSocks5SocketEngine::serverTest() QSocks5SocketEngine serverSocket; QVERIFY(serverSocket.initialize(socketDescriptor)); - QVERIFY(serverSocket.state() == QAbstractSocket::ConnectedState); + QCOMPARE(serverSocket.state(), QAbstractSocket::ConnectedState); - QVERIFY(serverSocket.localAddress() == client.peerAddress()); - QVERIFY(serverSocket.localPort() == client.peerPort()); + QCOMPARE(serverSocket.localAddress(), client.peerAddress()); + QCOMPARE(serverSocket.localPort(), client.peerPort()); // this seems depends on the socks server implementation, especially // when connecting /to/ the socks server /through/ the same socks server - //QVERIFY(serverSocket.peerAddress() == client.localAddress()); - //QVERIFY(serverSocket.peerPort() == client.localPort()); + //QCOMPARE(serverSocket.peerAddress(), client.localAddress()); + //QCOMPARE(serverSocket.peerPort(), client.localPort()); // The server socket sends a greeting to the client QByteArray greeting = "Greetings!"; @@ -557,16 +557,16 @@ void tst_QSocks5SocketEngine::udpTest() udpSocket.setProxy(proxy); - QVERIFY(udpSocket.protocol() == QAbstractSocket::IPv4Protocol); - QVERIFY(udpSocket.socketType() == QAbstractSocket::UdpSocket); - QVERIFY(udpSocket.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(udpSocket.protocol(), QAbstractSocket::IPv4Protocol); + QCOMPARE(udpSocket.socketType(), QAbstractSocket::UdpSocket); + QCOMPARE(udpSocket.state(), QAbstractSocket::UnconnectedState); // Bind #1 bool bindSuccessful = udpSocket.bind(QHostAddress("0.0.0.0"), 0); if (!bindSuccessful) QEXPECT_FAIL("", "QTBUG-23380 / QTBUG-35490: Fails on some Ubuntu 11.10 x64 configurations and on new network test server", Abort); QVERIFY(bindSuccessful); - QVERIFY(udpSocket.state() == QAbstractSocket::BoundState); + QCOMPARE(udpSocket.state(), QAbstractSocket::BoundState); QVERIFY(udpSocket.localPort() != 0); // Initialize device #2 @@ -577,7 +577,7 @@ void tst_QSocks5SocketEngine::udpTest() // Connect device #2 to #1 QVERIFY(udpSocket2.connectToHost(udpSocket.localAddress(), udpSocket.localPort())); - QVERIFY(udpSocket2.state() == QAbstractSocket::ConnectedState); + QCOMPARE(udpSocket2.state(), QAbstractSocket::ConnectedState); // Write a message to #1 QByteArray message1 = "hei der"; @@ -591,13 +591,13 @@ void tst_QSocks5SocketEngine::udpTest() QVERIFY(available > 0); QByteArray answer; answer.resize(available); - QHostAddress senderAddress; - quint16 senderPort = 0; - QVERIFY(udpSocket.readDatagram(answer.data(), answer.size(), - &senderAddress, - &senderPort) == message1.size()); - QVERIFY(senderAddress == udpSocket2.localAddress()); - QVERIFY(senderPort == udpSocket2.localPort()); + QIpPacketHeader header; + QCOMPARE(udpSocket.readDatagram(answer.data(), answer.size(), + &header, QAbstractSocketEngine::WantDatagramSender), + qint64(message1.size())); + QVERIFY(header.senderAddress == udpSocket2.localAddress()); + QCOMPARE(header.senderAddress, udpSocket2.localAddress()); + QCOMPARE(header.senderPort, udpSocket2.localPort()); } void tst_QSocks5SocketEngine::tcpSocketBlockingTest() @@ -705,7 +705,7 @@ void tst_QSocks5SocketEngine::tcpSocketNonBlockingTest() QFAIL("Timed out"); } - QVERIFY(tcpSocketNonBlocking_totalWritten == 8); + QCOMPARE(tcpSocketNonBlocking_totalWritten, 8); QTestEventLoop::instance().enterLoop(30); @@ -729,7 +729,7 @@ void tst_QSocks5SocketEngine::tcpSocketNonBlockingTest() QFAIL("Timed out"); } - QVERIFY(tcpSocketNonBlocking_totalWritten == 10); + QCOMPARE(tcpSocketNonBlocking_totalWritten, 10); // Wait for greeting QTestEventLoop::instance().enterLoop(30); @@ -797,7 +797,7 @@ void tst_QSocks5SocketEngine::downloadBigFile() QFAIL("Network operation timed out"); QByteArray hostName = QtNetworkSettings::serverName().toLatin1(); - QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState); + QCOMPARE(tmpSocket->state(), QAbstractSocket::ConnectedState); QVERIFY(tmpSocket->write("GET /qtest/mediumfile HTTP/1.0\r\n") > 0); QVERIFY(tmpSocket->write("HOST: ") > 0); QVERIFY(tmpSocket->write(hostName.data()) > 0); @@ -819,7 +819,7 @@ void tst_QSocks5SocketEngine::downloadBigFile() QCOMPARE(bytesAvailable, qint64(10000000)); - QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState); + QCOMPARE(tmpSocket->state(), QAbstractSocket::ConnectedState); /*qDebug("\t\t%.1fMB/%.1fs: %.1fMB/s", bytesAvailable / (1024.0 * 1024.0), @@ -852,19 +852,19 @@ void tst_QSocks5SocketEngine::passwordAuth() // Initialize device QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080, "qsockstest", "password")); // Connect to imap.trolltech.com's IP QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143)); - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectingState); QVERIFY(socketDevice.waitForWrite()); if (!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143)) { qDebug("%d, %s", socketDevice.error(), socketDevice.errorString().toLatin1().constData()); } - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState); - QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP()); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectedState); + QCOMPARE(socketDevice.peerAddress(), QtNetworkSettings::serverIP()); // Wait for the greeting QVERIFY(socketDevice.waitForRead()); @@ -899,8 +899,8 @@ void tst_QSocks5SocketEngine::passwordAuth() QVERIFY(socketDevice.waitForRead()); char c; QVERIFY(socketDevice.read(&c, sizeof(c)) == -1); - QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.error(), QAbstractSocket::RemoteHostClosedError); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); } //---------------------------------------------------------------------------------- @@ -918,21 +918,21 @@ void tst_QSocks5SocketEngine::passwordAuth2() // Initialize device QVERIFY(socketDevice.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol)); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); socketDevice.setProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1081)); socketDevice.setReceiver(this); QVERIFY(!socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143)); - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectingState); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectingState); while (socketDevice.state() == QAbstractSocket::ConnectingState) { QVERIFY(socketDevice.waitForWrite()); socketDevice.connectToHost(QtNetworkSettings::serverIP(), 143); } if (socketDevice.state() != QAbstractSocket::ConnectedState) qDebug("%d, %s", socketDevice.error(), socketDevice.errorString().toLatin1().constData()); - QVERIFY(socketDevice.state() == QAbstractSocket::ConnectedState); - QVERIFY(socketDevice.peerAddress() == QtNetworkSettings::serverIP()); + QCOMPARE(socketDevice.state(), QAbstractSocket::ConnectedState); + QCOMPARE(socketDevice.peerAddress(), QtNetworkSettings::serverIP()); // Wait for the greeting QVERIFY(socketDevice.waitForRead()); @@ -967,8 +967,8 @@ void tst_QSocks5SocketEngine::passwordAuth2() QVERIFY(socketDevice.waitForRead()); char c; QVERIFY(socketDevice.read(&c, sizeof(c)) == -1); - QVERIFY(socketDevice.error() == QAbstractSocket::RemoteHostClosedError); - QVERIFY(socketDevice.state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socketDevice.error(), QAbstractSocket::RemoteHostClosedError); + QCOMPARE(socketDevice.state(), QAbstractSocket::UnconnectedState); } void tst_QSocks5SocketEngine::fragmentation_data() @@ -1017,7 +1017,7 @@ void tst_QSocks5SocketEngine::fragmentation() QVERIFY(!QTestEventLoop::instance().timeout()); QVERIFY(socket.localAddress() == QHostAddress("1.2.3.4") || socket.localAddress() == QHostAddress("0123:4567:89ab:cdef:0123:4567:89ab:cdef")); - QVERIFY(socket.localPort() == 0x0506); + QCOMPARE(socket.localPort(), quint16(0x0506)); } void tst_QSocks5SocketEngine::incomplete_data() diff --git a/tests/auto/network/socket/qtcpserver/BLACKLIST b/tests/auto/network/socket/qtcpserver/BLACKLIST new file mode 100644 index 0000000000..f8b61808cc --- /dev/null +++ b/tests/auto/network/socket/qtcpserver/BLACKLIST @@ -0,0 +1,13 @@ +windows +[linkLocal] +linux +[listenWhileListening:WithSocks5Proxy] +linux +windows +[ipv6Server:WithoutProxy] +windows +osx +[clientServerLoop:WithSocks5Proxy] +linux +[crashTests:WithSocks5Proxy] +linux diff --git a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp index e0a6e3699d..5df5432cdd 100644 --- a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp +++ b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp @@ -265,11 +265,11 @@ void tst_QTcpServer::ipv6Server() //### need to enter the event loop for the server to get the connection ?? ( windows) QTcpServer server; if (!server.listen(QHostAddress::LocalHostIPv6, 8944)) { - QVERIFY(server.serverError() == QAbstractSocket::UnsupportedSocketOperationError); + QCOMPARE(server.serverError(), QAbstractSocket::UnsupportedSocketOperationError); return; } - QVERIFY(server.serverPort() == 8944); + QCOMPARE(server.serverPort(), quint16(8944)); QVERIFY(server.serverAddress() == QHostAddress::LocalHostIPv6); QTcpSocket client; @@ -835,17 +835,17 @@ void tst_QTcpServer::qtbug14268_peek() client.write("abc\n"); QTestEventLoop::instance().enterLoop(5); QVERIFY(!QTestEventLoop::instance().timeout()); - QVERIFY(helper.lastDataPeeked == QByteArray("6162630a")); + QCOMPARE(helper.lastDataPeeked, QByteArray("6162630a")); client.write("def\n"); QTestEventLoop::instance().enterLoop(5); QVERIFY(!QTestEventLoop::instance().timeout()); - QVERIFY(helper.lastDataPeeked == QByteArray("6162630a6465660a")); + QCOMPARE(helper.lastDataPeeked, QByteArray("6162630a6465660a")); client.write("ghi\n"); QTestEventLoop::instance().enterLoop(5); QVERIFY(!QTestEventLoop::instance().timeout()); - QVERIFY(helper.lastDataPeeked == QByteArray("6162630a6465660a6768690a")); + QCOMPARE(helper.lastDataPeeked, QByteArray("6162630a6465660a6768690a")); } void tst_QTcpServer::serverAddress_data() diff --git a/tests/auto/network/socket/qtcpsocket/test/test.pro b/tests/auto/network/socket/qtcpsocket/test/test.pro index 3e64b87b53..325abcaab8 100644 --- a/tests/auto/network/socket/qtcpsocket/test/test.pro +++ b/tests/auto/network/socket/qtcpsocket/test/test.pro @@ -21,3 +21,5 @@ win32 { } else { DESTDIR = ../ } + +win32: CONFIG += insignificant_test # Hangs in release builds diff --git a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp index e8a942e6c4..cde453c191 100644 --- a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp +++ b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp @@ -200,6 +200,7 @@ private slots: void setSocketOption(); void clientSendDataOnDelayedDisconnect(); + void serverDisconnectWithBuffered(); void readNotificationsAfterBind(); protected slots: @@ -242,7 +243,6 @@ private: mutable int proxyAuthCalled; - int numConnections; static int loopLevel; SocketPair *earlyConstructedSockets; @@ -484,9 +484,9 @@ void tst_QTcpSocket::constructing() QCOMPARE(socket->readLine(), QByteArray()); QCOMPARE(socket->socketDescriptor(), (qintptr)-1); QCOMPARE((int) socket->localPort(), 0); - QVERIFY(socket->localAddress() == QHostAddress()); + QCOMPARE(socket->localAddress(), QHostAddress()); QCOMPARE((int) socket->peerPort(), 0); - QVERIFY(socket->peerAddress() == QHostAddress()); + QCOMPARE(socket->peerAddress(), QHostAddress()); QCOMPARE(socket->error(), QTcpSocket::UnknownSocketError); QCOMPARE(socket->errorString(), QString("Unknown error")); @@ -756,7 +756,7 @@ void tst_QTcpSocket::socketDescriptor() QVERIFY(socket->state() == QAbstractSocket::HostLookupState || socket->state() == QAbstractSocket::ConnectingState); QVERIFY(socket->waitForConnected(10000)); - QVERIFY(socket->state() == QAbstractSocket::ConnectedState); + QCOMPARE(socket->state(), QAbstractSocket::ConnectedState); QVERIFY(socket->socketDescriptor() != -1); delete socket; @@ -937,7 +937,7 @@ void tst_QTcpSocket::nonBlockingIMAP() QFAIL("Timed out"); } - QVERIFY(nonBlockingIMAP_totalWritten == 8); + QCOMPARE(nonBlockingIMAP_totalWritten, 8); enterLoop(30); @@ -962,7 +962,7 @@ void tst_QTcpSocket::nonBlockingIMAP() QFAIL("Timed out"); } - QVERIFY(nonBlockingIMAP_totalWritten == 10); + QCOMPARE(nonBlockingIMAP_totalWritten, 10); // Wait for greeting enterLoop(30); @@ -1087,7 +1087,7 @@ void tst_QTcpSocket::partialRead() QTcpSocket *socket = newSocket(); socket->connectToHost(QtNetworkSettings::serverName(), 143); QVERIFY(socket->waitForConnected(10000)); - QVERIFY(socket->state() == QTcpSocket::ConnectedState); + QCOMPARE(socket->state(), QTcpSocket::ConnectedState); char buf[512]; QByteArray greeting = expectedReplyIMAP(); @@ -1111,7 +1111,7 @@ void tst_QTcpSocket::unget() QTcpSocket *socket = newSocket(); socket->connectToHost(QtNetworkSettings::serverName(), 143); QVERIFY(socket->waitForConnected(10000)); - QVERIFY(socket->state() == QTcpSocket::ConnectedState); + QCOMPARE(socket->state(), QTcpSocket::ConnectedState); char buf[512]; QByteArray greeting = expectedReplyIMAP(); @@ -1169,7 +1169,7 @@ void tst_QTcpSocket::openCloseOpenClose() QCOMPARE(int(socket->openMode()), int(QIODevice::NotOpen)); QVERIFY(socket->isSequential()); QVERIFY(!socket->isOpen()); - QVERIFY(socket->socketType() == QTcpSocket::TcpSocket); + QCOMPARE(socket->socketType(), QTcpSocket::TcpSocket); char c; QCOMPARE(socket->getChar(&c), false); @@ -1178,13 +1178,13 @@ void tst_QTcpSocket::openCloseOpenClose() QCOMPARE(socket->readLine(), QByteArray()); QCOMPARE(socket->socketDescriptor(), (qintptr)-1); QCOMPARE((int) socket->localPort(), 0); - QVERIFY(socket->localAddress() == QHostAddress()); + QCOMPARE(socket->localAddress(), QHostAddress()); QCOMPARE((int) socket->peerPort(), 0); - QVERIFY(socket->peerAddress() == QHostAddress()); + QCOMPARE(socket->peerAddress(), QHostAddress()); QCOMPARE(socket->error(), QTcpSocket::UnknownSocketError); QCOMPARE(socket->errorString(), QString("Unknown error")); - QVERIFY(socket->state() == QTcpSocket::UnconnectedState); + QCOMPARE(socket->state(), QTcpSocket::UnconnectedState); socket->connectToHost(QtNetworkSettings::serverName(), 143); QVERIFY(socket->waitForConnected(10000)); @@ -1201,7 +1201,7 @@ void tst_QTcpSocket::connectDisconnectConnectDisconnect() for (int i = 0; i < 3; ++i) { QCOMPARE(socket->state(), QTcpSocket::UnconnectedState); - QVERIFY(socket->socketType() == QTcpSocket::TcpSocket); + QCOMPARE(socket->socketType(), QTcpSocket::TcpSocket); socket->connectToHost(QtNetworkSettings::serverName(), 143); QVERIFY(socket->waitForReadyRead(10000)); @@ -1261,7 +1261,7 @@ void tst_QTcpSocket::disconnectWhileConnecting() connect(socket, SIGNAL(disconnected()), SLOT(exitLoopSlot())); enterLoop(10); QVERIFY2(!timeout(), "Network timeout"); - QVERIFY(socket->state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState); if (!closeDirectly) { QCOMPARE(int(socket->openMode()), int(QIODevice::ReadWrite)); socket->close(); @@ -1273,7 +1273,7 @@ void tst_QTcpSocket::disconnectWhileConnecting() QTcpSocket *othersocket = server.nextPendingConnection(); if (othersocket->state() != QAbstractSocket::UnconnectedState) QVERIFY2(othersocket->waitForDisconnected(10000), "Network timeout"); - QVERIFY(othersocket->state() == QAbstractSocket::UnconnectedState); + QCOMPARE(othersocket->state(), QAbstractSocket::UnconnectedState); QCOMPARE(othersocket->readAll(), data); delete socket; @@ -1376,7 +1376,7 @@ void tst_QTcpSocket::disconnectWhileConnectingNoEventLoop() } QVERIFY2(socket->waitForDisconnected(10000), "Network timeout"); - QVERIFY(socket->state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState); if (!closeDirectly) { QCOMPARE(int(socket->openMode()), int(QIODevice::ReadWrite)); socket->close(); @@ -1415,10 +1415,10 @@ void tst_QTcpSocket::disconnectWhileLookingUp() QFETCH(bool, doClose); if (doClose) { socket->close(); - QVERIFY(socket->openMode() == QIODevice::NotOpen); + QCOMPARE(socket->openMode(), QIODevice::NotOpen); } else { socket->disconnectFromHost(); - QVERIFY(socket->openMode() == QIODevice::ReadWrite); + QCOMPARE(socket->openMode(), QIODevice::ReadWrite); QVERIFY(socket->waitForDisconnected(5000)); } @@ -1429,12 +1429,12 @@ void tst_QTcpSocket::disconnectWhileLookingUp() // recheck if (doClose) { - QVERIFY(socket->openMode() == QIODevice::NotOpen); + QCOMPARE(socket->openMode(), QIODevice::NotOpen); } else { - QVERIFY(socket->openMode() == QIODevice::ReadWrite); + QCOMPARE(socket->openMode(), QIODevice::ReadWrite); } - QVERIFY(socket->state() == QAbstractSocket::UnconnectedState); + QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState); } //---------------------------------------------------------------------------------- @@ -1458,7 +1458,7 @@ void tst_QTcpSocket::downloadBigFile() } QByteArray hostName = QtNetworkSettings::serverName().toLatin1(); - QVERIFY(tmpSocket->state() == QAbstractSocket::ConnectedState); + QCOMPARE(tmpSocket->state(), QAbstractSocket::ConnectedState); QVERIFY(tmpSocket->write("GET /qtest/mediumfile HTTP/1.0\r\n") > 0); QVERIFY(tmpSocket->write("HOST: ") > 0); QVERIFY(tmpSocket->write(hostName.data()) > 0); @@ -1831,7 +1831,6 @@ private slots: } #endif // !QT_NO_NETWORKPROXY private: - int exitCode; QTcpSocket *socket; QByteArray socketData; }; @@ -2687,12 +2686,12 @@ void tst_QTcpSocket::taskQtBug7054TimeoutErrorResetting() socket->connectToHost(QtNetworkSettings::serverName(), 443); QVERIFY(socket->waitForConnected(5*1000)); - QVERIFY(socket->error() == QAbstractSocket::UnknownSocketError); + QCOMPARE(socket->error(), QAbstractSocket::UnknownSocketError); // We connected to the HTTPS port. Wait two seconds to receive data. We will receive // nothing because we would need to start the SSL handshake QVERIFY(!socket->waitForReadyRead(2*1000)); - QVERIFY(socket->error() == QAbstractSocket::SocketTimeoutError); + QCOMPARE(socket->error(), QAbstractSocket::SocketTimeoutError); // Now write some crap to make the server disconnect us. 4 lines are enough. socket->write("a\r\nb\r\nc\r\nd\r\n"); @@ -2702,7 +2701,7 @@ void tst_QTcpSocket::taskQtBug7054TimeoutErrorResetting() // should get a better error since the server disconnected us QVERIFY(!socket->waitForReadyRead(2*1000)); // It must NOT be the SocketTimeoutError that had been set before - QVERIFY(socket->error() == QAbstractSocket::RemoteHostClosedError); + QCOMPARE(socket->error(), QAbstractSocket::RemoteHostClosedError); } #ifndef QT_NO_NETWORKPROXY @@ -2896,25 +2895,25 @@ void tst_QTcpSocket::qtbug14268_peek() QTcpSocket *outgoing = socketPair.endPoints[0]; QTcpSocket *incoming = socketPair.endPoints[1]; - QVERIFY(incoming->state() == QTcpSocket::ConnectedState); - QVERIFY(outgoing->state() == QTcpSocket::ConnectedState); + QCOMPARE(incoming->state(), QTcpSocket::ConnectedState); + QCOMPARE(outgoing->state(), QTcpSocket::ConnectedState); outgoing->write("abc\n"); QVERIFY(outgoing->waitForBytesWritten(2000)); QVERIFY(incoming->waitForReadyRead(2000)); - QVERIFY(incoming->peek(128*1024) == QByteArray("abc\n")); + QCOMPARE(incoming->peek(128*1024), QByteArray("abc\n")); outgoing->write("def\n"); QVERIFY(outgoing->waitForBytesWritten(2000)); QVERIFY(incoming->waitForReadyRead(2000)); - QVERIFY(incoming->peek(128*1024) == QByteArray("abc\ndef\n")); + QCOMPARE(incoming->peek(128*1024), QByteArray("abc\ndef\n")); outgoing->write("ghi\n"); QVERIFY(outgoing->waitForBytesWritten(2000)); QVERIFY(incoming->waitForReadyRead(2000)); - QVERIFY(incoming->peek(128*1024) == QByteArray("abc\ndef\nghi\n")); + QCOMPARE(incoming->peek(128*1024), QByteArray("abc\ndef\nghi\n")); - QVERIFY(incoming->read(128*1024) == QByteArray("abc\ndef\nghi\n")); + QCOMPARE(incoming->read(128*1024), QByteArray("abc\ndef\nghi\n")); } void tst_QTcpSocket::setSocketOption() @@ -2928,8 +2927,8 @@ void tst_QTcpSocket::setSocketOption() QTcpSocket *outgoing = socketPair.endPoints[0]; QTcpSocket *incoming = socketPair.endPoints[1]; - QVERIFY(incoming->state() == QTcpSocket::ConnectedState); - QVERIFY(outgoing->state() == QTcpSocket::ConnectedState); + QCOMPARE(incoming->state(), QTcpSocket::ConnectedState); + QCOMPARE(outgoing->state(), QTcpSocket::ConnectedState); outgoing->setSocketOption(QAbstractSocket::LowDelayOption, true); QVariant v = outgoing->socketOption(QAbstractSocket::LowDelayOption); @@ -2985,6 +2984,51 @@ void tst_QTcpSocket::clientSendDataOnDelayedDisconnect() delete socket; } +// Test buffered socket being properly closed on remote disconnect +void tst_QTcpSocket::serverDisconnectWithBuffered() +{ + QFETCH_GLOBAL(bool, setProxy); + if (setProxy) + return; + + qRegisterMetaType<QAbstractSocket::SocketState>("QAbstractSocket::SocketState"); + + QTcpServer tcpServer; + QTcpSocket *socket = newSocket(); + + QVERIFY(tcpServer.listen(QHostAddress::LocalHost)); + socket->connectToHost(tcpServer.serverAddress(), tcpServer.serverPort()); + // Accept connection on server side + QVERIFY(tcpServer.waitForNewConnection(5000)); + QTcpSocket *newConnection = tcpServer.nextPendingConnection(); + // Send one char and drop link + QVERIFY(newConnection != NULL); + QVERIFY(newConnection->putChar(0)); + QVERIFY(newConnection->flush()); + delete newConnection; + + QVERIFY(socket->waitForConnected(5000)); // ready for write + QCOMPARE(socket->state(), QAbstractSocket::ConnectedState); + + QSignalSpy spyStateChanged(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState))); + QSignalSpy spyDisconnected(socket, SIGNAL(disconnected())); + + QVERIFY(socket->waitForReadyRead(5000)); // have one char already in internal buffer + char buf[128]; + QCOMPARE(socket->read(buf, sizeof(buf)), Q_INT64_C(1)); + if (socket->state() != QAbstractSocket::UnconnectedState) { + QVERIFY(socket->waitForDisconnected(5000)); + QCOMPARE(socket->state(), QAbstractSocket::UnconnectedState); + } + // Test signal emitting + QCOMPARE(spyDisconnected.count(), 1); + QVERIFY(spyStateChanged.count() > 0); + QVERIFY(qvariant_cast<QAbstractSocket::SocketState>(spyStateChanged.last().first()) + == QAbstractSocket::UnconnectedState); + + delete socket; +} + // Test that the socket does not enable the read notifications in bind() void tst_QTcpSocket::readNotificationsAfterBind() { diff --git a/tests/auto/network/socket/qudpsocket/BLACKLIST b/tests/auto/network/socket/qudpsocket/BLACKLIST new file mode 100644 index 0000000000..3e936aebf6 --- /dev/null +++ b/tests/auto/network/socket/qudpsocket/BLACKLIST @@ -0,0 +1,8 @@ +[multicast:same bind, group ipv6 address] +* +[multicast:valid bind, group ipv6 address] +osx +[multicast:dual bind, group ipv6 address] +osx +[multicast:same bind, group ipv4 address] +osx diff --git a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp index 6f96e6d6f5..0ee3255502 100644 --- a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp +++ b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp @@ -56,7 +56,6 @@ #endif Q_DECLARE_METATYPE(QHostAddress) -Q_DECLARE_METATYPE(QNetworkInterface) QT_FORWARD_DECLARE_CLASS(QUdpSocket) @@ -228,7 +227,7 @@ void tst_QUdpSocket::constructing() QVERIFY(socket.isSequential()); QVERIFY(!socket.isOpen()); - QVERIFY(socket.socketType() == QUdpSocket::UdpSocket); + QCOMPARE(socket.socketType(), QUdpSocket::UdpSocket); QCOMPARE((int) socket.bytesAvailable(), 0); QCOMPARE(socket.canReadLine(), false); QCOMPARE(socket.readLine(), QByteArray()); @@ -754,7 +753,7 @@ void tst_QUdpSocket::writeDatagram() QCOMPARE(client.error(), QUdpSocket::DatagramTooLargeError); break; } - QVERIFY(bytesspy.count() == 1); + QCOMPARE(bytesspy.count(), 1); QCOMPARE(*static_cast<const qint64 *>(bytesspy.at(0).at(0).constData()), qint64(i * 1024)); QCOMPARE(errorspy.count(), 0); |