diff options
Diffstat (limited to 'tests/auto/network')
66 files changed, 1193 insertions, 226 deletions
diff --git a/tests/auto/network/access/access.pro b/tests/auto/network/access/access.pro index 3139f19f7b..bc76190e30 100644 --- a/tests/auto/network/access/access.pro +++ b/tests/auto/network/access/access.pro @@ -7,6 +7,7 @@ SUBDIRS=\ qnetworkrequest \ qhttpnetworkconnection \ qnetworkreply \ + spdy \ qnetworkcachemetadata \ qftp \ qhttpnetworkreply \ diff --git a/tests/auto/network/access/qabstractnetworkcache/qabstractnetworkcache.pro b/tests/auto/network/access/qabstractnetworkcache/qabstractnetworkcache.pro index 2b5ffab088..4772af9af9 100644 --- a/tests/auto/network/access/qabstractnetworkcache/qabstractnetworkcache.pro +++ b/tests/auto/network/access/qabstractnetworkcache/qabstractnetworkcache.pro @@ -6,4 +6,3 @@ SOURCES += tst_qabstractnetworkcache.cpp TESTDATA += tests/* -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp b/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp index 53b367c872..da86a2d14d 100644 --- a/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp +++ b/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp @@ -50,6 +50,8 @@ #include <QtNetwork/qnetworksession.h> #endif +#include <algorithm> + #define TESTFILE QString("http://%1/qtest/cgi-bin/").arg(QtNetworkSettings::serverName()) class tst_QAbstractNetworkCache : public QObject @@ -334,8 +336,8 @@ void tst_QAbstractNetworkCache::runTest() if (fetchFromCache) { QList<QByteArray> rawHeaderList = reply->rawHeaderList(); QList<QByteArray> rawHeaderList2 = reply2->rawHeaderList(); - qSort(rawHeaderList); - qSort(rawHeaderList2); + std::sort(rawHeaderList.begin(), rawHeaderList.end()); + std::sort(rawHeaderList2.begin(), rawHeaderList2.end()); } QCOMPARE(diskCache->gotData, fetchFromCache); } @@ -388,8 +390,8 @@ void tst_QAbstractNetworkCache::checkSynchronous() if (fetchFromCache) { QList<QByteArray> rawHeaderList = reply->rawHeaderList(); QList<QByteArray> rawHeaderList2 = reply2->rawHeaderList(); - qSort(rawHeaderList); - qSort(rawHeaderList2); + std::sort(rawHeaderList.begin(), rawHeaderList.end()); + std::sort(rawHeaderList2.begin(), rawHeaderList2.end()); } QCOMPARE(diskCache->gotData, fetchFromCache); } diff --git a/tests/auto/network/access/qftp/qftp.pro b/tests/auto/network/access/qftp/qftp.pro index 917cd10837..44161f4e1e 100644 --- a/tests/auto/network/access/qftp/qftp.pro +++ b/tests/auto/network/access/qftp/qftp.pro @@ -9,10 +9,6 @@ wince*: { addFiles.files = rfc3252.txt addFiles.path = . DEPLOYMENT += addFiles - DEFINES += SRCDIR=\\\"\\\" -} else { - DEFINES += SRCDIR=\\\"$$PWD/\\\" } CONFIG+=insignificant_test # QTBUG-15111: uses live qt-test-server, inherently unstable -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/qftp/tst_qftp.cpp b/tests/auto/network/access/qftp/tst_qftp.cpp index 71af9690be..5c6f48c59b 100644 --- a/tests/auto/network/access/qftp/tst_qftp.cpp +++ b/tests/auto/network/access/qftp/tst_qftp.cpp @@ -57,6 +57,14 @@ #include "../../../network-settings.h" +template <class T1, class T2> +static QByteArray msgComparison(T1 lhs, const char *op, T2 rhs) +{ + QString result; + QTextStream(&result) << lhs << ' ' << op << ' ' << rhs; + return result.toLatin1(); +} + class tst_QFtp : public QObject { Q_OBJECT @@ -174,6 +182,7 @@ private: bool inFileDirExistsFunction; QString uniqueExtension; + QString rfc3252File; }; //#define DUMP_SIGNALS @@ -197,14 +206,18 @@ void tst_QFtp::initTestCase_data() QTest::addColumn<bool>("setSession"); QTest::newRow("WithoutProxy") << false << 0 << false; +#ifndef QT_NO_SOCKS5 QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy) << false; +#endif //### doesn't work well yet. //QTest::newRow("WithHttpProxy") << true << int(QNetworkProxy::HttpProxy); #ifndef QT_NO_BEARERMANAGEMENT QTest::newRow("WithoutProxyWithSession") << false << 0 << true; +#ifndef QT_NO_SOCKS5 QTest::newRow("WithSocks5ProxyAndSession") << true << int(QNetworkProxy::Socks5Proxy) << true; #endif +#endif } void tst_QFtp::initTestCase() @@ -216,6 +229,8 @@ void tst_QFtp::initTestCase() networkSessionImplicit->open(); QVERIFY(networkSessionImplicit->waitForOpened(60000)); //there may be user prompt on 1st connect #endif + rfc3252File = QFINDTESTDATA("rfc3252.txt"); + QVERIFY(!rfc3252File.isEmpty()); } void tst_QFtp::cleanupTestCase() @@ -232,11 +247,16 @@ void tst_QFtp::init() QFETCH_GLOBAL(int, proxyType); QFETCH_GLOBAL(bool, setSession); if (setProxy) { +#ifndef QT_NO_NETWORKPROXY if (proxyType == QNetworkProxy::Socks5Proxy) { QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080)); } else if (proxyType == QNetworkProxy::HttpProxy) { QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::HttpProxy, QtNetworkSettings::serverName(), 3128)); } +#else // !QT_NO_NETWORKPROXY + Q_UNUSED(proxyType); + QSKIP("No proxy support"); +#endif // QT_NO_NETWORKPROXY } #ifndef QT_NO_BEARERMANAGEMENT if (setSession) { @@ -293,7 +313,11 @@ void tst_QFtp::cleanup() } QFETCH_GLOBAL(bool, setProxy); if (setProxy) { +#ifndef QT_NO_NETWORKPROXY QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy); +#else + QSKIP("No proxy support"); +#endif } delete ftp; @@ -314,6 +338,16 @@ void tst_QFtp::connectToHost_data() QTest::newRow( "error02" ) << QString("foo.bar") << (uint)21 << (int)QFtp::Unconnected; } +static QByteArray msgTimedOut(const QString &host, quint16 port = 0) +{ + QByteArray result = "Network operation timed out on " + host.toLatin1(); + if (port) { + result += ':'; + result += QByteArray::number(port); + } + return result; +} + void tst_QFtp::connectToHost() { QFETCH( QString, host ); @@ -326,7 +360,7 @@ void tst_QFtp::connectToHost() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); QTEST( connectToHost_state, "state" ); @@ -334,9 +368,9 @@ void tst_QFtp::connectToHost() QVERIFY( it != resultMap.end() ); QFETCH( int, state ); if ( state == QFtp::Connected ) { - QVERIFY( it.value().success == 1 ); + QCOMPARE( it.value().success, 1 ); } else { - QVERIFY( it.value().success == 0 ); + QCOMPARE( it.value().success , 0 ); } } @@ -369,10 +403,10 @@ void tst_QFtp::connectToUnresponsiveHost() #endif QVERIFY2(! QTestEventLoop::instance().timeout(), "Network timeout longer than expected (should have been 60 seconds)"); - QVERIFY( ftp->state() == QFtp::Unconnected); + QCOMPARE( ftp->state(), QFtp::Unconnected); ResMapIt it = resultMap.find( QFtp::ConnectToHost ); QVERIFY( it != resultMap.end() ); - QVERIFY( it.value().success == 0 ); + QCOMPARE( it.value().success, 0 ); delete ftp; ftp = 0; @@ -410,16 +444,17 @@ void tst_QFtp::login() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); ResMapIt it = resultMap.find( QFtp::Login ); QVERIFY( it != resultMap.end() ); QTEST( it.value().success, "success" ); + const QFtp::State loginState = static_cast<QFtp::State>(login_state); if ( it.value().success ) { - QVERIFY( login_state == QFtp::LoggedIn ); + QCOMPARE( loginState, QFtp::LoggedIn ); } else { - QVERIFY( login_state != QFtp::LoggedIn ); + QVERIFY2( loginState != QFtp::LoggedIn, msgComparison(loginState, "!=", QFtp::LoggedIn)); } } @@ -457,13 +492,13 @@ void tst_QFtp::close() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); QCOMPARE( close_state, (int)QFtp::Unconnected ); ResMapIt it = resultMap.find( QFtp::Close ); QVERIFY( it != resultMap.end() ); - QVERIFY( it.value().success == 1 ); + QCOMPARE( it.value().success, 1 ); } void tst_QFtp::list_data() @@ -525,7 +560,7 @@ void tst_QFtp::list() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); ResMapIt it = resultMap.find( QFtp::List ); QVERIFY( it != resultMap.end() ); @@ -586,7 +621,7 @@ void tst_QFtp::cd() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) { - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); } ResMapIt it = resultMap.find( QFtp::Cd ); @@ -611,8 +646,8 @@ void tst_QFtp::get_data() QTest::addColumn<bool>("useIODevice"); // ### move this into external testdata - QFile file( SRCDIR "rfc3252.txt" ); - QVERIFY( file.open( QIODevice::ReadOnly ) ); + QFile file(rfc3252File); + QVERIFY2( file.open( QIODevice::ReadOnly ), qPrintable(file.errorString()) ); QByteArray rfc3252 = file.readAll(); // test the two get() overloads in one routine @@ -662,7 +697,7 @@ void tst_QFtp::get() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); ResMapIt it = resultMap.find( QFtp::Get ); QVERIFY( it != resultMap.end() ); @@ -672,17 +707,17 @@ void tst_QFtp::get() } else { QTEST( newData_ba, "res" ); } - QVERIFY( bytesTotal != bytesTotal_init ); + QVERIFY2( bytesTotal != bytesTotal_init, msgComparison(bytesTotal, "!=", bytesTotal_init) ); if ( bytesTotal != -1 ) { - QVERIFY( bytesDone == bytesTotal ); + QCOMPARE( bytesDone, bytesTotal ); } if ( useIODevice ) { if ( bytesDone != bytesDone_init ) { - QVERIFY( (int)buf_ba.size() == bytesDone ); + QCOMPARE( qlonglong(buf_ba.size()), bytesDone ); } } else { if ( bytesDone != bytesDone_init ) { - QVERIFY( (int)newData_ba.size() == bytesDone ); + QCOMPARE( qlonglong(newData_ba.size()), bytesDone ); } } } @@ -699,8 +734,8 @@ void tst_QFtp::put_data() QTest::addColumn<int>("success"); // ### move this into external testdata - QFile file( SRCDIR "rfc3252.txt" ); - QVERIFY( file.open( QIODevice::ReadOnly ) ); + QFile file(rfc3252File); + QVERIFY2( file.open( QIODevice::ReadOnly ), qPrintable(file.errorString()) ); QByteArray rfc3252 = file.readAll(); QByteArray bigData( 10*1024*1024, 0 ); @@ -749,14 +784,14 @@ void tst_QFtp::put() QFETCH( QByteArray, fileData ); QFETCH( bool, useIODevice ); -#ifdef Q_OS_WIN +#if defined(Q_OS_WIN) && !defined(QT_NO_NETWORKPROXY) QFETCH_GLOBAL(bool, setProxy); if (setProxy) { QFETCH_GLOBAL(int, proxyType); if (proxyType == QNetworkProxy::Socks5Proxy) QSKIP("With socks5 the put() test takes too long time on Windows."); } -#endif +#endif // OS_WIN && !QT_NO_NETWORKPROXY const int timestep = 50; @@ -788,7 +823,7 @@ void tst_QFtp::put() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); it = resultMap.find( QFtp::Put ); QVERIFY( it != resultMap.end() ); @@ -797,8 +832,8 @@ void tst_QFtp::put() QVERIFY( !fileExists( host, port, user, password, file ) ); return; // the following tests are only meaningful if the file could be put } - QVERIFY( bytesTotal == (int)fileData.size() ); - QVERIFY( bytesDone == bytesTotal ); + QCOMPARE( bytesTotal, qlonglong(fileData.size()) ); + QCOMPARE( bytesDone, bytesTotal ); QVERIFY( fileExists( host, port, user, password, file ) ); @@ -821,9 +856,9 @@ void tst_QFtp::put() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); - QVERIFY( done_success == 1 ); + QCOMPARE( done_success, 1 ); QTEST( buf.buffer(), "fileData" ); ////////////////////////////////////////////////////////////////// @@ -839,7 +874,7 @@ void tst_QFtp::put() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); it = resultMap.find( QFtp::Remove ); QVERIFY( it != resultMap.end() ); @@ -903,7 +938,7 @@ void tst_QFtp::mkdir() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); ResMapIt it = resultMap.find( QFtp::Mkdir ); QVERIFY( it != resultMap.end() ); @@ -928,7 +963,7 @@ void tst_QFtp::mkdir() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); it = resultMap.find( QFtp::Mkdir ); QVERIFY( it != resultMap.end() ); @@ -948,7 +983,7 @@ void tst_QFtp::mkdir() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); it = resultMap.find( QFtp::Rmdir ); QVERIFY( it != resultMap.end() ); @@ -1061,11 +1096,11 @@ void tst_QFtp::renameInit( const QString &host, const QString &user, const QStri delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host) ); ResMapIt it = resultMap.find( QFtp::Put ); QVERIFY( it != resultMap.end() ); - QVERIFY( it.value().success == 1 ); + QCOMPARE( it.value().success, 1 ); QVERIFY( fileExists( host, 21, user, password, createFile ) ); } @@ -1086,11 +1121,11 @@ void tst_QFtp::renameCleanup( const QString &host, const QString &user, const QS delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host) ); ResMapIt it = resultMap.find( QFtp::Remove ); QVERIFY( it != resultMap.end() ); - QVERIFY( it.value().success == 1 ); + QCOMPARE( it.value().success, 1 ); QVERIFY( !fileExists( host, 21, user, password, fileToDelete ) ); } @@ -1131,7 +1166,7 @@ void tst_QFtp::rename() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host) ); ResMapIt it = resultMap.find( QFtp::Rename ); QVERIFY( it != resultMap.end() ); @@ -1287,25 +1322,27 @@ void tst_QFtp::commandSequence() QFETCH( QList<FtpCommand>, cmds ); ftp = newFtp(); + QString host; + quint16 port = 0; QList<FtpCommand>::iterator it; for ( it = cmds.begin(); it != cmds.end(); ++it ) { switch ( (*it).cmd ) { case QFtp::ConnectToHost: { - QVERIFY( (*it).args.count() == 2 ); - uint port; + QCOMPARE( (*it).args.count(), 2 ); bool portOk; - port = (*it).args[1].toUInt( &portOk ); + port = (*it).args[1].toUShort( &portOk ); QVERIFY( portOk ); - ids << ftp->connectToHost( (*it).args[0], port ); + host = (*it).args[0]; + ids << ftp->connectToHost( host, port ); } break; case QFtp::Login: - QVERIFY( (*it).args.count() == 2 ); + QCOMPARE( (*it).args.count(), 2 ); ids << ftp->login( (*it).args[0], (*it).args[1] ); break; case QFtp::Close: - QVERIFY( (*it).args.count() == 0 ); + QCOMPARE( (*it).args.count(), 0 ); ids << ftp->close(); break; default: @@ -1318,7 +1355,7 @@ void tst_QFtp::commandSequence() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host) ); QTEST( commandSequence_success, "success" ); } @@ -1345,6 +1382,7 @@ void tst_QFtp::abort_data() void tst_QFtp::abort() { + QSKIP("This test takes too long."); // In case you wonder where the abort() actually happens, look into // tst_QFtp::dataTransferProgress // @@ -1376,7 +1414,7 @@ void tst_QFtp::abort() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); ResMapIt it = resultMap.find( cmd ); QVERIFY( it != resultMap.end() ); @@ -1386,18 +1424,18 @@ void tst_QFtp::abort() // the operation was aborted. So we have to use some heuristics. if ( host == QtNetworkSettings::serverName() ) { if ( cmd == QFtp::Get ) { - QVERIFY(bytesDone <= bytesTotal); + QVERIFY2(bytesDone <= bytesTotal, msgComparison(bytesDone, "<=", bytesTotal)); } else { // put commands should always be aborted, since we use really // big data - QVERIFY( bytesDone != bytesTotal ); + QVERIFY2( bytesDone != bytesTotal, msgComparison(bytesDone, "!=", bytesTotal) ); } } else { // this could be tested by verifying that no more progress signals are emitted - QVERIFY(bytesDone <= bytesTotal); + QVERIFY2(bytesDone <= bytesTotal, msgComparison(bytesDone, "<=", bytesTotal)); } } else { - QVERIFY( bytesDone != bytesTotal ); + QVERIFY2( bytesDone != bytesTotal, msgComparison(bytesDone, "!=", bytesTotal) ); } if ( cmd == QFtp::Put ) { @@ -1414,11 +1452,11 @@ void tst_QFtp::abort() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); it = resultMap.find( QFtp::Remove ); QVERIFY( it != resultMap.end() ); - QVERIFY( it.value().success == 1 ); + QCOMPARE( it.value().success, 1 ); } } @@ -1453,7 +1491,7 @@ void tst_QFtp::bytesAvailable() QTestEventLoop::instance().enterLoop( 40 ); if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host) ); ResMapIt it = resultMap.find( QFtp::Get ); QVERIFY( it != resultMap.end() ); @@ -1469,7 +1507,7 @@ void tst_QFtp::bytesAvailable() QCOMPARE(bytesAvailable_done, bytesAvailDone); ftp->readAll(); - QVERIFY( ftp->bytesAvailable() == 0 ); + QCOMPARE( ftp->bytesAvailable(), 0 ); delete ftp; ftp = 0; } @@ -1487,7 +1525,7 @@ void tst_QFtp::activeMode() connect(&ftp, SIGNAL(done(bool)), SLOT(activeModeDone(bool))); QTestEventLoop::instance().enterLoop(900); QFile::remove("tst_QFtp_activeMode_inittab"); - QVERIFY(done_success == 1); + QCOMPARE(done_success, 1); } @@ -1546,7 +1584,7 @@ void tst_QFtp::proxy() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) { - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(host, port) ); } ResMapIt it = resultMap.find( QFtp::Cd ); @@ -1581,7 +1619,7 @@ void tst_QFtp::binaryAscii() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(QtNetworkSettings::serverName()) ); ResMapIt it = resultMap.find(QFtp::Put); QVERIFY(it != resultMap.end()); @@ -1603,7 +1641,7 @@ void tst_QFtp::binaryAscii() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(QtNetworkSettings::serverName()) ); ResMapIt it2 = resultMap.find(QFtp::Get); QVERIFY(it2 != resultMap.end()); @@ -1611,7 +1649,7 @@ void tst_QFtp::binaryAscii() // most modern ftp servers leave the file as it is by default // (and do not remove the windows line ending), the -1 below could be // deleted in the future - QVERIFY(getData.size() == putData.size()-1); + QCOMPARE(getData.size(), putData.size() - 1); ////////////////////////////////////////////////////////////////// // cleanup (i.e. remove the file) -- this also tests the remove command init(); @@ -1626,7 +1664,7 @@ void tst_QFtp::binaryAscii() delete ftp; ftp = 0; if ( QTestEventLoop::instance().timeout() ) - QFAIL( "Network operation timed out" ); + QFAIL( msgTimedOut(QtNetworkSettings::serverName()) ); it = resultMap.find( QFtp::Remove ); QVERIFY( it != resultMap.end() ); @@ -1653,11 +1691,11 @@ void tst_QFtp::commandStarted( int id ) qDebug( "%d:commandStarted( %d )", ftp->currentId(), id ); #endif // make sure that the commandStarted and commandFinished are nested correctly - QVERIFY( current_id == 0 ); + QCOMPARE( current_id, 0 ); current_id = id; QVERIFY( !ids.isEmpty() ); - QVERIFY( ids.first() == id ); + QCOMPARE( ids.first(), id ); if ( ids.count() > 1 ) { QVERIFY( ftp->hasPendingCommands() ); } else { @@ -1665,10 +1703,10 @@ void tst_QFtp::commandStarted( int id ) } QVERIFY( ftp->currentId() == id ); - QVERIFY( cur_state == ftp->state() ); + QCOMPARE( cur_state, int(ftp->state()) ); CURRENTCOMMAND_TEST; - QVERIFY( ftp->error() == QFtp::NoError ); + QCOMPARE( ftp->error(), QFtp::NoError ); } void tst_QFtp::commandFinished( int id, bool error ) @@ -1683,32 +1721,32 @@ void tst_QFtp::commandFinished( int id, bool error ) bytesAvailable_finished = ftp->bytesAvailable(); // make sure that the commandStarted and commandFinished are nested correctly - QVERIFY( current_id == id ); + QCOMPARE( current_id, id ); current_id = 0; QVERIFY( !ids.isEmpty() ); - QVERIFY( ids.first() == id ); + QCOMPARE( ids.first(), id ); if ( !error && ids.count() > 1) { QVERIFY( ftp->hasPendingCommands() ); } else { QVERIFY( !ftp->hasPendingCommands() ); } if ( error ) { - QVERIFY( ftp->error() != QFtp::NoError ); + QVERIFY2( ftp->error() != QFtp::NoError, msgComparison(ftp->error(), "!=", QFtp::NoError) ); ids.clear(); } else { - QVERIFY( ftp->error() == QFtp::NoError ); + QCOMPARE( ftp->error(), QFtp::NoError ); ids.pop_front(); } - QVERIFY( ftp->currentId() == id ); - QVERIFY( cur_state == ftp->state() ); + QCOMPARE( ftp->currentId(), id ); + QCOMPARE( cur_state, int(ftp->state()) ); CURRENTCOMMAND_TEST; if ( QTest::currentTestFunction() != QLatin1String("commandSequence") ) { ResMapIt it = resultMap.find( ftp->currentCommand() ); QVERIFY( it != resultMap.end() ); - QVERIFY( it.value().success == -1 ); + QCOMPARE( it.value().success, -1 ); if ( error ) it.value().success = 0; else @@ -1723,25 +1761,25 @@ void tst_QFtp::done( bool error ) #endif bytesAvailable_done = ftp->bytesAvailable(); - QVERIFY( ftp->currentId() == 0 ); + QCOMPARE( ftp->currentId(), 0 ); QVERIFY( current_id == 0 ); QVERIFY( ids.isEmpty() ); QVERIFY( cur_state == ftp->state() ); QVERIFY( !ftp->hasPendingCommands() ); if ( QTest::currentTestFunction() == QLatin1String("commandSequence") ) { - QVERIFY( commandSequence_success == -1 ); + QCOMPARE( commandSequence_success, -1 ); if ( error ) commandSequence_success = 0; else commandSequence_success = 1; } - QVERIFY( done_success == -1 ); + QCOMPARE( done_success, -1 ); if ( error ) { - QVERIFY( ftp->error() != QFtp::NoError ); + QVERIFY2( ftp->error() != QFtp::NoError, msgComparison(ftp->error(), "!=", QFtp::NoError) ); done_success = 0; } else { - QVERIFY( ftp->error() == QFtp::NoError ); + QCOMPARE( ftp->error(), QFtp::NoError ); done_success = 1; } QTestEventLoop::instance().exitLoop(); @@ -1755,13 +1793,13 @@ void tst_QFtp::stateChanged( int state ) QCOMPARE( ftp->currentId(), current_id ); CURRENTCOMMAND_TEST; - QVERIFY( state != cur_state ); + QVERIFY2( state != cur_state, msgComparison(state, "!=", cur_state) ); QCOMPARE( state, (int)ftp->state() ); if ( state != QFtp::Unconnected ) { // make sure that the states are always emitted in the right order (for // this, we assume an ordering on the enum values, which they have at // the moment) - QVERIFY( cur_state < state ); + QVERIFY2( cur_state < state, msgComparison(cur_state, "<", state) ); // make sure that state changes are only emitted in response to certain // commands @@ -1805,10 +1843,10 @@ void tst_QFtp::stateChanged( int state ) ResMapIt it = resultMap.find( QFtp::Close ); if ( it!=resultMap.end() && ftp->currentId()==it.value().id ) { if ( state == QFtp::Closing ) { - QVERIFY( close_state == -1 ); + QCOMPARE( close_state, -1 ); close_state = state; } else if ( state == QFtp::Unconnected ) { - QVERIFY( close_state == QFtp::Closing ); + QCOMPARE(close_state, int(QFtp::Closing) ); close_state = state; } } @@ -1816,7 +1854,7 @@ void tst_QFtp::stateChanged( int state ) ResMapIt it = resultMap.find( QFtp::Login ); if ( it!=resultMap.end() && ftp->currentId()==it.value().id ) { if ( state == QFtp::LoggedIn ) { - QVERIFY( login_state == -1 ); + QCOMPARE( login_state, -1 ); login_state = state; } } @@ -1834,13 +1872,13 @@ void tst_QFtp::listInfo( const QUrlInfo &i ) } else { QVERIFY( !ftp->hasPendingCommands() ); } - QVERIFY( cur_state == ftp->state() ); + QCOMPARE( cur_state, int(ftp->state()) ); CURRENTCOMMAND_TEST; if ( QTest::currentTestFunction()==QLatin1String("list") || QTest::currentTestFunction()==QLatin1String("cd") || QTest::currentTestFunction()==QLatin1String("proxy") || inFileDirExistsFunction ) { ResMapIt it = resultMap.find( QFtp::List ); QVERIFY( it != resultMap.end() ); - QVERIFY( ftp->currentId() == it.value().id ); + QCOMPARE( ftp->currentId(), it.value().id ); listInfo_i << i; } } @@ -1863,14 +1901,14 @@ void tst_QFtp::readyRead() int oldSize = newData_ba.size(); qlonglong bytesAvail = ftp->bytesAvailable(); QByteArray ba = ftp->readAll(); - QVERIFY( ba.size() == (int) bytesAvail ); + QCOMPARE( ba.size(), (int) bytesAvail ); newData_ba.resize( oldSize + ba.size() ); memcpy( newData_ba.data()+oldSize, ba.data(), ba.size() ); if ( bytesTotal != -1 ) { - QVERIFY( (int)newData_ba.size() <= bytesTotal ); + QVERIFY2( (int)newData_ba.size() <= bytesTotal, msgComparison(newData_ba.size(), "<=", bytesTotal) ); } - QVERIFY( (int)newData_ba.size() == bytesDone ); + QCOMPARE( qlonglong(newData_ba.size()), bytesDone ); } } @@ -1885,20 +1923,20 @@ void tst_QFtp::dataTransferProgress( qint64 done, qint64 total ) } else { QVERIFY( !ftp->hasPendingCommands() ); } - QVERIFY( cur_state == ftp->state() ); + QCOMPARE( cur_state, int(ftp->state()) ); CURRENTCOMMAND_TEST; if ( bytesTotal == bytesTotal_init ) { bytesTotal = total; } else { - QVERIFY( bytesTotal == total ); + QCOMPARE( bytesTotal, total ); } - QVERIFY( bytesTotal != bytesTotal_init ); - QVERIFY( bytesDone <= done ); + QVERIFY2( bytesTotal != bytesTotal_init, msgComparison(bytesTotal, "!=", bytesTotal_init) ); + QVERIFY2( bytesDone <= done, msgComparison(bytesDone, "<=", done) ); bytesDone = done; if ( bytesTotal != -1 ) { - QVERIFY( bytesDone <= bytesTotal ); + QVERIFY2( bytesDone <= bytesTotal, msgComparison(bytesDone, "<=", bytesTotal) ); } if ( QTest::currentTestFunction() == QLatin1String("abort") ) { @@ -2031,7 +2069,7 @@ bool tst_QFtp::dirExists( const QString &host, quint16 port, const QString &user ftp = 0; if ( QTestEventLoop::instance().timeout() ) { // ### make this test work - // QFAIL( "Network operation timed out" ); + // QFAIL( msgTimedOut(host, port) ); qWarning("tst_QFtp::dirExists: Network operation timed out"); return false; } diff --git a/tests/auto/network/access/qhttpnetworkconnection/qhttpnetworkconnection.pro b/tests/auto/network/access/qhttpnetworkconnection/qhttpnetworkconnection.pro index 5f5966e90d..fa19fa7ac9 100644 --- a/tests/auto/network/access/qhttpnetworkconnection/qhttpnetworkconnection.pro +++ b/tests/auto/network/access/qhttpnetworkconnection/qhttpnetworkconnection.pro @@ -5,4 +5,3 @@ SOURCES += tst_qhttpnetworkconnection.cpp requires(contains(QT_CONFIG,private_tests)) QT = core-private network-private testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp b/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp index 8e0090e486..b793df674b 100644 --- a/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp +++ b/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp @@ -303,7 +303,7 @@ void tst_QHttpNetworkConnection::put_data() QTest::newRow("success-internal") << "http://" << QtNetworkSettings::serverName() << "/dav/file1.txt" << ushort(80) << false << "Hello World\nEnd of file\n"<<true; QTest::newRow("fail-internal") << "http://" << QtNetworkSettings::serverName() << "/dav2/file1.txt" << ushort(80) << false << "Hello World\nEnd of file\n"<<false; - QTest::newRow("fail-host") << "http://" << "fluke-nosuchhost.troll.no" << "/dav2/file1.txt" << ushort(80) << false << "Hello World\nEnd of file\n"<<false; + QTest::newRow("fail-host") << "http://" << "invalid.test.qt-project.org" << "/dav2/file1.txt" << ushort(80) << false << "Hello World\nEnd of file\n"<<false; } void tst_QHttpNetworkConnection::put() diff --git a/tests/auto/network/access/qhttpnetworkreply/qhttpnetworkreply.pro b/tests/auto/network/access/qhttpnetworkreply/qhttpnetworkreply.pro index 2eb0944e44..f5dbc7f010 100644 --- a/tests/auto/network/access/qhttpnetworkreply/qhttpnetworkreply.pro +++ b/tests/auto/network/access/qhttpnetworkreply/qhttpnetworkreply.pro @@ -5,4 +5,3 @@ SOURCES += tst_qhttpnetworkreply.cpp requires(contains(QT_CONFIG,private_tests)) QT = core-private network-private testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/qnetworkaccessmanager/qnetworkaccessmanager.pro b/tests/auto/network/access/qnetworkaccessmanager/qnetworkaccessmanager.pro index e6354d0479..8b3de90f54 100644 --- a/tests/auto/network/access/qnetworkaccessmanager/qnetworkaccessmanager.pro +++ b/tests/auto/network/access/qnetworkaccessmanager/qnetworkaccessmanager.pro @@ -3,4 +3,3 @@ CONFIG += parallel_test TARGET = tst_qnetworkaccessmanager SOURCES += tst_qnetworkaccessmanager.cpp QT = core network testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/qnetworkcachemetadata/qnetworkcachemetadata.pro b/tests/auto/network/access/qnetworkcachemetadata/qnetworkcachemetadata.pro index 7342252963..d308c286fb 100644 --- a/tests/auto/network/access/qnetworkcachemetadata/qnetworkcachemetadata.pro +++ b/tests/auto/network/access/qnetworkcachemetadata/qnetworkcachemetadata.pro @@ -3,4 +3,3 @@ CONFIG += parallel_test TARGET = tst_qnetworkcachemetadata QT = core network testlib SOURCES += tst_qnetworkcachemetadata.cpp -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/qnetworkcookie/qnetworkcookie.pro b/tests/auto/network/access/qnetworkcookie/qnetworkcookie.pro index edbc972011..ba3ece8576 100644 --- a/tests/auto/network/access/qnetworkcookie/qnetworkcookie.pro +++ b/tests/auto/network/access/qnetworkcookie/qnetworkcookie.pro @@ -4,4 +4,3 @@ TARGET = tst_qnetworkcookie SOURCES += tst_qnetworkcookie.cpp QT = core network testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/qnetworkcookiejar/qnetworkcookiejar.pro b/tests/auto/network/access/qnetworkcookiejar/qnetworkcookiejar.pro index 2fc1485a50..bb39f83af6 100644 --- a/tests/auto/network/access/qnetworkcookiejar/qnetworkcookiejar.pro +++ b/tests/auto/network/access/qnetworkcookiejar/qnetworkcookiejar.pro @@ -4,4 +4,3 @@ TARGET = tst_qnetworkcookiejar SOURCES += tst_qnetworkcookiejar.cpp QT = core core-private network network-private testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp index 4ee4b67ec0..bcfe9f090f 100644 --- a/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp +++ b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp @@ -211,6 +211,17 @@ void tst_QNetworkCookieJar::setCookiesFromUrl_data() result += cookie; QTest::newRow("effective-tld2-accepted") << preset << cookie << "http://www.gobiernoelectronico.ar" << result << true; + result.clear(); + preset.clear(); + cookie.setDomain("127.0.0.1"); + result += cookie; + QTest::newRow("IPv4-address-as-domain") << preset << cookie << "http://127.0.0.1/" << result << true; + + result.clear(); + preset.clear(); + cookie.setDomain("fe80::250:56ff:fec0:1"); + result += cookie; + QTest::newRow("IPv6-address-as-domain") << preset << cookie << "http://[fe80::250:56ff:fec0:1]/" << result << true; // setting the defaults: finalCookie = cookie; diff --git a/tests/auto/network/access/qnetworkdiskcache/qnetworkdiskcache.pro b/tests/auto/network/access/qnetworkdiskcache/qnetworkdiskcache.pro index 57f9c0534a..7e26abbe08 100644 --- a/tests/auto/network/access/qnetworkdiskcache/qnetworkdiskcache.pro +++ b/tests/auto/network/access/qnetworkdiskcache/qnetworkdiskcache.pro @@ -3,4 +3,3 @@ CONFIG += parallel_test TARGET = tst_qnetworkdiskcache QT = core network testlib SOURCES += tst_qnetworkdiskcache.cpp -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp index 54b560cc1b..44edcc66c0 100644 --- a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp +++ b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp @@ -43,6 +43,9 @@ #include <QtTest/QtTest> #include <QtNetwork/QtNetwork> #include <qnetworkdiskcache.h> + +#include <algorithm> + #define EXAMPLE_URL "http://user:pass@www.example.com/#foo" //cached objects are organized into these many subdirs #define NUM_SUBDIRECTORIES 16 @@ -464,7 +467,7 @@ void tst_QNetworkDiskCache::expire() cacheList.append(metaData.url().toString()); } } - qSort(cacheList); + std::sort(cacheList.begin(), cacheList.end()); for (int i = 0; i < cacheList.count(); ++i) { QString fileName = cacheList[i]; QCOMPARE(fileName, QString("http://www.foo.com/%1").arg(i + 6)); diff --git a/tests/auto/network/access/qnetworkreply/echo/echo.pro b/tests/auto/network/access/qnetworkreply/echo/echo.pro index d634c677c6..1f05fd9a54 100644 --- a/tests/auto/network/access/qnetworkreply/echo/echo.pro +++ b/tests/auto/network/access/qnetworkreply/echo/echo.pro @@ -2,4 +2,3 @@ SOURCES += main.cpp QT = core CONFIG -= app_bundle debug_and_release_target CONFIG += console -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/qnetworkreply/test/test.pro b/tests/auto/network/access/qnetworkreply/test/test.pro index cc58843eef..b683f620df 100644 --- a/tests/auto/network/access/qnetworkreply/test/test.pro +++ b/tests/auto/network/access/qnetworkreply/test/test.pro @@ -14,4 +14,3 @@ contains(QT_CONFIG,xcb): CONFIG+=insignificant_test # unstable, QTBUG-21102 win32:CONFIG += insignificant_test # QTBUG-24226 TEST_HELPER_INSTALLS = ../echo/echo -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp index 291b368e47..11ea8aebc8 100644 --- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -97,7 +97,9 @@ Q_DECLARE_METATYPE(QSharedPointer<char>) #include "../../../network-settings.h" Q_DECLARE_METATYPE(QAuthenticator*) +#ifndef QT_NO_NETWORKPROXY Q_DECLARE_METATYPE(QNetworkProxyQuery) +#endif typedef QSharedPointer<QNetworkReply> QNetworkReplyPtr; @@ -106,6 +108,7 @@ class tst_QNetworkReply: public QObject { Q_OBJECT +#ifndef QT_NO_NETWORKPROXY struct ProxyData { ProxyData(const QNetworkProxy &p, const QByteArray &t, bool auth) : tag(t), proxy(p), requiresAuthentication(auth) @@ -114,6 +117,7 @@ class tst_QNetworkReply: public QObject QNetworkProxy proxy; bool requiresAuthentication; }; +#endif // !QT_NO_NETWORKPROXY static bool seedCreated; static QString createUniqueExtension() { @@ -134,7 +138,9 @@ class tst_QNetworkReply: public QObject QString wronlyFileName; #endif QString uniqueExtension; +#ifndef QT_NO_NETWORKPROXY QList<ProxyData> proxies; +#endif QNetworkAccessManager manager; MyCookieJar *cookieJar; #ifndef QT_NO_SSL @@ -203,8 +209,10 @@ private Q_SLOTS: void getFromHttp(); void getErrors_data(); void getErrors(); +#ifndef QT_NO_NETWORKPROXY void headFromHttp_data(); void headFromHttp(); +#endif // !QT_NO_NETWORKPROXY void putToFile_data(); void putToFile(); void putToFtp_data(); @@ -261,9 +269,11 @@ private Q_SLOTS: void ioGetFromHttpWithAuth_data(); void ioGetFromHttpWithAuth(); void ioGetFromHttpWithAuthSynchronous(); +#ifndef QT_NO_NETWORKPROXY void ioGetFromHttpWithProxyAuth(); void ioGetFromHttpWithProxyAuthSynchronous(); void ioGetFromHttpWithSocksProxy(); +#endif // !QT_NO_NETWORKPROXY #ifndef QT_NO_SSL void ioGetFromHttpsWithSslErrors(); void ioGetFromHttpsWithIgnoreSslErrors(); @@ -278,8 +288,10 @@ private Q_SLOTS: void ioGetFromHttpWithCache_data(); void ioGetFromHttpWithCache(); +#ifndef QT_NO_NETWORKPROXY void ioGetWithManyProxies_data(); void ioGetWithManyProxies(); +#endif // !QT_NO_NETWORKPROXY void ioPutToFileFromFile_data(); void ioPutToFileFromFile(); @@ -297,10 +309,12 @@ private Q_SLOTS: void ioPutToHttpFromFile(); void ioPostToHttpFromFile_data(); void ioPostToHttpFromFile(); +#ifndef QT_NO_NETWORKPROXY void ioPostToHttpFromSocket_data(); void ioPostToHttpFromSocket(); void ioPostToHttpFromSocketSynchronous(); void ioPostToHttpFromSocketSynchronous_data(); +#endif // !QT_NO_NETWORKPROXY void ioPostToHttpFromMiddleOfFileToEnd(); void ioPostToHttpFromMiddleOfFileFiveBytes(); void ioPostToHttpFromMiddleOfQBufferFiveBytes(); @@ -339,11 +353,13 @@ private Q_SLOTS: void nestedEventLoops(); +#ifndef QT_NO_NETWORKPROXY void httpProxyCommands_data(); void httpProxyCommands(); void httpProxyCommandsSynchronous_data(); void httpProxyCommandsSynchronous(); void proxyChange(); +#endif // !QT_NO_NETWORKPROXY void authorizationError_data(); void authorizationError(); @@ -419,9 +435,11 @@ private Q_SLOTS: void dontInsertPartialContentIntoTheCache(); void httpUserAgent(); +#ifndef QT_NO_NETWORKPROXY void authenticationCacheAfterCancel_data(); void authenticationCacheAfterCancel(); void authenticationWithDifferentRealm(); +#endif // !QT_NO_NETWORKPROXY void synchronousAuthenticationCache(); void pipelining(); @@ -512,7 +530,7 @@ class MiniHttpServer: public QTcpServer { Q_OBJECT public: - QTcpSocket *client; // always the last one that was received + QPointer<QTcpSocket> client; // always the last one that was received QByteArray dataToTransmit; QByteArray receivedData; QSemaphore ready; @@ -523,13 +541,15 @@ public: int totalConnections; MiniHttpServer(const QByteArray &data, bool ssl = false, QThread *thread = 0, bool useipv6 = false) - : client(0), dataToTransmit(data), doClose(true), doSsl(ssl), ipv6(useipv6), + : dataToTransmit(data), doClose(true), doSsl(ssl), ipv6(useipv6), multiple(false), totalConnections(0) { if (useipv6) { - listen(QHostAddress::AnyIPv6); + if (!listen(QHostAddress::AnyIPv6)) + qWarning() << "listen() IPv6 failed" << errorString(); } else { - listen(QHostAddress::AnyIPv4); + if (!listen(QHostAddress::AnyIPv4)) + qWarning() << "listen() IPv4 failed" << errorString(); } if (thread) { connect(thread, SIGNAL(started()), this, SLOT(threadStartedSlot())); @@ -573,6 +593,7 @@ protected: } virtual void reply() { + Q_ASSERT(!client.isNull()); // we need to emulate the bytesWrittenSlot call if the data is empty. if (dataToTransmit.size() == 0) QMetaObject::invokeMethod(this, "bytesWrittenSlot", Qt::QueuedConnection); @@ -582,10 +603,11 @@ protected: private: void connectSocketSignals() { + Q_ASSERT(!client.isNull()); //qDebug() << "connectSocketSignals" << client; - connect(client, SIGNAL(readyRead()), this, SLOT(readyReadSlot())); - connect(client, SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWrittenSlot())); - connect(client, SIGNAL(error(QAbstractSocket::SocketError)), + connect(client.data(), SIGNAL(readyRead()), this, SLOT(readyReadSlot())); + connect(client.data(), SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWrittenSlot())); + connect(client.data(), SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(slotError(QAbstractSocket::SocketError))); } @@ -593,17 +615,20 @@ private slots: #ifndef QT_NO_SSL void slotSslErrors(const QList<QSslError>& errors) { + Q_ASSERT(!client.isNull()); qDebug() << "slotSslErrors" << client->errorString() << errors; } #endif void slotError(QAbstractSocket::SocketError err) { + Q_ASSERT(!client.isNull()); qDebug() << "slotError" << err << client->errorString(); } public slots: void readyReadSlot() { + Q_ASSERT(!client.isNull()); receivedData += client->readAll(); int doubleEndlPos = receivedData.indexOf("\r\n\r\n"); @@ -617,9 +642,11 @@ public slots: } void bytesWrittenSlot() { + Q_ASSERT(!client.isNull()); + // Disconnect and delete in next cycle (else Windows clients will fail with RemoteHostClosedError). if (doClose && client->bytesToWrite() == 0) { - client->disconnectFromHost(); disconnect(client, 0, this, 0); + client->deleteLater(); } } @@ -638,6 +665,7 @@ public: { QNetworkCookieJar::setAllCookies(cookieList); } }; +#ifndef QT_NO_NETWORKPROXY class MyProxyFactory: public QNetworkProxyFactory { public: @@ -660,6 +688,7 @@ public: return toReturn; } }; +#endif // !QT_NO_NETWORKPROXY class MyMemoryCache: public QAbstractNetworkCache { @@ -1154,7 +1183,9 @@ tst_QNetworkReply::tst_QNetworkReply() { qRegisterMetaType<QNetworkReply *>(); // for QSignalSpy qRegisterMetaType<QAuthenticator *>(); +#ifndef QT_NO_NETWORKPROXY qRegisterMetaType<QNetworkProxy>(); +#endif #ifndef QT_NO_SSL qRegisterMetaType<QList<QSslError> >(); #endif @@ -1165,6 +1196,7 @@ tst_QNetworkReply::tst_QNetworkReply() cookieJar = new MyCookieJar; manager.setCookieJar(cookieJar); +#ifndef QT_NO_NETWORKPROXY QHostInfo hostInfo = QHostInfo::fromName(QtNetworkSettings::serverName()); proxies << ProxyData(QNetworkProxy::NoProxy, "", false); @@ -1178,10 +1210,13 @@ tst_QNetworkReply::tst_QNetworkReply() << ProxyData(QNetworkProxy(QNetworkProxy::Socks5Proxy, proxyserver, 1080), "+socks", false) << ProxyData(QNetworkProxy(QNetworkProxy::Socks5Proxy, proxyserver, 1081), "+socksauth", true); } else { +#endif // !QT_NO_NETWORKPROXY printf("==================================================================\n"); printf("Proxy could not be looked up. No proxy will be used while testing!\n"); printf("==================================================================\n"); +#ifndef QT_NO_NETWORKPROXY } +#endif // !QT_NO_NETWORKPROXY } tst_QNetworkReply::~tst_QNetworkReply() @@ -1344,6 +1379,22 @@ QString tst_QNetworkReply::runCustomRequest(const QNetworkRequest &request, return QString(); } +static QByteArray msgWaitForFinished(QNetworkReplyPtr &reply) +{ + QString result; + QDebug debug(&result); + debug << reply->url(); + if (reply->isFinished()) { + if (reply->error() == QNetworkReply::NoError) + debug << "finished."; + else + debug << "failed: #" << reply->error() << reply->errorString(); + } else { + debug << "timed out."; + } + return result.toLocal8Bit(); +} + int tst_QNetworkReply::waitForFinish(QNetworkReplyPtr &reply) { int count = 0; @@ -1438,7 +1489,9 @@ void tst_QNetworkReply::cleanup() // clear the internal cache manager.clearAccessCache(); +#ifndef QT_NO_NETWORKPROXY manager.setProxy(QNetworkProxy()); +#endif manager.setCache(0); // clear cookies @@ -1732,6 +1785,7 @@ void tst_QNetworkReply::getFromHttp() QCOMPARE(reply->readAll(), reference.readAll()); } +#ifndef QT_NO_NETWORKPROXY void tst_QNetworkReply::headFromHttp_data() { QTest::addColumn<qint64>("referenceSize"); @@ -1790,6 +1844,7 @@ void tst_QNetworkReply::headFromHttp() if (reply->header(QNetworkRequest::ContentTypeHeader).isValid()) QCOMPARE(reply->header(QNetworkRequest::ContentTypeHeader).toString(), contentType); } +#endif // !QT_NO_NETWORKPROXY void tst_QNetworkReply::getErrors_data() { @@ -1805,7 +1860,7 @@ void tst_QNetworkReply::getErrors_data() << int(QNetworkReply::ProtocolUnknownError) << 0 << true; // file: errors - QTest::newRow("file-host") << "file://this-host-doesnt-exist.troll.no/foo.txt" + QTest::newRow("file-host") << "file://invalid.test.qt-project.org/foo.txt" #if !defined Q_OS_WIN << int(QNetworkReply::ProtocolInvalidOperationError) << 0 << true; #else @@ -1826,7 +1881,7 @@ void tst_QNetworkReply::getErrors_data() << int(QNetworkReply::ContentAccessDenied) << 0 << true; // ftp: errors - QTest::newRow("ftp-host") << "ftp://this-host-doesnt-exist.troll.no/foo.txt" + QTest::newRow("ftp-host") << "ftp://invalid.test.qt-project.org/foo.txt" << int(QNetworkReply::HostNotFoundError) << 0 << true; QTest::newRow("ftp-no-path") << "ftp://" + QtNetworkSettings::serverName() << int(QNetworkReply::ContentOperationNotPermittedError) << 0 << true; @@ -1840,7 +1895,7 @@ void tst_QNetworkReply::getErrors_data() << int(QNetworkReply::ContentNotFoundError) << 0 << true; // http: errors - QTest::newRow("http-host") << "http://this-host-will-never-exist.troll.no/" + QTest::newRow("http-host") << "http://invalid.test.qt-project.org/" << int(QNetworkReply::HostNotFoundError) << 0 << true; QTest::newRow("http-exist") << "http://" + QtNetworkSettings::serverName() + "/this-file-doesnt-exist.txt" << int(QNetworkReply::ContentNotFoundError) << 404 << false; @@ -2802,7 +2857,7 @@ void tst_QNetworkReply::connectToIPv6Address() QNetworkRequest request(url); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QByteArray content = reply->readAll(); //qDebug() << server.receivedData; QByteArray hostinfo = "\r\nHost: " + hostfield + ":" + QByteArray::number(server.serverPort()) + "\r\n"; @@ -2826,9 +2881,9 @@ void tst_QNetworkReply::sendCustomRequestToHttp_data() QTest::newRow("trace") << QUrl("http://" + QtNetworkSettings::serverName()) << QByteArray("TRACE") << (QBuffer *) 0 << 200 << QNetworkReply::NoError << QByteArray(); QTest::newRow("connect") << QUrl("http://" + QtNetworkSettings::serverName()) << - QByteArray("CONNECT") << (QBuffer *) 0 << 400 << QNetworkReply::UnknownContentError << QByteArray(); // 400 = Bad Request + QByteArray("CONNECT") << (QBuffer *) 0 << 400 << QNetworkReply::ProtocolInvalidOperationError << QByteArray(); // 400 = Bad Request QTest::newRow("nonsense") << QUrl("http://" + QtNetworkSettings::serverName()) << - QByteArray("NONSENSE") << (QBuffer *) 0 << 501 << QNetworkReply::ProtocolUnknownError << QByteArray(); // 501 = Method Not Implemented + QByteArray("NONSENSE") << (QBuffer *) 0 << 501 << QNetworkReply::OperationNotImplementedError << QByteArray(); // 501 = Method Not Implemented QByteArray ba("test"); QBuffer *buffer = new QBuffer; @@ -2983,7 +3038,7 @@ void tst_QNetworkReply::ioGetFromFtp() QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -3038,7 +3093,7 @@ void tst_QNetworkReply::ioGetFromHttp() QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -3092,7 +3147,7 @@ void tst_QNetworkReply::ioGetFromHttpWithReuseSequential() QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -3110,7 +3165,7 @@ void tst_QNetworkReply::ioGetFromHttpWithReuseSequential() QNetworkReplyPtr reply(manager.get(request)); DataReader reader(reply); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -3189,7 +3244,7 @@ void tst_QNetworkReply::ioGetFromHttpWithAuth() connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); manager.disconnect(SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); @@ -3270,6 +3325,7 @@ void tst_QNetworkReply::ioGetFromHttpWithAuthSynchronous() QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 401); } +#ifndef QT_NO_NETWORKPROXY void tst_QNetworkReply::ioGetFromHttpWithProxyAuth() { // This test sends three requests @@ -3321,7 +3377,7 @@ void tst_QNetworkReply::ioGetFromHttpWithProxyAuth() connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); manager.disconnect(SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); @@ -3394,7 +3450,7 @@ void tst_QNetworkReply::ioGetFromHttpWithSocksProxy() connect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); manager.disconnect(SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); @@ -3432,6 +3488,7 @@ void tst_QNetworkReply::ioGetFromHttpWithSocksProxy() QCOMPARE(authspy.count(), 0); } } +#endif // !QT_NO_NETWORKPROXY #ifndef QT_NO_SSL void tst_QNetworkReply::ioGetFromHttpsWithSslErrors() @@ -3448,7 +3505,7 @@ void tst_QNetworkReply::ioGetFromHttpsWithSslErrors() SLOT(sslErrors(QNetworkReply*,QList<QSslError>))); connect(reply, SIGNAL(metaDataChanged()), SLOT(storeSslConfiguration())); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); manager.disconnect(SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)), this, SLOT(sslErrors(QNetworkReply*,QList<QSslError>))); @@ -3479,7 +3536,7 @@ void tst_QNetworkReply::ioGetFromHttpsWithIgnoreSslErrors() QSignalSpy sslspy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>))); connect(reply, SIGNAL(metaDataChanged()), SLOT(storeSslConfiguration())); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); QCOMPARE(reader.data, reference.readAll()); @@ -3592,7 +3649,7 @@ void tst_QNetworkReply::ioGetFromHttpStatus100() QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -3615,7 +3672,7 @@ void tst_QNetworkReply::ioGetFromHttpNoHeaders() QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -3793,6 +3850,7 @@ void tst_QNetworkReply::ioGetFromHttpWithCache() QCOMPARE(reply->readAll().constData(), qPrintable(body)); } +#ifndef QT_NO_NETWORKPROXY void tst_QNetworkReply::ioGetWithManyProxies_data() { QTest::addColumn<QList<QNetworkProxy> >("proxyList"); @@ -4054,6 +4112,7 @@ void tst_QNetworkReply::ioGetWithManyProxies() QCOMPARE(authspy.count(), 0); } } +#endif // !QT_NO_NETWORKPROXY void tst_QNetworkReply::ioPutToFileFromFile_data() { @@ -4077,7 +4136,7 @@ void tst_QNetworkReply::ioPutToFileFromFile() QNetworkRequest request(url); QNetworkReplyPtr reply(manager.put(request, &sourceFile)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), url); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -4112,7 +4171,7 @@ void tst_QNetworkReply::ioPutToFileFromSocket() QNetworkReplyPtr reply(manager.put(QNetworkRequest(url), socketpair.endPoints[1])); socketpair.endPoints[0]->close(); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->url(), url); @@ -4160,7 +4219,7 @@ void tst_QNetworkReply::ioPutToFileFromLocalSocket() if (!data.isEmpty()) QEXPECT_FAIL("", "QTBUG-18385", Abort); #endif - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->url(), url); @@ -4208,7 +4267,7 @@ void tst_QNetworkReply::ioPutToFileFromProcess() QNetworkReplyPtr reply(manager.put(QNetworkRequest(url), &process)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), url); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -4242,7 +4301,7 @@ void tst_QNetworkReply::ioPutToFtpFromFile() QNetworkRequest request(url); QNetworkReplyPtr reply(manager.put(request, &sourceFile)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), url); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -4291,7 +4350,7 @@ void tst_QNetworkReply::ioPutToHttpFromFile() QNetworkRequest request(url); QNetworkReplyPtr reply(manager.put(request, &sourceFile)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), url); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -4306,7 +4365,7 @@ void tst_QNetworkReply::ioPutToHttpFromFile() // correctly reply.reset(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), url); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -4332,7 +4391,7 @@ void tst_QNetworkReply::ioPostToHttpFromFile() QNetworkReplyPtr reply(manager.post(request, &sourceFile)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), url); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -4346,6 +4405,7 @@ void tst_QNetworkReply::ioPostToHttpFromFile() QCOMPARE(reply->readAll().trimmed(), md5sum(sourceFile.readAll()).toHex()); } +#ifndef QT_NO_NETWORKPROXY void tst_QNetworkReply::ioPostToHttpFromSocket_data() { QTest::addColumn<QByteArray>("data"); @@ -4418,7 +4478,7 @@ void tst_QNetworkReply::ioPostToHttpFromSocket() QSignalSpy authenticationRequiredSpy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*))); QSignalSpy proxyAuthenticationRequiredSpy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); disconnect(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); @@ -4496,6 +4556,7 @@ void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous() QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex()); } +#endif // !QT_NO_NETWORKPROXY // this tests checks if rewinding the POST-data to some place in the middle // worked. @@ -4514,7 +4575,7 @@ void tst_QNetworkReply::ioPostToHttpFromMiddleOfFileToEnd() connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); @@ -4543,7 +4604,7 @@ void tst_QNetworkReply::ioPostToHttpFromMiddleOfFileFiveBytes() connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); @@ -4571,7 +4632,7 @@ void tst_QNetworkReply::ioPostToHttpFromMiddleOfQBufferFiveBytes() connect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); disconnect(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), this, SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*))); @@ -4711,7 +4772,7 @@ void tst_QNetworkReply::ioPostToHttpsUploadProgress() incomingSocket->write("Content-Length: 0\r\n"); incomingSocket->write("\r\n"); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); incomingSocket->close(); server.close(); @@ -4770,7 +4831,7 @@ void tst_QNetworkReply::ioGetFromBuiltinHttp() QTime loopTime; loopTime.start(); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); const int elapsedTime = loopTime.elapsed(); server.wait(); @@ -4925,7 +4986,7 @@ void tst_QNetworkReply::lastModifiedHeaderForFile() QNetworkRequest request(url); QNetworkReplyPtr reply(manager.head(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QDateTime header = reply->header(QNetworkRequest::LastModifiedHeader).toDateTime(); QCOMPARE(header, fileInfo.lastModified()); @@ -4939,7 +5000,7 @@ void tst_QNetworkReply::lastModifiedHeaderForHttp() QNetworkRequest request(url); QNetworkReplyPtr reply(manager.head(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QDateTime header = reply->header(QNetworkRequest::LastModifiedHeader).toDateTime(); QDateTime realDate = QDateTime::fromString("2007-05-22T12:04:57", Qt::ISODate); @@ -4953,7 +5014,7 @@ void tst_QNetworkReply::httpCanReadLine() QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -4999,7 +5060,7 @@ void tst_QNetworkReply::rateControl() QTime loopTime; loopTime.start(); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); int elapsedTime = loopTime.elapsed(); @@ -5124,7 +5185,7 @@ void tst_QNetworkReply::uploadProgress() QTcpSocket *receiver = server.nextPendingConnection(); if (finished.count() == 0) { // it's not finished yet, so wait for it to be - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); } delete receiver; @@ -5410,6 +5471,7 @@ void tst_QNetworkReply::nestedEventLoops() QCOMPARE(errorspy.count(), 0); } +#ifndef QT_NO_NETWORKPROXY void tst_QNetworkReply::httpProxyCommands_data() { QTest::addColumn<QUrl>("url"); @@ -5485,6 +5547,7 @@ void tst_QNetworkReply::httpProxyCommandsSynchronous_data() { httpProxyCommands_data(); } +#endif // !QT_NO_NETWORKPROXY struct QThreadCleanup { @@ -5506,6 +5569,7 @@ struct QDeleteLaterCleanup } }; +#ifndef QT_NO_NETWORKPROXY void tst_QNetworkReply::httpProxyCommandsSynchronous() { QFETCH(QUrl, url); @@ -5586,6 +5650,7 @@ void tst_QNetworkReply::proxyChange() QVERIFY(int(reply3->error()) > 0); } +#endif // !QT_NO_NETWORKPROXY void tst_QNetworkReply::authorizationError_data() { @@ -6365,7 +6430,7 @@ void tst_QNetworkReply::getFromHttpIntoBufferCanReadLine() request.setAttribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute, 1024*1024*128); // 128 MB is max allowed QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->error(), QNetworkReply::NoError); QVERIFY(reply->canReadLine()); @@ -6389,7 +6454,7 @@ void tst_QNetworkReply::ioGetFromHttpWithoutContentLength() QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->url(), request.url()); QVERIFY(reply->isFinished()); @@ -6437,7 +6502,7 @@ void tst_QNetworkReply::qtbug12908compressedHttpReply() QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->size(), qint64(16384)); @@ -6502,6 +6567,7 @@ void tst_QNetworkReply::qtbug4121unknownAuthentication() QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError); } +#ifndef QT_NO_NETWORKPROXY void tst_QNetworkReply::authenticationCacheAfterCancel_data() { QTest::addColumn<QNetworkProxy>("proxy"); @@ -6715,6 +6781,7 @@ void tst_QNetworkReply::authenticationWithDifferentRealm() QVERIFY(!QTestEventLoop::instance().timeout()); QCOMPARE(reply->error(), QNetworkReply::NoError); } +#endif // !QT_NO_NETWORKPROXY class QtBug13431Helper : public QObject { Q_OBJECT @@ -6777,7 +6844,7 @@ void tst_QNetworkReply::httpWithNoCredentialUsage() { QNetworkRequest request(QUrl("http://httptest:httptest@" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi")); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); // credentials in URL, so don't expect authentication signal QCOMPARE(authSpy.count(), 0); QCOMPARE(finishedSpy.count(), 1); @@ -6788,7 +6855,7 @@ void tst_QNetworkReply::httpWithNoCredentialUsage() { QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi")); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); // credentials in cache, so don't expect authentication signal QCOMPARE(authSpy.count(), 0); QCOMPARE(finishedSpy.count(), 1); @@ -6825,7 +6892,7 @@ void tst_QNetworkReply::qtbug15311doubleContentLength() QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -6844,7 +6911,7 @@ void tst_QNetworkReply::qtbug18232gzipContentLengthZero() QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -6865,7 +6932,7 @@ void tst_QNetworkReply::qtbug22660gzipNoContentLengthEmptyContent() QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -6934,7 +7001,7 @@ void tst_QNetworkReply::qtbug27161httpHeaderMayBeDamaged(){ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -6984,7 +7051,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort()))); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -6993,7 +7060,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { server.setDataToTransmit(getReply); reply.reset(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -7004,7 +7071,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { request.setRawHeader("Content-Type", "text/plain"); reply.reset(manager.post(request, postData)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -7015,7 +7082,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { server.setDataToTransmit(getReply); reply.reset(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -7025,7 +7092,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { server.setDataToTransmit(getReply); reply.reset(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -7035,7 +7102,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { server.setDataToTransmit(putReply); reply.reset(manager.put(request, postData)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -7044,7 +7111,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { server.setDataToTransmit(getReply); reply.reset(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -7054,7 +7121,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { server.setDataToTransmit(getReply); reply.reset(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); @@ -7263,7 +7330,7 @@ void tst_QNetworkReply::dontInsertPartialContentIntoTheCache() QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(server.totalConnections > 0); QCOMPARE(reply->readAll().constData(), "load"); @@ -7280,7 +7347,7 @@ void tst_QNetworkReply::httpUserAgent() request.setHeader(QNetworkRequest::UserAgentHeader, "abcDEFghi"); QNetworkReplyPtr reply(manager.get(request)); - QVERIFY(waitForFinish(reply) == Success); + QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); QVERIFY(reply->isFinished()); QCOMPARE(reply->error(), QNetworkReply::NoError); diff --git a/tests/auto/network/access/qnetworkrequest/qnetworkrequest.pro b/tests/auto/network/access/qnetworkrequest/qnetworkrequest.pro index bbcb9226aa..0470d96b8c 100644 --- a/tests/auto/network/access/qnetworkrequest/qnetworkrequest.pro +++ b/tests/auto/network/access/qnetworkrequest/qnetworkrequest.pro @@ -4,4 +4,3 @@ TARGET = tst_qnetworkrequest SOURCES += tst_qnetworkrequest.cpp QT = core network testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/spdy/spdy.pro b/tests/auto/network/access/spdy/spdy.pro new file mode 100644 index 0000000000..6bfc6d84e0 --- /dev/null +++ b/tests/auto/network/access/spdy/spdy.pro @@ -0,0 +1,7 @@ +CONFIG += testcase +CONFIG += parallel_test +TARGET = tst_spdy +SOURCES += tst_spdy.cpp + +QT = core core-private network network-private testlib +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/access/spdy/tst_spdy.cpp b/tests/auto/network/access/spdy/tst_spdy.cpp new file mode 100644 index 0000000000..3f69549bbd --- /dev/null +++ b/tests/auto/network/access/spdy/tst_spdy.cpp @@ -0,0 +1,704 @@ +/**************************************************************************** +** +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include <QtTest/QtTest> +#include <QtNetwork/QNetworkAccessManager> +#include <QtNetwork/QNetworkReply> +#include <QtNetwork/QHttpPart> +#include <QtNetwork/QHttpMultiPart> +#include <QtNetwork/QNetworkProxy> +#include <QtNetwork/QAuthenticator> +#if defined(QT_BUILD_INTERNAL) && !defined(QT_NO_OPENSSL) +#include <QtNetwork/private/qsslsocket_openssl_p.h> +#endif // QT_BUILD_INTERNAL && !QT_NO_OPENSSL + +#include "../../../network-settings.h" + +Q_DECLARE_METATYPE(QAuthenticator*) + +class tst_Spdy: public QObject +{ + Q_OBJECT + +public: + tst_Spdy(); + ~tst_Spdy(); + +private Q_SLOTS: + void initTestCase(); + void settingsAndNegotiation_data(); + void settingsAndNegotiation(); +#ifndef QT_NO_NETWORKPROXY + void download_data(); + void download(); +#endif // !QT_NO_NETWORKPROXY + void headerFields(); +#ifndef QT_NO_NETWORKPROXY + void upload_data(); + void upload(); + void errors_data(); + void errors(); +#endif // !QT_NO_NETWORKPROXY + void multipleRequests_data(); + void multipleRequests(); + +private: + QNetworkAccessManager m_manager; + int m_multipleRequestsCount; + int m_multipleRepliesFinishedCount; + +protected Q_SLOTS: + void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *authenticator); + void multipleRequestsFinishedSlot(); +}; + +tst_Spdy::tst_Spdy() +{ +#if defined(QT_BUILD_INTERNAL) && !defined(QT_NO_SSL) && OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_NEXTPROTONEG) + qRegisterMetaType<QNetworkReply *>(); // for QSignalSpy + qRegisterMetaType<QAuthenticator *>(); + + connect(&m_manager, SIGNAL(proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *)), + this, SLOT(proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *))); +#else + QSKIP("Qt built withouth OpenSSL, or the OpenSSL version is too old"); +#endif // defined(QT_BUILD_INTERNAL) && !defined(QT_NO_SSL) ... +} + +tst_Spdy::~tst_Spdy() +{ +} + +void tst_Spdy::initTestCase() +{ + QVERIFY(QtNetworkSettings::verifyTestNetworkSettings()); +} + +void tst_Spdy::settingsAndNegotiation_data() +{ + QTest::addColumn<QUrl>("url"); + QTest::addColumn<bool>("setAttribute"); + QTest::addColumn<bool>("enabled"); + QTest::addColumn<QByteArray>("expectedProtocol"); + QTest::addColumn<QByteArray>("expectedContent"); + + QTest::newRow("default-settings") << QUrl("https://" + QtNetworkSettings::serverName() + + "/qtest/cgi-bin/echo.cgi?1") + << false << false << QByteArray() + << QByteArray("1"); + + QTest::newRow("http-url") << QUrl("http://" + QtNetworkSettings::serverName() + + "/qtest/cgi-bin/echo.cgi?1") + << true << true << QByteArray() + << QByteArray("1"); + + QTest::newRow("spdy-disabled") << QUrl("https://" + QtNetworkSettings::serverName() + + "/qtest/cgi-bin/echo.cgi?1") + << true << false << QByteArray() + << QByteArray("1"); + +#ifndef QT_NO_OPENSSL + QTest::newRow("spdy-enabled") << QUrl("https://" + QtNetworkSettings::serverName() + + "/qtest/cgi-bin/echo.cgi?1") + << true << true << QByteArray(QSslConfiguration::NextProtocolSpdy3_0) + << QByteArray("1"); +#endif // QT_NO_OPENSSL +} + +void tst_Spdy::settingsAndNegotiation() +{ + QFETCH(QUrl, url); + QFETCH(bool, setAttribute); + QFETCH(bool, enabled); + + QNetworkRequest request(url); + + if (setAttribute) { + request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, QVariant(enabled)); + } + + QNetworkReply *reply = m_manager.get(request); + reply->ignoreSslErrors(); + QSignalSpy metaDataChangedSpy(reply, SIGNAL(metaDataChanged())); + QSignalSpy readyReadSpy(reply, SIGNAL(readyRead())); + QSignalSpy finishedSpy(reply, SIGNAL(finished())); + + QObject::connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); + QSignalSpy finishedManagerSpy(&m_manager, SIGNAL(finished(QNetworkReply*))); + + QTestEventLoop::instance().enterLoop(15); + QVERIFY(!QTestEventLoop::instance().timeout()); + + QFETCH(QByteArray, expectedProtocol); + +#ifndef QT_NO_OPENSSL + bool expectedSpdyUsed = (expectedProtocol == QSslConfiguration::NextProtocolSpdy3_0) + ? true : false; + QCOMPARE(reply->attribute(QNetworkRequest::SpdyWasUsedAttribute).toBool(), expectedSpdyUsed); +#endif // QT_NO_OPENSSL + + QCOMPARE(metaDataChangedSpy.count(), 1); + QCOMPARE(finishedSpy.count(), 1); + + int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + QCOMPARE(statusCode, 200); + + QByteArray content = reply->readAll(); + + QFETCH(QByteArray, expectedContent); + QCOMPARE(expectedContent, content); + +#ifndef QT_NO_OPENSSL + QSslConfiguration::NextProtocolNegotiationStatus expectedStatus = + (expectedProtocol.isEmpty()) + ? QSslConfiguration::NextProtocolNegotiationNone + : QSslConfiguration::NextProtocolNegotiationNegotiated; + QCOMPARE(reply->sslConfiguration().nextProtocolNegotiationStatus(), + expectedStatus); + + QCOMPARE(reply->sslConfiguration().nextNegotiatedProtocol(), expectedProtocol); +#endif // QT_NO_OPENSSL +} + +void tst_Spdy::proxyAuthenticationRequired(const QNetworkProxy &/*proxy*/, + QAuthenticator *authenticator) +{ + authenticator->setUser("qsockstest"); + authenticator->setPassword("password"); +} + +#ifndef QT_NO_NETWORKPROXY +void tst_Spdy::download_data() +{ + QTest::addColumn<QUrl>("url"); + QTest::addColumn<QString>("fileName"); + QTest::addColumn<QNetworkProxy>("proxy"); + + QTest::newRow("mediumfile") << QUrl("https://" + QtNetworkSettings::serverName() + + "/qtest/rfc3252.txt") + << QFINDTESTDATA("../qnetworkreply/rfc3252.txt") + << QNetworkProxy(); + + QHostInfo hostInfo = QHostInfo::fromName(QtNetworkSettings::serverName()); + QString proxyserver = hostInfo.addresses().first().toString(); + + QTest::newRow("mediumfile-http-proxy") << QUrl("https://" + QtNetworkSettings::serverName() + + "/qtest/rfc3252.txt") + << QFINDTESTDATA("../qnetworkreply/rfc3252.txt") + << QNetworkProxy(QNetworkProxy::HttpProxy, proxyserver, 3128); + + QTest::newRow("mediumfile-http-proxy-auth") << QUrl("https://" + QtNetworkSettings::serverName() + + "/qtest/rfc3252.txt") + << QFINDTESTDATA("../qnetworkreply/rfc3252.txt") + << QNetworkProxy(QNetworkProxy::HttpProxy, + proxyserver, 3129); + + QTest::newRow("mediumfile-socks-proxy") << QUrl("https://" + QtNetworkSettings::serverName() + + "/qtest/rfc3252.txt") + << QFINDTESTDATA("../qnetworkreply/rfc3252.txt") + << QNetworkProxy(QNetworkProxy::Socks5Proxy, proxyserver, 1080); + + QTest::newRow("mediumfile-socks-proxy-auth") << QUrl("https://" + QtNetworkSettings::serverName() + + "/qtest/rfc3252.txt") + << QFINDTESTDATA("../qnetworkreply/rfc3252.txt") + << QNetworkProxy(QNetworkProxy::Socks5Proxy, + proxyserver, 1081); + + QTest::newRow("bigfile") << QUrl("https://" + QtNetworkSettings::serverName() + + "/qtest/bigfile") + << QFINDTESTDATA("../qnetworkreply/bigfile") + << QNetworkProxy(); +} + +void tst_Spdy::download() +{ + QFETCH(QUrl, url); + QFETCH(QString, fileName); + QFETCH(QNetworkProxy, proxy); + + QNetworkRequest request(url); + request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, true); + + if (proxy.type() != QNetworkProxy::DefaultProxy) { + m_manager.setProxy(proxy); + } + QNetworkReply *reply = m_manager.get(request); + reply->ignoreSslErrors(); + QSignalSpy metaDataChangedSpy(reply, SIGNAL(metaDataChanged())); + QSignalSpy downloadProgressSpy(reply, SIGNAL(downloadProgress(qint64, qint64))); + QSignalSpy readyReadSpy(reply, SIGNAL(readyRead())); + QSignalSpy finishedSpy(reply, SIGNAL(finished())); + + QObject::connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); + QSignalSpy finishedManagerSpy(&m_manager, SIGNAL(finished(QNetworkReply*))); + QSignalSpy proxyAuthRequiredSpy(&m_manager, SIGNAL( + proxyAuthenticationRequired(const QNetworkProxy &, + QAuthenticator *))); + + QTestEventLoop::instance().enterLoop(15); + QVERIFY(!QTestEventLoop::instance().timeout()); + + QCOMPARE(finishedManagerSpy.count(), 1); + QCOMPARE(metaDataChangedSpy.count(), 1); + QCOMPARE(finishedSpy.count(), 1); + QVERIFY(downloadProgressSpy.count() > 0); + QVERIFY(readyReadSpy.count() > 0); + + QVERIFY(proxyAuthRequiredSpy.count() <= 1); + + QCOMPARE(reply->error(), QNetworkReply::NoError); + QCOMPARE(reply->attribute(QNetworkRequest::SpdyWasUsedAttribute).toBool(), true); + QCOMPARE(reply->attribute(QNetworkRequest::ConnectionEncryptedAttribute).toBool(), true); + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); + + QFile file(fileName); + QVERIFY(file.open(QIODevice::ReadOnly)); + + qint64 contentLength = reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(); + qint64 expectedContentLength = file.bytesAvailable(); + QCOMPARE(contentLength, expectedContentLength); + + QByteArray expectedContent = file.readAll(); + QByteArray content = reply->readAll(); + QCOMPARE(content, expectedContent); + + reply->deleteLater(); + m_manager.setProxy(QNetworkProxy()); // reset +} +#endif // !QT_NO_NETWORKPROXY + +void tst_Spdy::headerFields() +{ + QUrl url(QUrl("https://" + QtNetworkSettings::serverName())); + QNetworkRequest request(url); + request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, true); + + QNetworkReply *reply = m_manager.get(request); + reply->ignoreSslErrors(); + + QObject::connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); + + QTestEventLoop::instance().enterLoop(15); + QVERIFY(!QTestEventLoop::instance().timeout()); + + QCOMPARE(reply->rawHeader("Content-Type"), QByteArray("text/html")); + QVERIFY(reply->rawHeader("Content-Length").toInt() > 0); + QVERIFY(reply->rawHeader("server").contains("Apache")); + + QCOMPARE(reply->header(QNetworkRequest::ContentTypeHeader).toByteArray(), QByteArray("text/html")); + QVERIFY(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong() > 0); + QVERIFY(reply->header(QNetworkRequest::LastModifiedHeader).toDateTime().isValid()); + QVERIFY(reply->header(QNetworkRequest::ServerHeader).toByteArray().contains("Apache")); +} + +static inline QByteArray md5sum(const QByteArray &data) +{ + return QCryptographicHash::hash(data, QCryptographicHash::Md5).toHex().append('\n'); +} + +#ifndef QT_NO_NETWORKPROXY +void tst_Spdy::upload_data() +{ + QTest::addColumn<QUrl>("url"); + QTest::addColumn<QByteArray>("data"); + QTest::addColumn<QByteArray>("uploadMethod"); + QTest::addColumn<QObject *>("uploadObject"); + QTest::addColumn<QByteArray>("md5sum"); + QTest::addColumn<QNetworkProxy>("proxy"); + + + // 1. test uploading of byte arrays + + QUrl md5Url("https://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi"); + + QByteArray data; + data = ""; + QObject *dummyObject = 0; + QTest::newRow("empty") << md5Url << data << QByteArray("POST") << dummyObject + << md5sum(data) << QNetworkProxy(); + + data = "This is a normal message."; + QTest::newRow("generic") << md5Url << data << QByteArray("POST") << dummyObject + << md5sum(data) << QNetworkProxy(); + + data = "This is a message to show that Qt rocks!\r\n\n"; + QTest::newRow("small") << md5Url << data << QByteArray("POST") << dummyObject + << md5sum(data) << QNetworkProxy(); + + data = QByteArray("abcd\0\1\2\abcd",12); + QTest::newRow("with-nul") << md5Url << data << QByteArray("POST") << dummyObject + << md5sum(data) << QNetworkProxy(); + + data = QByteArray(4097, '\4'); + QTest::newRow("4k+1") << md5Url << data << QByteArray("POST") << dummyObject + << md5sum(data)<< QNetworkProxy(); + + QHostInfo hostInfo = QHostInfo::fromName(QtNetworkSettings::serverName()); + QString proxyserver = hostInfo.addresses().first().toString(); + + QTest::newRow("4k+1-with-http-proxy") << md5Url << data << QByteArray("POST") << dummyObject + << md5sum(data) + << QNetworkProxy(QNetworkProxy::HttpProxy, proxyserver, 3128); + + QTest::newRow("4k+1-with-http-proxy-auth") << md5Url << data << QByteArray("POST") << dummyObject + << md5sum(data) + << QNetworkProxy(QNetworkProxy::HttpProxy, + proxyserver, 3129); + + QTest::newRow("4k+1-with-socks-proxy") << md5Url << data << QByteArray("POST") << dummyObject + << md5sum(data) + << QNetworkProxy(QNetworkProxy::Socks5Proxy, proxyserver, 1080); + + QTest::newRow("4k+1-with-socks-proxy-auth") << md5Url << data << QByteArray("POST") << dummyObject + << md5sum(data) + << QNetworkProxy(QNetworkProxy::Socks5Proxy, + proxyserver, 1081); + + data = QByteArray(128*1024+1, '\177'); + QTest::newRow("128k+1") << md5Url << data << QByteArray("POST") << dummyObject + << md5sum(data) << QNetworkProxy(); + + data = QByteArray(128*1024+1, '\177'); + QTest::newRow("128k+1-put") << md5Url << data << QByteArray("PUT") << dummyObject + << md5sum(data) << QNetworkProxy(); + + data = QByteArray(2*1024*1024+1, '\177'); + QTest::newRow("2MB+1") << md5Url << data << QByteArray("POST") << dummyObject + << md5sum(data) << QNetworkProxy(); + + + // 2. test uploading of files + + QFile *file = new QFile(QFINDTESTDATA("../qnetworkreply/rfc3252.txt")); + file->open(QIODevice::ReadOnly); + QTest::newRow("file-26K") << md5Url << QByteArray() << QByteArray("POST") + << static_cast<QObject *>(file) + << QByteArray("b3e32ac459b99d3f59318f3ac31e4bee\n") << QNetworkProxy(); + + QFile *file2 = new QFile(QFINDTESTDATA("../qnetworkreply/image1.jpg")); + file2->open(QIODevice::ReadOnly); + QTest::newRow("file-1MB") << md5Url << QByteArray() << QByteArray("POST") + << static_cast<QObject *>(file2) + << QByteArray("87ef3bb319b004ba9e5e9c9fa713776e\n") << QNetworkProxy(); + + + // 3. test uploading of multipart + + QUrl multiPartUrl("https://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/multipart.cgi"); + + QHttpPart imagePart31; + imagePart31.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg")); + imagePart31.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage1\"")); + imagePart31.setRawHeader("Content-Location", "http://my.test.location.tld"); + imagePart31.setRawHeader("Content-ID", "my@id.tld"); + QFile *file31 = new QFile(QFINDTESTDATA("../qnetworkreply/image1.jpg")); + file31->open(QIODevice::ReadOnly); + imagePart31.setBodyDevice(file31); + QHttpMultiPart *imageMultiPart3 = new QHttpMultiPart(QHttpMultiPart::FormDataType); + imageMultiPart3->append(imagePart31); + file31->setParent(imageMultiPart3); + QHttpPart imagePart32; + imagePart32.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg")); + imagePart32.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage2\"")); + QFile *file32 = new QFile(QFINDTESTDATA("../qnetworkreply/image2.jpg")); + file32->open(QIODevice::ReadOnly); + imagePart32.setBodyDevice(file31); // check that resetting works + imagePart32.setBodyDevice(file32); + imageMultiPart3->append(imagePart32); + file32->setParent(imageMultiPart3); + QHttpPart imagePart33; + imagePart33.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg")); + imagePart33.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"testImage3\"")); + QFile *file33 = new QFile(QFINDTESTDATA("../qnetworkreply/image3.jpg")); + file33->open(QIODevice::ReadOnly); + imagePart33.setBodyDevice(file33); + imageMultiPart3->append(imagePart33); + file33->setParent(imageMultiPart3); + QByteArray expectedData = "content type: multipart/form-data; boundary=\"" + + imageMultiPart3->boundary(); + expectedData.append("\"\nkey: testImage1, value: 87ef3bb319b004ba9e5e9c9fa713776e\n" + "key: testImage2, value: 483761b893f7fb1bd2414344cd1f3dfb\n" + "key: testImage3, value: ab0eb6fd4fcf8b4436254870b4513033\n"); + + QTest::newRow("multipart-3images") << multiPartUrl << QByteArray() << QByteArray("POST") + << static_cast<QObject *>(imageMultiPart3) << expectedData + << QNetworkProxy(); +} + +void tst_Spdy::upload() +{ + QFETCH(QUrl, url); + QNetworkRequest request(url); + request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, true); + + QFETCH(QByteArray, data); + QFETCH(QByteArray, uploadMethod); + QFETCH(QObject *, uploadObject); + QFETCH(QNetworkProxy, proxy); + + if (proxy.type() != QNetworkProxy::DefaultProxy) { + m_manager.setProxy(proxy); + } + + QNetworkReply *reply; + QHttpMultiPart *multiPart = 0; + + if (uploadObject) { + // upload via device + if (QIODevice *device = qobject_cast<QIODevice *>(uploadObject)) { + reply = m_manager.post(request, device); + } else if ((multiPart = qobject_cast<QHttpMultiPart *>(uploadObject))) { + reply = m_manager.post(request, multiPart); + } else { + QFAIL("got unknown upload device"); + } + } else { + // upload via byte array + if (uploadMethod == "PUT") { + reply = m_manager.put(request, data); + } else { + reply = m_manager.post(request, data); + } + } + + reply->ignoreSslErrors(); + QSignalSpy metaDataChangedSpy(reply, SIGNAL(metaDataChanged())); + QSignalSpy uploadProgressSpy(reply, SIGNAL(uploadProgress(qint64, qint64))); + QSignalSpy readyReadSpy(reply, SIGNAL(readyRead())); + QSignalSpy finishedSpy(reply, SIGNAL(finished())); + + QObject::connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); + QSignalSpy finishedManagerSpy(&m_manager, SIGNAL(finished(QNetworkReply*))); + + QTestEventLoop::instance().enterLoop(20); + QVERIFY(!QTestEventLoop::instance().timeout()); + + QCOMPARE(finishedManagerSpy.count(), 1); + QCOMPARE(metaDataChangedSpy.count(), 1); + QCOMPARE(finishedSpy.count(), 1); + QVERIFY(uploadProgressSpy.count() > 0); + QVERIFY(readyReadSpy.count() > 0); + + QCOMPARE(reply->error(), QNetworkReply::NoError); + QCOMPARE(reply->attribute(QNetworkRequest::SpdyWasUsedAttribute).toBool(), true); + QCOMPARE(reply->attribute(QNetworkRequest::ConnectionEncryptedAttribute).toBool(), true); + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); + + qint64 contentLength = reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(); + if (!multiPart) // script to test multiparts does not return a content length + QCOMPARE(contentLength, 33); // 33 bytes for md5 sums (including new line) + + QFETCH(QByteArray, md5sum); + QByteArray content = reply->readAll(); + QCOMPARE(content, md5sum); + + reply->deleteLater(); + if (uploadObject) + uploadObject->deleteLater(); + + m_manager.setProxy(QNetworkProxy()); // reset +} + +void tst_Spdy::errors_data() +{ + QTest::addColumn<QUrl>("url"); + QTest::addColumn<QNetworkProxy>("proxy"); + QTest::addColumn<bool>("ignoreSslErrors"); + QTest::addColumn<int>("expectedReplyError"); + + QTest::newRow("http-404") << QUrl("https://" + QtNetworkSettings::serverName() + "/non-existent-url") + << QNetworkProxy() << true << int(QNetworkReply::ContentNotFoundError); + + QTest::newRow("ssl-errors") << QUrl("https://" + QtNetworkSettings::serverName()) + << QNetworkProxy() << false << int(QNetworkReply::SslHandshakeFailedError); + + QTest::newRow("host-not-found") << QUrl("https://this-host-does-not.exist") + << QNetworkProxy() + << true << int(QNetworkReply::HostNotFoundError); + + QTest::newRow("proxy-not-found") << QUrl("https://" + QtNetworkSettings::serverName()) + << QNetworkProxy(QNetworkProxy::HttpProxy, + "https://this-host-does-not.exist", 3128) + << true << int(QNetworkReply::HostNotFoundError); + + QHostInfo hostInfo = QHostInfo::fromName(QtNetworkSettings::serverName()); + QString proxyserver = hostInfo.addresses().first().toString(); + + QTest::newRow("proxy-unavailable") << QUrl("https://" + QtNetworkSettings::serverName()) + << QNetworkProxy(QNetworkProxy::HttpProxy, proxyserver, 10) + << true << int(QNetworkReply::UnknownNetworkError); + + QTest::newRow("no-proxy-credentials") << QUrl("https://" + QtNetworkSettings::serverName()) + << QNetworkProxy(QNetworkProxy::HttpProxy, proxyserver, 3129) + << true << int(QNetworkReply::ProxyAuthenticationRequiredError); +} + +void tst_Spdy::errors() +{ + QFETCH(QUrl, url); + QFETCH(QNetworkProxy, proxy); + QFETCH(bool, ignoreSslErrors); + QFETCH(int, expectedReplyError); + + QNetworkRequest request(url); + request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, true); + + disconnect(&m_manager, SIGNAL(proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *)), + 0, 0); + if (proxy.type() != QNetworkProxy::DefaultProxy) { + m_manager.setProxy(proxy); + } + QNetworkReply *reply = m_manager.get(request); + if (ignoreSslErrors) + reply->ignoreSslErrors(); + QSignalSpy finishedSpy(reply, SIGNAL(finished())); + QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError))); + + QObject::connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); + + QTestEventLoop::instance().enterLoop(15); + QVERIFY(!QTestEventLoop::instance().timeout()); + + QCOMPARE(finishedSpy.count(), 1); + QCOMPARE(errorSpy.count(), 1); + + QCOMPARE(reply->error(), static_cast<QNetworkReply::NetworkError>(expectedReplyError)); + + m_manager.setProxy(QNetworkProxy()); // reset + m_manager.clearAccessCache(); // e.g. to get an SSL error we need a new connection + connect(&m_manager, SIGNAL(proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *)), + this, SLOT(proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *)), + Qt::UniqueConnection); // reset +} +#endif // !QT_NO_NETWORKPROXY + +void tst_Spdy::multipleRequests_data() +{ + QTest::addColumn<QList<QUrl> >("urls"); + + QString baseUrl = "https://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/echo.cgi?"; + QList<QUrl> urls; + for (int a = 1; a <= 50; ++a) + urls.append(QUrl(baseUrl + QLatin1String(QByteArray::number(a)))); + + QTest::newRow("one-request") << urls.mid(0, 1); + QTest::newRow("two-requests") << urls.mid(0, 2); + QTest::newRow("ten-requests") << urls.mid(0, 10); + QTest::newRow("twenty-requests") << urls.mid(0, 20); + QTest::newRow("fifty-requests") << urls; +} + +void tst_Spdy::multipleRequestsFinishedSlot() +{ + m_multipleRepliesFinishedCount++; + if (m_multipleRepliesFinishedCount == m_multipleRequestsCount) + QTestEventLoop::instance().exitLoop(); +} + +void tst_Spdy::multipleRequests() +{ + QFETCH(QList<QUrl>, urls); + m_multipleRequestsCount = urls.count(); + m_multipleRepliesFinishedCount = 0; + + QList<QNetworkReply *> replies; + QList<QSignalSpy *> metaDataChangedSpies; + QList<QSignalSpy *> readyReadSpies; + QList<QSignalSpy *> finishedSpies; + + foreach (const QUrl &url, urls) { + QNetworkRequest request(url); + request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, true); + QNetworkReply *reply = m_manager.get(request); + replies.append(reply); + reply->ignoreSslErrors(); + QObject::connect(reply, SIGNAL(finished()), this, SLOT(multipleRequestsFinishedSlot())); + QSignalSpy *metaDataChangedSpy = new QSignalSpy(reply, SIGNAL(metaDataChanged())); + metaDataChangedSpies << metaDataChangedSpy; + QSignalSpy *readyReadSpy = new QSignalSpy(reply, SIGNAL(readyRead())); + readyReadSpies << readyReadSpy; + QSignalSpy *finishedSpy = new QSignalSpy(reply, SIGNAL(finished())); + finishedSpies << finishedSpy; + } + + QSignalSpy finishedManagerSpy(&m_manager, SIGNAL(finished(QNetworkReply*))); + + QTestEventLoop::instance().enterLoop(15); + QVERIFY(!QTestEventLoop::instance().timeout()); + + QCOMPARE(finishedManagerSpy.count(), m_multipleRequestsCount); + + for (int a = 0; a < replies.count(); ++a) { + +#ifndef QT_NO_OPENSSL + QCOMPARE(replies.at(a)->sslConfiguration().nextProtocolNegotiationStatus(), + QSslConfiguration::NextProtocolNegotiationNegotiated); + QCOMPARE(replies.at(a)->sslConfiguration().nextNegotiatedProtocol(), + QByteArray(QSslConfiguration::NextProtocolSpdy3_0)); +#endif // QT_NO_OPENSSL + + QCOMPARE(replies.at(a)->error(), QNetworkReply::NoError); + QCOMPARE(replies.at(a)->attribute(QNetworkRequest::SpdyWasUsedAttribute).toBool(), true); + QCOMPARE(replies.at(a)->attribute(QNetworkRequest::ConnectionEncryptedAttribute).toBool(), true); + QCOMPARE(replies.at(a)->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); + + // using the echo script, a request to "echo.cgi?1" will return a body of "1" + QByteArray expectedContent = replies.at(a)->url().query().toUtf8(); + QByteArray content = replies.at(a)->readAll(); + QCOMPARE(expectedContent, content); + + QCOMPARE(metaDataChangedSpies.at(a)->count(), 1); + metaDataChangedSpies.at(a)->deleteLater(); + + QCOMPARE(finishedSpies.at(a)->count(), 1); + finishedSpies.at(a)->deleteLater(); + + QVERIFY(readyReadSpies.at(a)->count() > 0); + readyReadSpies.at(a)->deleteLater(); + + replies.at(a)->deleteLater(); + } +} + +QTEST_MAIN(tst_Spdy) + +#include "tst_spdy.moc" diff --git a/tests/auto/network/bearer/qnetworkconfiguration/qnetworkconfiguration.pro b/tests/auto/network/bearer/qnetworkconfiguration/qnetworkconfiguration.pro index 8c1e111873..cde82a4fb2 100644 --- a/tests/auto/network/bearer/qnetworkconfiguration/qnetworkconfiguration.pro +++ b/tests/auto/network/bearer/qnetworkconfiguration/qnetworkconfiguration.pro @@ -4,4 +4,3 @@ SOURCES += tst_qnetworkconfiguration.cpp HEADERS += ../qbearertestcommon.h QT = core network testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/bearer/qnetworkconfigurationmanager/qnetworkconfigurationmanager.pro b/tests/auto/network/bearer/qnetworkconfigurationmanager/qnetworkconfigurationmanager.pro index 1a1220763c..52cee1f64d 100644 --- a/tests/auto/network/bearer/qnetworkconfigurationmanager/qnetworkconfigurationmanager.pro +++ b/tests/auto/network/bearer/qnetworkconfigurationmanager/qnetworkconfigurationmanager.pro @@ -4,4 +4,3 @@ SOURCES += tst_qnetworkconfigurationmanager.cpp HEADERS += ../qbearertestcommon.h QT = core network testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/bearer/qnetworksession/lackey/lackey.pro b/tests/auto/network/bearer/qnetworksession/lackey/lackey.pro index 9f2e82d4cc..1605b31d94 100644 --- a/tests/auto/network/bearer/qnetworksession/lackey/lackey.pro +++ b/tests/auto/network/bearer/qnetworksession/lackey/lackey.pro @@ -7,4 +7,3 @@ DESTDIR = ./ win32:CONFIG += console mac:CONFIG -= app_bundle -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/bearer/qnetworksession/test/test.pro b/tests/auto/network/bearer/qnetworksession/test/test.pro index 574d0672b6..dd7618b4ad 100644 --- a/tests/auto/network/bearer/qnetworksession/test/test.pro +++ b/tests/auto/network/bearer/qnetworksession/test/test.pro @@ -16,4 +16,3 @@ CONFIG(debug_and_release) { } TEST_HELPER_INSTALLS = ../lackey/lackey -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp b/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp index 5dede11e5b..8d222965eb 100644 --- a/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp +++ b/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp @@ -749,7 +749,7 @@ void tst_QNetworkSession::sessionOpenCloseStop() } else if (state == QNetworkSession::Disconnected) { QTRY_VERIFY_WITH_TIMEOUT(!errorSpy.isEmpty(), TestTimeOut); QTRY_VERIFY_WITH_TIMEOUT(session2.state() == QNetworkSession::Disconnected, TestTimeOut); - } else if (state == QNetworkSession::Connected) { + } else if (state == QNetworkSession::Connected) { QTRY_VERIFY_WITH_TIMEOUT(errorSpy.isEmpty(),TestTimeOut); if (stateChangedSpy.count() > 1) { @@ -1121,13 +1121,13 @@ bool openSession(QNetworkSession *session) { } if (session->configuration().state() != QNetworkConfiguration::Active) { qDebug("tst_QNetworkSession::openSession() failure: session's configuration is not in 'Active' -state."); - qDebug() << "tst_QNetworkSession::openSession() state is: " << session->configuration().state(); + qDebug() << "tst_QNetworkSession::openSession() state is: " << session->configuration().state(); result = false; } if (result == false) { - qDebug() << "tst_QNetworkSession::openSession() opening session failed."; + qDebug() << "tst_QNetworkSession::openSession() opening session failed."; } else { - qDebug() << "tst_QNetworkSession::openSession() opening session succeeded."; + qDebug() << "tst_QNetworkSession::openSession() opening session succeeded."; } qDebug() << "tst_QNetworkSession::openSession() name of the configuration is: " << session->configuration().name(); qDebug() << "tst_QNetworkSession::openSession() configuration state is: " << session->configuration().state(); @@ -1196,9 +1196,9 @@ bool closeSession(QNetworkSession *session, bool lastSessionOnConfiguration) { result = false; } if (result == false) { - qDebug() << "tst_QNetworkSession::closeSession() closing session failed."; + qDebug() << "tst_QNetworkSession::closeSession() closing session failed."; } else { - qDebug() << "tst_QNetworkSession::closeSession() closing session succeeded."; + qDebug() << "tst_QNetworkSession::closeSession() closing session succeeded."; } qDebug() << "tst_QNetworkSession::closeSession() name of the configuration is: " << session->configuration().name(); qDebug() << "tst_QNetworkSession::closeSession() configuration state is: " << session->configuration().state(); diff --git a/tests/auto/network/kernel/kernel.pro b/tests/auto/network/kernel/kernel.pro index 14080a0548..8594ad5932 100644 --- a/tests/auto/network/kernel/kernel.pro +++ b/tests/auto/network/kernel/kernel.pro @@ -10,6 +10,10 @@ SUBDIRS=\ qnetworkaddressentry \ qhostaddress \ +winrt: SUBDIRS -= \ + qnetworkproxy \ + qnetworkproxyfactory \ + !contains(QT_CONFIG, private_tests): SUBDIRS -= \ qauthenticator \ qhostinfo \ diff --git a/tests/auto/network/kernel/qauthenticator/qauthenticator.pro b/tests/auto/network/kernel/qauthenticator/qauthenticator.pro index 54ec0e4cff..5e4759b690 100644 --- a/tests/auto/network/kernel/qauthenticator/qauthenticator.pro +++ b/tests/auto/network/kernel/qauthenticator/qauthenticator.pro @@ -4,4 +4,3 @@ requires(contains(QT_CONFIG,private_tests)) QT = core network-private testlib SOURCES += tst_qauthenticator.cpp DEFINES += SRCDIR=\\\"$$PWD/\\\" -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/kernel/qdnslookup/qdnslookup.pro b/tests/auto/network/kernel/qdnslookup/qdnslookup.pro index 36727a3bf6..3727736fad 100644 --- a/tests/auto/network/kernel/qdnslookup/qdnslookup.pro +++ b/tests/auto/network/kernel/qdnslookup/qdnslookup.pro @@ -6,4 +6,3 @@ TARGET = tst_qdnslookup SOURCES += tst_qdnslookup.cpp QT = core network testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/kernel/qdnslookup_appless/qdnslookup_appless.pro b/tests/auto/network/kernel/qdnslookup_appless/qdnslookup_appless.pro index 4a97b89d9a..0515bbad3b 100644 --- a/tests/auto/network/kernel/qdnslookup_appless/qdnslookup_appless.pro +++ b/tests/auto/network/kernel/qdnslookup_appless/qdnslookup_appless.pro @@ -6,4 +6,3 @@ TARGET = tst_qdnslookup_appless SOURCES += tst_qdnslookup_appless.cpp QT = core network testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/kernel/qhostaddress/qhostaddress.pro b/tests/auto/network/kernel/qhostaddress/qhostaddress.pro index 318c78531b..421685d855 100644 --- a/tests/auto/network/kernel/qhostaddress/qhostaddress.pro +++ b/tests/auto/network/kernel/qhostaddress/qhostaddress.pro @@ -13,4 +13,3 @@ wince*: { LIBS += -lws2_32 } } -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp index dd9202c748..c4d42206fe 100644 --- a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp +++ b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp @@ -50,6 +50,9 @@ #include <qdatastream.h> #ifdef Q_OS_WIN # include <qt_windows.h> +# if defined(Q_OS_WINRT) +# include <winsock2.h> +# endif #endif class tst_QHostAddress : public QObject @@ -336,12 +339,15 @@ void tst_QHostAddress::assignment() address = "::1"; QCOMPARE(address, QHostAddress("::1")); + // WinRT does not support sockaddr_in +#ifndef Q_OS_WINRT QHostAddress addr("4.2.2.1"); sockaddr_in sockAddr; sockAddr.sin_family = AF_INET; sockAddr.sin_addr.s_addr = htonl(addr.toIPv4Address()); address.setAddress((sockaddr *)&sockAddr); QCOMPARE(address, addr); +#endif // !Q_OS_WINRT } void tst_QHostAddress::scopeId() diff --git a/tests/auto/network/kernel/qhostinfo/qhostinfo.pro b/tests/auto/network/kernel/qhostinfo/qhostinfo.pro index b6f5c2badb..a95a6bc2d6 100644 --- a/tests/auto/network/kernel/qhostinfo/qhostinfo.pro +++ b/tests/auto/network/kernel/qhostinfo/qhostinfo.pro @@ -13,7 +13,6 @@ wince*: { } # needed for getaddrinfo with official MinGW -win32-g++*:DEFINES += _WIN32_WINNT=0x0501 +mingw:DEFINES += _WIN32_WINNT=0x0501 linux-*:CONFIG+=insignificant_test # QTBUG-23837 - test is unstable -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp b/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp index e81c7f71db..e3156ceb3f 100644 --- a/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp +++ b/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp @@ -67,7 +67,7 @@ #include <time.h> #include <qlibrary.h> -#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) +#if defined(Q_OS_WIN) #include <windows.h> #else #include <unistd.h> diff --git a/tests/auto/network/kernel/qnetworkaddressentry/qnetworkaddressentry.pro b/tests/auto/network/kernel/qnetworkaddressentry/qnetworkaddressentry.pro index 864d945064..ae207e9c79 100644 --- a/tests/auto/network/kernel/qnetworkaddressentry/qnetworkaddressentry.pro +++ b/tests/auto/network/kernel/qnetworkaddressentry/qnetworkaddressentry.pro @@ -4,4 +4,3 @@ TARGET = tst_qnetworkaddressentry SOURCES += tst_qnetworkaddressentry.cpp QT = core network testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/kernel/qnetworkinterface/qnetworkinterface.pro b/tests/auto/network/kernel/qnetworkinterface/qnetworkinterface.pro index 3b59690580..79279514d1 100644 --- a/tests/auto/network/kernel/qnetworkinterface/qnetworkinterface.pro +++ b/tests/auto/network/kernel/qnetworkinterface/qnetworkinterface.pro @@ -4,4 +4,3 @@ TARGET = tst_qnetworkinterface SOURCES += tst_qnetworkinterface.cpp QT = core network testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/kernel/qnetworkproxy/qnetworkproxy.pro b/tests/auto/network/kernel/qnetworkproxy/qnetworkproxy.pro index daf3e5dead..996f9e3691 100644 --- a/tests/auto/network/kernel/qnetworkproxy/qnetworkproxy.pro +++ b/tests/auto/network/kernel/qnetworkproxy/qnetworkproxy.pro @@ -7,4 +7,3 @@ TARGET = tst_qnetworkproxy QT = core network testlib SOURCES += tst_qnetworkproxy.cpp -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/kernel/qnetworkproxyfactory/qnetworkproxyfactory.pro b/tests/auto/network/kernel/qnetworkproxyfactory/qnetworkproxyfactory.pro index 1afb5de603..c63c7742a1 100644 --- a/tests/auto/network/kernel/qnetworkproxyfactory/qnetworkproxyfactory.pro +++ b/tests/auto/network/kernel/qnetworkproxyfactory/qnetworkproxyfactory.pro @@ -8,4 +8,3 @@ TARGET = tst_qnetworkproxyfactory QT = core network testlib SOURCES += tst_qnetworkproxyfactory.cpp -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/socket/platformsocketengine/platformsocketengine.pro b/tests/auto/network/socket/platformsocketengine/platformsocketengine.pro index 8da6ad9a67..eee762037d 100644 --- a/tests/auto/network/socket/platformsocketengine/platformsocketengine.pro +++ b/tests/auto/network/socket/platformsocketengine/platformsocketengine.pro @@ -9,4 +9,3 @@ requires(contains(QT_CONFIG,private_tests)) MOC_DIR=tmp QT = core-private network-private testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 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/qabstractsocket/qabstractsocket.pro b/tests/auto/network/socket/qabstractsocket/qabstractsocket.pro index 970a3ffe60..00e604972f 100644 --- a/tests/auto/network/socket/qabstractsocket/qabstractsocket.pro +++ b/tests/auto/network/socket/qabstractsocket/qabstractsocket.pro @@ -8,4 +8,3 @@ QT = core network testlib SOURCES += tst_qabstractsocket.cpp -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/socket/qhttpsocketengine/qhttpsocketengine.pro b/tests/auto/network/socket/qhttpsocketengine/qhttpsocketengine.pro index 009d151e29..12ce576e23 100644 --- a/tests/auto/network/socket/qhttpsocketengine/qhttpsocketengine.pro +++ b/tests/auto/network/socket/qhttpsocketengine/qhttpsocketengine.pro @@ -10,4 +10,3 @@ MOC_DIR=tmp requires(contains(QT_CONFIG,private_tests)) QT = core-private network-private testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/socket/qlocalsocket/test/test.pro b/tests/auto/network/socket/qlocalsocket/test/test.pro index c870304549..6a5df7f9b6 100644 --- a/tests/auto/network/socket/qlocalsocket/test/test.pro +++ b/tests/auto/network/socket/qlocalsocket/test/test.pro @@ -25,4 +25,3 @@ CONFIG(debug_and_release) { DESTDIR = .. } -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 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/qsocks5socketengine/qsocks5socketengine.pro b/tests/auto/network/socket/qsocks5socketengine/qsocks5socketengine.pro index c741c78980..c9793952ce 100644 --- a/tests/auto/network/socket/qsocks5socketengine/qsocks5socketengine.pro +++ b/tests/auto/network/socket/qsocks5socketengine/qsocks5socketengine.pro @@ -13,4 +13,3 @@ QT = core-private network-private testlib linux-*:system(". /etc/lsb-release && [ $DISTRIB_CODENAME = oneiric ]"):DEFINES+=UBUNTU_ONEIRIC # QTBUG-23380 requires(contains(QT_CONFIG,private_tests)) -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/socket/qtcpserver/crashingServer/crashingServer.pro b/tests/auto/network/socket/qtcpserver/crashingServer/crashingServer.pro index 3f3e5ba3d4..487b9014d0 100644 --- a/tests/auto/network/socket/qtcpserver/crashingServer/crashingServer.pro +++ b/tests/auto/network/socket/qtcpserver/crashingServer/crashingServer.pro @@ -5,5 +5,4 @@ DESTDIR = ./ # This means the auto test works on some machines for MinGW. No dialog stalls # the application. -win32-g++*:CONFIG += console -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 +mingw:CONFIG += console diff --git a/tests/auto/network/socket/qtcpserver/test/test.pro b/tests/auto/network/socket/qtcpserver/test/test.pro index 1cc9f66de4..4daa9963ce 100644 --- a/tests/auto/network/socket/qtcpserver/test/test.pro +++ b/tests/auto/network/socket/qtcpserver/test/test.pro @@ -25,4 +25,3 @@ win32 { QT = core network testlib MOC_DIR=tmp -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp index d838b463f7..f01d79d9bc 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"); @@ -623,7 +660,7 @@ void tst_QTcpServer::invalidProxy_data() << int(QAbstractSocket::UnsupportedSocketOperationError); QTest::newRow("no-such-host") << int(QNetworkProxy::Socks5Proxy) - << "this-host-will-never-exist.troll.no" << 1080 + << "invalid.test.qt-project.org" << 1080 << int(QAbstractSocket::ProxyNotFoundError); QTest::newRow("socks5-on-http") << int(QNetworkProxy::Socks5Proxy) << fluke << 3128 << int(QAbstractSocket::SocketTimeoutError); @@ -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/stressTest/Test.h b/tests/auto/network/socket/qtcpsocket/stressTest/Test.h index 1982244c1e..20ccf0d0cd 100644 --- a/tests/auto/network/socket/qtcpsocket/stressTest/Test.h +++ b/tests/auto/network/socket/qtcpsocket/stressTest/Test.h @@ -92,4 +92,4 @@ public: }; //------------------------------------------------------------------------------ -#endif // TEST_H +#endif // TEST_H diff --git a/tests/auto/network/socket/qtcpsocket/stressTest/stressTest.pro b/tests/auto/network/socket/qtcpsocket/stressTest/stressTest.pro index c290fb8aa3..2eb00593e0 100644 --- a/tests/auto/network/socket/qtcpsocket/stressTest/stressTest.pro +++ b/tests/auto/network/socket/qtcpsocket/stressTest/stressTest.pro @@ -7,4 +7,3 @@ CONFIG += console DESTDIR = ./ MOC_DIR = .moc/ TMP_DIR = .tmp/ -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/socket/qtcpsocket/test/test.pro b/tests/auto/network/socket/qtcpsocket/test/test.pro index bc34adf349..6c6697bfdc 100644 --- a/tests/auto/network/socket/qtcpsocket/test/test.pro +++ b/tests/auto/network/socket/qtcpsocket/test/test.pro @@ -21,4 +21,3 @@ win32 { } else { DESTDIR = ../ } -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 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/clientserver/clientserver.pro b/tests/auto/network/socket/qudpsocket/clientserver/clientserver.pro index b8522f970e..a1b0021232 100644 --- a/tests/auto/network/socket/qudpsocket/clientserver/clientserver.pro +++ b/tests/auto/network/socket/qudpsocket/clientserver/clientserver.pro @@ -4,4 +4,3 @@ CONFIG += console CONFIG -= app_bundle TARGET = clientserver DESTDIR = ./ -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/socket/qudpsocket/test/test.pro b/tests/auto/network/socket/qudpsocket/test/test.pro index ec249b4840..8ad16c652d 100644 --- a/tests/auto/network/socket/qudpsocket/test/test.pro +++ b/tests/auto/network/socket/qudpsocket/test/test.pro @@ -24,4 +24,3 @@ wince* { TARGET = tst_qudpsocket CONFIG+=insignificant_test # QTBUG-25367, QTBUG-25368 -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 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/qudpsocket/udpServer/udpServer.pro b/tests/auto/network/socket/qudpsocket/udpServer/udpServer.pro index 9532401e0b..cf707aa14a 100644 --- a/tests/auto/network/socket/qudpsocket/udpServer/udpServer.pro +++ b/tests/auto/network/socket/qudpsocket/udpServer/udpServer.pro @@ -3,4 +3,3 @@ QT = core network CONFIG -= app_bundle CONFIG += console -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 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 \ diff --git a/tests/auto/network/ssl/qsslcertificate/qsslcertificate.pro b/tests/auto/network/ssl/qsslcertificate/qsslcertificate.pro index 2a1f6ef299..09cb22defe 100644 --- a/tests/auto/network/ssl/qsslcertificate/qsslcertificate.pro +++ b/tests/auto/network/ssl/qsslcertificate/qsslcertificate.pro @@ -8,4 +8,3 @@ QT = core network testlib TARGET = tst_qsslcertificate TESTDATA += certificates/* more-certificates/* verify-certs/* -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/ssl/qsslcipher/qsslcipher.pro b/tests/auto/network/ssl/qsslcipher/qsslcipher.pro index 07907d3b76..a091bd0184 100644 --- a/tests/auto/network/ssl/qsslcipher/qsslcipher.pro +++ b/tests/auto/network/ssl/qsslcipher/qsslcipher.pro @@ -14,4 +14,3 @@ win32 { DESTDIR = release } } -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/ssl/qsslerror/qsslerror.pro b/tests/auto/network/ssl/qsslerror/qsslerror.pro index 9708ed0703..85a5046923 100644 --- a/tests/auto/network/ssl/qsslerror/qsslerror.pro +++ b/tests/auto/network/ssl/qsslerror/qsslerror.pro @@ -14,4 +14,3 @@ win32 { DESTDIR = release } } -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/ssl/qsslkey/qsslkey.pro b/tests/auto/network/ssl/qsslkey/qsslkey.pro index 37796bf5b7..78cfb9ce92 100644 --- a/tests/auto/network/ssl/qsslkey/qsslkey.pro +++ b/tests/auto/network/ssl/qsslkey/qsslkey.pro @@ -8,4 +8,3 @@ QT = core network testlib TARGET = tst_qsslkey TESTDATA += keys/* rsa-without-passphrase.pem rsa-with-passphrase.pem -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/ssl/qsslsocket/qsslsocket.pro b/tests/auto/network/ssl/qsslsocket/qsslsocket.pro index d8a6b2cdcb..6e34b23f6c 100644 --- a/tests/auto/network/ssl/qsslsocket/qsslsocket.pro +++ b/tests/auto/network/ssl/qsslsocket/qsslsocket.pro @@ -33,4 +33,3 @@ wince* { linux-*:system(". /etc/lsb-release && [ $DISTRIB_CODENAME = oneiric ]"):DEFINES+=UBUNTU_ONEIRIC # QTBUG-24234 requires(contains(QT_CONFIG,private_tests)) -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp index d19e08178a..6eb20dd1f5 100644 --- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp +++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp @@ -111,7 +111,9 @@ public slots: void initTestCase(); void init(); void cleanup(); +#ifndef QT_NO_NETWORKPROXY void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth); +#endif #ifndef QT_NO_SSL private slots: @@ -276,6 +278,7 @@ void tst_QSslSocket::init() { QFETCH_GLOBAL(bool, setProxy); if (setProxy) { +#ifndef QT_NO_NETWORKPROXY QFETCH_GLOBAL(int, proxyType); QString fluke = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString(); QNetworkProxy proxy; @@ -302,6 +305,9 @@ void tst_QSslSocket::init() break; } QNetworkProxy::setApplicationProxy(proxy); +#else // !QT_NO_NETWORKPROXY + QSKIP("No proxy support"); +#endif // QT_NO_NETWORKPROXY } qt_qhostinfo_clear_cache(); @@ -309,7 +315,9 @@ void tst_QSslSocket::init() void tst_QSslSocket::cleanup() { +#ifndef QT_NO_NETWORKPROXY QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy); +#endif } #ifndef QT_NO_SSL @@ -326,12 +334,14 @@ QSslSocketPtr tst_QSslSocket::newSocket() } #endif +#ifndef QT_NO_NETWORKPROXY void tst_QSslSocket::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth) { ++proxyAuthCalled; auth->setUser("qsockstest"); auth->setPassword("password"); } +#endif // !QT_NO_NETWORKPROXY #ifndef QT_NO_SSL @@ -579,13 +589,13 @@ void tst_QSslSocket::ciphers() return; QSslSocket socket; - QCOMPARE(socket.ciphers(), QSslSocket::supportedCiphers()); + QCOMPARE(socket.ciphers(), QSslSocket::defaultCiphers()); socket.setCiphers(QList<QSslCipher>()); QVERIFY(socket.ciphers().isEmpty()); socket.setCiphers(socket.defaultCiphers()); - QCOMPARE(socket.ciphers(), QSslSocket::supportedCiphers()); + QCOMPARE(socket.ciphers(), QSslSocket::defaultCiphers()); socket.setCiphers(socket.defaultCiphers()); - QCOMPARE(socket.ciphers(), QSslSocket::supportedCiphers()); + QCOMPARE(socket.ciphers(), QSslSocket::defaultCiphers()); // Task 164356 socket.setCiphers("ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"); @@ -668,6 +678,11 @@ void tst_QSslSocket::sessionCipher() if (!socket->waitForEncrypted(5000)) QSKIP("Skipping flaky test - See QTBUG-29941"); QVERIFY(!socket->sessionCipher().isNull()); + + qDebug() << "Supported Ciphers:" << QSslSocket::supportedCiphers(); + qDebug() << "Default Ciphers:" << QSslSocket::defaultCiphers(); + qDebug() << "Session Cipher:" << socket->sessionCipher(); + QVERIFY(QSslSocket::supportedCiphers().contains(socket->sessionCipher())); socket->disconnectFromHost(); QVERIFY(socket->waitForDisconnected()); @@ -1376,6 +1391,15 @@ void tst_QSslSocket::defaultCaCertificates() void tst_QSslSocket::defaultCiphers() { + if (!QSslSocket::supportsSsl()) + return; + + QList<QSslCipher> ciphers = QSslSocket::defaultCiphers(); + QVERIFY(ciphers.size() > 1); + + QSslSocket socket; + QCOMPARE(socket.defaultCiphers(), ciphers); + QCOMPARE(socket.ciphers(), ciphers); } void tst_QSslSocket::resetDefaultCiphers() @@ -1400,8 +1424,6 @@ void tst_QSslSocket::supportedCiphers() QSslSocket socket; QCOMPARE(socket.supportedCiphers(), ciphers); - QCOMPARE(socket.defaultCiphers(), ciphers); - QCOMPARE(socket.ciphers(), ciphers); } void tst_QSslSocket::systemCaCertificates() diff --git a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/qsslsocket_onDemandCertificates_member.pro b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/qsslsocket_onDemandCertificates_member.pro index e8247d7b16..9b12785081 100644 --- a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/qsslsocket_onDemandCertificates_member.pro +++ b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/qsslsocket_onDemandCertificates_member.pro @@ -23,4 +23,3 @@ wince* { } requires(contains(QT_CONFIG,private_tests)) -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/qsslsocket_onDemandCertificates_static.pro b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/qsslsocket_onDemandCertificates_static.pro index 8a95e11780..c4d56436d0 100644 --- a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/qsslsocket_onDemandCertificates_static.pro +++ b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/qsslsocket_onDemandCertificates_static.pro @@ -22,4 +22,3 @@ wince* { } requires(contains(QT_CONFIG,private_tests)) -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/network/ssl/ssl.pro b/tests/auto/network/ssl/ssl.pro index 06f4a05241..0b8f269fac 100644 --- a/tests/auto/network/ssl/ssl.pro +++ b/tests/auto/network/ssl/ssl.pro @@ -12,3 +12,7 @@ contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked): qsslsocket_onDemandCertificates_member \ qsslsocket_onDemandCertificates_static \ } + +winrt: SUBDIRS -= \ + qsslsocket_onDemandCertificates_member \ + qsslsocket_onDemandCertificates_static \ |