diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-09-25 14:02:04 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-09-25 14:02:04 +0200 |
commit | a1ad9a74ebb3c556c5f70f7e03be68b09598ac53 (patch) | |
tree | 615a96db418219a57a745a5899e39a9ac90744ec /tests/auto/network | |
parent | 6d78b7a0c46ea04f4bb771d960e2f7dff1362341 (diff) | |
parent | 462f355e4fb16cc7a1838fa2dda0f763eee58c84 (diff) |
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts:
src/corelib/io/io.pri
src/corelib/io/qdatastream.cpp
src/corelib/io/qdatastream.h
src/network/socket/qabstractsocket.cpp
src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp
src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h
src/widgets/styles/qgtkstyle.cpp
tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-cache/qmimedatabase-cache.pro
tests/auto/corelib/mimetypes/qmimedatabase/qmimedatabase-xml/qmimedatabase-xml.pro
tests/auto/dbus/qdbusconnection/qdbusconnection.pro
tests/auto/dbus/qdbuspendingcall/tst_qdbuspendingcall.cpp
tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
Change-Id: I347549a024eb5bfa986699e0a11f96cc55c797a7
Diffstat (limited to 'tests/auto/network')
7 files changed, 140 insertions, 78 deletions
diff --git a/tests/auto/network/access/qnetworkreply/BLACKLIST b/tests/auto/network/access/qnetworkreply/BLACKLIST index 5012b356c2..3ec580ddde 100644 --- a/tests/auto/network/access/qnetworkreply/BLACKLIST +++ b/tests/auto/network/access/qnetworkreply/BLACKLIST @@ -3,12 +3,6 @@ osx ubuntu-14.04 [ioGetFromBuiltinHttp:https+limited] ubuntu-14.04 -[ioGetFromHttpBrokenServer:no-newline] -osx -[synchronousRequest:https] -osx -[SslHandshakeFailedError] -osx [httpAbort] * [backgroundRequestInterruption:ftp, bg, nobg] diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp index b448a1db12..debdc6bcb3 100644 --- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -1078,11 +1078,7 @@ protected: // clean up QAbstractSocket's residue: while (client->bytesToWrite() > 0) { qDebug() << "Still having" << client->bytesToWrite() << "bytes to write, doing that now"; -#ifdef Q_OS_OSX - if (!client->waitForBytesWritten(4000)) { -#else - if (!client->waitForBytesWritten(2000)) { -#endif + if (!client->waitForBytesWritten(10000)) { qDebug() << "ERROR: FastSender:" << client->error() << "cleaning up residue"; return; } @@ -1102,11 +1098,7 @@ protected: measuredSentBytes += writeNextData(client, bytesToWrite); while (client->bytesToWrite() > 0) { -#ifdef Q_OS_OSX - if (!client->waitForBytesWritten(4000)) { -#else - if (!client->waitForBytesWritten(2000)) { -#endif + if (!client->waitForBytesWritten(10000)) { qDebug() << "ERROR: FastSender:" << client->error() << "during blocking write"; return; } @@ -8211,7 +8203,7 @@ public slots: m_receivedData += data; if (!m_parsedHeaders && m_receivedData.contains("\r\n\r\n")) { m_parsedHeaders = true; - QTimer::singleShot(qrand()%10, this, SLOT(closeDelayed())); // simulate random network latency + QTimer::singleShot(qrand()%60, this, SLOT(closeDelayed())); // simulate random network latency // This server simulates a web server connection closing, e.g. because of Apaches MaxKeepAliveRequests or KeepAliveTimeout // In this case QNAM needs to re-send the upload data but it had a bug which then corrupts the upload // This test catches that. @@ -8317,11 +8309,12 @@ void tst_QNetworkReply::putWithServerClosingConnectionImmediately() // get the request started and the incoming socket connected QTestEventLoop::instance().enterLoop(10); + QVERIFY(!QTestEventLoop::instance().timeout()); //qDebug() << "correct=" << server.m_correctUploads << "corrupt=" << server.m_corruptUploads << "expected=" <<numUploads; // Sanity check because ecause of 9c2ecf89 most replies will error out but we want to make sure at least some of them worked - QVERIFY(server.m_correctUploads > 5); + QVERIFY(server.m_correctUploads > 2); // Because actually important is that we don't get any corruption: QCOMPARE(server.m_corruptUploads, 0); diff --git a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp index e074ecae1d..8069865d93 100644 --- a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp +++ b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp @@ -83,22 +83,12 @@ private slots: void isInSubnet(); void isLoopback_data(); void isLoopback(); + void isMulticast_data(); + void isMulticast(); void convertv4v6_data(); void convertv4v6(); }; -QT_BEGIN_NAMESPACE -namespace QTest { - template<> - char *toString(const QHostAddress &addr) - { - if (addr.protocol() == QAbstractSocket::UnknownNetworkLayerProtocol) - return qstrdup("<invalid>"); - return qstrdup(addr.toString().toLatin1()); - } -} -QT_END_NAMESPACE - tst_QHostAddress::tst_QHostAddress() { } @@ -631,6 +621,9 @@ void tst_QHostAddress::isLoopback_data() QTest::addColumn<QHostAddress>("address"); QTest::addColumn<bool>("result"); + QTest::newRow("default") << QHostAddress() << false; + QTest::newRow("invalid") << QHostAddress("&&&") << false; + QTest::newRow("ipv6_loop") << QHostAddress(QHostAddress::LocalHostIPv6) << true; QTest::newRow("::1") << QHostAddress("::1") << true; @@ -639,7 +632,6 @@ void tst_QHostAddress::isLoopback_data() QTest::newRow("127.0.0.2") << QHostAddress("127.0.0.2") << true; QTest::newRow("127.3.2.1") << QHostAddress("127.3.2.1") << true; - QTest::newRow("default") << QHostAddress() << false; QTest::newRow("1.2.3.4") << QHostAddress("1.2.3.4") << false; QTest::newRow("10.0.0.4") << QHostAddress("10.0.0.4") << false; QTest::newRow("192.168.3.4") << QHostAddress("192.168.3.4") << false; @@ -650,10 +642,12 @@ void tst_QHostAddress::isLoopback_data() QTest::newRow("AnyIPv6") << QHostAddress(QHostAddress::AnyIPv6) << false; QTest::newRow("Broadcast") << QHostAddress(QHostAddress::Broadcast) << false; QTest::newRow("Null") << QHostAddress(QHostAddress::Null) << false; + QTest::newRow("ipv6-all-ffff") << QHostAddress("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff") << false; QTest::newRow("::ffff:127.0.0.1") << QHostAddress("::ffff:127.0.0.1") << true; QTest::newRow("::ffff:127.0.0.2") << QHostAddress("::ffff:127.0.0.2") << true; QTest::newRow("::ffff:127.3.2.1") << QHostAddress("::ffff:127.3.2.1") << true; + } void tst_QHostAddress::isLoopback() @@ -664,6 +658,50 @@ void tst_QHostAddress::isLoopback() QCOMPARE(address.isLoopback(), result); } +void tst_QHostAddress::isMulticast_data() +{ + QTest::addColumn<QHostAddress>("address"); + QTest::addColumn<bool>("result"); + + QTest::newRow("default") << QHostAddress() << false; + QTest::newRow("invalid") << QHostAddress("&&&") << false; + + QTest::newRow("ipv6_loop") << QHostAddress(QHostAddress::LocalHostIPv6) << false; + QTest::newRow("::1") << QHostAddress("::1") << false; + QTest::newRow("ipv4_loop") << QHostAddress(QHostAddress::LocalHost) << false; + QTest::newRow("127.0.0.1") << QHostAddress("127.0.0.1") << false; + QTest::newRow("::") << QHostAddress("::") << false; + QTest::newRow("Any") << QHostAddress(QHostAddress::Any) << false; + QTest::newRow("AnyIPv4") << QHostAddress(QHostAddress::AnyIPv4) << false; + QTest::newRow("AnyIPv6") << QHostAddress(QHostAddress::AnyIPv6) << false; + QTest::newRow("Broadcast") << QHostAddress(QHostAddress::Broadcast) << false; + QTest::newRow("Null") << QHostAddress(QHostAddress::Null) << false; + + QTest::newRow("223.255.255.255") << QHostAddress("223.255.255.255") << false; + QTest::newRow("224.0.0.0") << QHostAddress("224.0.0.0") << true; + QTest::newRow("239.255.255.255") << QHostAddress("239.255.255.255") << true; + QTest::newRow("240.0.0.0") << QHostAddress("240.0.0.0") << false; + + QTest::newRow("::ffff:223.255.255.255") << QHostAddress("::ffff:223.255.255.255") << false; + QTest::newRow("::ffff:224.0.0.0") << QHostAddress("::ffff:224.0.0.0") << true; + QTest::newRow("::ffff:239.255.255.255") << QHostAddress("::ffff:239.255.255.255") << true; + QTest::newRow("::ffff:240.0.0.0") << QHostAddress("::ffff:240.0.0.0") << false; + + QTest::newRow("fc00::") << QHostAddress("fc00::") << false; + QTest::newRow("fe80::") << QHostAddress("fe80::") << false; + QTest::newRow("fec0::") << QHostAddress("fec0::") << false; + QTest::newRow("ff00::") << QHostAddress("ff00::") << true; + QTest::newRow("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff") << QHostAddress("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff") << true; +} + +void tst_QHostAddress::isMulticast() +{ + QFETCH(QHostAddress, address); + QFETCH(bool, result); + + QCOMPARE(address.isMulticast(), result); +} + void tst_QHostAddress::convertv4v6_data() { QTest::addColumn<QHostAddress>("source"); diff --git a/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp b/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp index b3ffe74b67..f7798bbb70 100644 --- a/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp +++ b/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp @@ -58,6 +58,7 @@ private slots: void loopbackIPv4(); void loopbackIPv6(); void localAddress(); + void interfaceFromXXX_data(); void interfaceFromXXX(); void copyInvalidInterface(); @@ -188,35 +189,42 @@ void tst_QNetworkInterface::localAddress() QVERIFY(all.contains(local)); } -void tst_QNetworkInterface::interfaceFromXXX() +void tst_QNetworkInterface::interfaceFromXXX_data() { + QTest::addColumn<QNetworkInterface>("iface"); + QList<QNetworkInterface> allInterfaces = QNetworkInterface::allInterfaces(); + foreach (QNetworkInterface iface, allInterfaces) + QTest::newRow(iface.name().toLocal8Bit()) << iface; +} + +void tst_QNetworkInterface::interfaceFromXXX() +{ + QFETCH(QNetworkInterface, iface); - foreach (QNetworkInterface iface, allInterfaces) { - QVERIFY(QNetworkInterface::interfaceFromName(iface.name()).isValid()); - foreach (QNetworkAddressEntry entry, iface.addressEntries()) { - QVERIFY(!entry.ip().isNull()); + QVERIFY(QNetworkInterface::interfaceFromName(iface.name()).isValid()); + foreach (QNetworkAddressEntry entry, iface.addressEntries()) { + QVERIFY(!entry.ip().isNull()); - if (!entry.netmask().isNull()) { - QCOMPARE(entry.netmask().protocol(), entry.ip().protocol()); + if (!entry.netmask().isNull()) { + QCOMPARE(entry.netmask().protocol(), entry.ip().protocol()); - // if the netmask is known, the broadcast is known - // but only for IPv4 (there is no such thing as broadcast in IPv6) - if (entry.ip().protocol() == QAbstractSocket::IPv4Protocol) { - QVERIFY(!entry.broadcast().isNull()); + // if the netmask is known, the broadcast is known + // but only for IPv4 (there is no such thing as broadcast in IPv6) + if (entry.ip().protocol() == QAbstractSocket::IPv4Protocol) { + QVERIFY(!entry.broadcast().isNull()); - // verify that the broadcast address is correct - quint32 ip = entry.ip().toIPv4Address(); - quint32 mask = entry.netmask().toIPv4Address(); - quint32 bcast = entry.broadcast().toIPv4Address(); + // verify that the broadcast address is correct + quint32 ip = entry.ip().toIPv4Address(); + quint32 mask = entry.netmask().toIPv4Address(); + quint32 bcast = entry.broadcast().toIPv4Address(); - QCOMPARE(bcast, ip | ~mask); - } + QCOMPARE(bcast, ip | ~mask); } - - if (!entry.broadcast().isNull()) - QCOMPARE(entry.broadcast().protocol(), entry.ip().protocol()); } + + if (!entry.broadcast().isNull()) + QCOMPARE(entry.broadcast().protocol(), entry.ip().protocol()); } } diff --git a/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp b/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp index 44081d474f..71125f463a 100644 --- a/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp +++ b/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp @@ -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()); - QCOMPARE(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); } //--------------------------------------------------------------------------- @@ -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()); - QCOMPARE(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); } } @@ -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 @@ -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); } diff --git a/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp b/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp index 66fd74017e..8da656aab7 100644 --- a/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp +++ b/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp @@ -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()); - QCOMPARE(senderAddress, udpSocket2.localAddress()); - QCOMPARE(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() diff --git a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp index dc41a93906..09d9448e10 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) @@ -848,7 +847,11 @@ void tst_QUdpSocket::writeDatagramToNonExistingPeer_data() QTest::addColumn<bool>("bind"); QTest::addColumn<QHostAddress>("peerAddress"); QHostAddress localhost(QHostAddress::LocalHost); - QHostAddress remote = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first(); + QList<QHostAddress> serverAddresses(QHostInfo::fromName(QtNetworkSettings::serverName()).addresses()); + if (serverAddresses.isEmpty()) + return; + + QHostAddress remote = serverAddresses.first(); QTest::newRow("localhost-unbound") << false << localhost; QTest::newRow("localhost-bound") << true << localhost; @@ -858,6 +861,8 @@ void tst_QUdpSocket::writeDatagramToNonExistingPeer_data() void tst_QUdpSocket::writeDatagramToNonExistingPeer() { + if (QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().isEmpty()) + QFAIL("Could not find test server address"); QFETCH(bool, bind); QFETCH(QHostAddress, peerAddress); @@ -879,7 +884,11 @@ void tst_QUdpSocket::writeToNonExistingPeer_data() { QTest::addColumn<QHostAddress>("peerAddress"); QHostAddress localhost(QHostAddress::LocalHost); - QHostAddress remote = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first(); + QList<QHostAddress> serverAddresses(QHostInfo::fromName(QtNetworkSettings::serverName()).addresses()); + if (serverAddresses.isEmpty()) + return; + + QHostAddress remote = serverAddresses.first(); // write (required to be connected) QTest::newRow("localhost") << localhost; QTest::newRow("remote") << remote; @@ -888,6 +897,8 @@ void tst_QUdpSocket::writeToNonExistingPeer_data() void tst_QUdpSocket::writeToNonExistingPeer() { QSKIP("Connected-mode UDP sockets and their behaviour are erratic"); + if (QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().isEmpty()) + QFAIL("Could not find test server address"); QFETCH(QHostAddress, peerAddress); quint16 peerPort = 34534; qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError"); @@ -1114,6 +1125,9 @@ void tst_QUdpSocket::multicastTtlOption_data() void tst_QUdpSocket::multicastTtlOption() { +#ifdef Q_OS_WINRT + QSKIP("WinRT does not support multicast."); +#endif QFETCH_GLOBAL(bool, setProxy); QFETCH(QHostAddress, bindAddress); QFETCH(int, ttl); @@ -1156,6 +1170,9 @@ void tst_QUdpSocket::multicastLoopbackOption_data() void tst_QUdpSocket::multicastLoopbackOption() { +#ifdef Q_OS_WINRT + QSKIP("WinRT does not support multicast."); +#endif QFETCH_GLOBAL(bool, setProxy); QFETCH(QHostAddress, bindAddress); QFETCH(int, loopback); @@ -1186,6 +1203,9 @@ void tst_QUdpSocket::multicastJoinBeforeBind_data() void tst_QUdpSocket::multicastJoinBeforeBind() { +#ifdef Q_OS_WINRT + QSKIP("WinRT does not support multicast."); +#endif QFETCH(QHostAddress, groupAddress); QUdpSocket udpSocket; @@ -1206,6 +1226,9 @@ void tst_QUdpSocket::multicastLeaveAfterClose_data() void tst_QUdpSocket::multicastLeaveAfterClose() { +#ifdef Q_OS_WINRT + QSKIP("WinRT does not support multicast."); +#endif QFETCH_GLOBAL(bool, setProxy); QFETCH(QHostAddress, groupAddress); if (setProxy) @@ -1247,6 +1270,9 @@ void tst_QUdpSocket::setMulticastInterface_data() void tst_QUdpSocket::setMulticastInterface() { +#ifdef Q_OS_WINRT + QSKIP("WinRT does not support multicast."); +#endif QFETCH_GLOBAL(bool, setProxy); QFETCH(QNetworkInterface, iface); QFETCH(QHostAddress, address); @@ -1295,6 +1321,9 @@ void tst_QUdpSocket::multicast_data() void tst_QUdpSocket::multicast() { +#ifdef Q_OS_WINRT + QSKIP("WinRT does not support multicast."); +#endif QFETCH_GLOBAL(bool, setProxy); QFETCH(QHostAddress, bindAddress); QFETCH(bool, bindResult); |