diff options
author | Thiago Macieira <thiago.macieira@nokia.com> | 2010-04-16 10:13:57 (GMT) |
---|---|---|
committer | Thiago Macieira <thiago.macieira@nokia.com> | 2010-04-16 11:33:36 (GMT) |
commit | 4b684fb390c0bb63c8a68b6281fd5a77629a94d2 (patch) | |
tree | 76ddda8eefa5f52c9c112a51cabfb082fbdfd261 /tests/manual/network_stresstest | |
parent | ef48cfd6cc1b2989b33ae3709634a732a1c81668 (diff) | |
download | Qt-4b684fb390c0bb63c8a68b6281fd5a77629a94d2.zip Qt-4b684fb390c0bb63c8a68b6281fd5a77629a94d2.tar.gz Qt-4b684fb390c0bb63c8a68b6281fd5a77629a94d2.tar.bz2 |
Split the remote and the local tests in two, in preparation for SSL tests
Diffstat (limited to 'tests/manual/network_stresstest')
-rw-r--r-- | tests/manual/network_stresstest/tst_network_stresstest.cpp | 282 | ||||
-rw-r--r-- | tests/manual/network_stresstest/url-list.txt | 64 | ||||
-rw-r--r-- | tests/manual/network_stresstest/wwwfiles.qrc | 1 |
3 files changed, 17 insertions, 330 deletions
diff --git a/tests/manual/network_stresstest/tst_network_stresstest.cpp b/tests/manual/network_stresstest/tst_network_stresstest.cpp index d3b007a..34d83e1 100644 --- a/tests/manual/network_stresstest/tst_network_stresstest.cpp +++ b/tests/manual/network_stresstest/tst_network_stresstest.cpp @@ -76,17 +76,16 @@ typedef int SOCKET; # include <winsock2.h> #endif -class tst_QTcpSocket_stresstest : public QObject +class tst_NetworkStressTest : public QObject { Q_OBJECT public: enum { AttemptCount = 100 }; - tst_QTcpSocket_stresstest(); + tst_NetworkStressTest(); MiniHttpServer server; qint64 byteCounter; QNetworkAccessManager manager; - QVector<QUrl> httpUrls; bool intermediateDebug; private: @@ -109,16 +108,9 @@ private Q_SLOTS: void parallelConnectDisconnect(); void namGet_data(); void namGet(); - - void blockingSequentialRemoteHosts(); - void sequentialRemoteHosts(); - void parallelRemoteHosts_data(); - void parallelRemoteHosts(); - void namRemoteGet_data(); - void namRemoteGet(); }; -tst_QTcpSocket_stresstest::tst_QTcpSocket_stresstest() +tst_NetworkStressTest::tst_NetworkStressTest() : intermediateDebug(qgetenv("STRESSDEBUG").toInt() > 0) { #ifdef Q_OS_WIN @@ -129,21 +121,9 @@ tst_QTcpSocket_stresstest::tst_QTcpSocket_stresstest() #elif defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) ::signal(SIGALRM, SIG_IGN); #endif - - QFile urlList(":/url-list.txt"); - if (urlList.open(QIODevice::ReadOnly)) { - while (!urlList.atEnd()) { - QByteArray line = urlList.readLine().trimmed(); - QUrl url = QUrl::fromEncoded(line); - if (url.scheme() == "http") - httpUrls << url; - } - } - - httpUrls << httpUrls; } -void tst_QTcpSocket_stresstest::initTestCase_data() +void tst_NetworkStressTest::initTestCase_data() { QTest::addColumn<bool>("isLocalhost"); QTest::addColumn<QString>("hostname"); @@ -153,7 +133,7 @@ void tst_QTcpSocket_stresstest::initTestCase_data() QTest::newRow("remote") << false << QtNetworkSettings::serverName() << 80; } -void tst_QTcpSocket_stresstest::init() +void tst_NetworkStressTest::init() { // clear the internal cache #ifndef QT_BUILD_INTERNAL @@ -162,7 +142,7 @@ void tst_QTcpSocket_stresstest::init() #endif } -void tst_QTcpSocket_stresstest::clearManager() +void tst_NetworkStressTest::clearManager() { #ifdef QT_BUILD_INTERNAL QNetworkAccessManagerPrivate::clearCache(&manager); @@ -230,7 +210,7 @@ bool nativeSelect(int fd, int timeout, bool selectForWrite) return ret != 0; } -void tst_QTcpSocket_stresstest::nativeBlockingConnectDisconnect() +void tst_NetworkStressTest::nativeBlockingConnectDisconnect() { QFETCH_GLOBAL(QString, hostname); QFETCH_GLOBAL(int, port); @@ -304,7 +284,7 @@ void tst_QTcpSocket_stresstest::nativeBlockingConnectDisconnect() #endif } -void tst_QTcpSocket_stresstest::nativeNonBlockingConnectDisconnect() +void tst_NetworkStressTest::nativeNonBlockingConnectDisconnect() { QFETCH_GLOBAL(QString, hostname); QFETCH_GLOBAL(int, port); @@ -418,7 +398,7 @@ void tst_QTcpSocket_stresstest::nativeNonBlockingConnectDisconnect() qDebug() << "Average transfer rate was" << (totalBytes / 1024.0 / 1024 * 1000 / outerTimer.elapsed()) << "MB/s"; } -void tst_QTcpSocket_stresstest::blockingConnectDisconnect() +void tst_NetworkStressTest::blockingConnectDisconnect() { QFETCH_GLOBAL(QString, hostname); QFETCH_GLOBAL(int, port); @@ -459,7 +439,7 @@ void tst_QTcpSocket_stresstest::blockingConnectDisconnect() qDebug() << "Average transfer rate was" << (totalBytes / 1024.0 / 1024 * 1000 / outerTimer.elapsed()) << "MB/s"; } -void tst_QTcpSocket_stresstest::blockingPipelined() +void tst_NetworkStressTest::blockingPipelined() { QFETCH_GLOBAL(QString, hostname); QFETCH_GLOBAL(int, port); @@ -504,7 +484,7 @@ void tst_QTcpSocket_stresstest::blockingPipelined() qDebug() << "Average transfer rate was" << (totalBytes / 1024.0 / 1024 * 1000 / outerTimer.elapsed()) << "MB/s"; } -void tst_QTcpSocket_stresstest::blockingMultipleRequests() +void tst_NetworkStressTest::blockingMultipleRequests() { QFETCH_GLOBAL(QString, hostname); QFETCH_GLOBAL(int, port); @@ -588,7 +568,7 @@ void tst_QTcpSocket_stresstest::blockingMultipleRequests() qDebug() << "Average transfer rate was" << (totalBytes / 1024.0 / 1024 * 1000 / outerTimer.elapsed()) << "MB/s"; } -void tst_QTcpSocket_stresstest::connectDisconnect() +void tst_NetworkStressTest::connectDisconnect() { QFETCH_GLOBAL(QString, hostname); QFETCH_GLOBAL(int, port); @@ -626,7 +606,7 @@ void tst_QTcpSocket_stresstest::connectDisconnect() qDebug() << "Average transfer rate was" << (totalBytes / 1024.0 / 1024 * 1000 / outerTimer.elapsed()) << "MB/s"; } -void tst_QTcpSocket_stresstest::parallelConnectDisconnect_data() +void tst_NetworkStressTest::parallelConnectDisconnect_data() { QTest::addColumn<int>("parallelAttempts"); QTest::newRow("1") << 1; @@ -641,7 +621,7 @@ void tst_QTcpSocket_stresstest::parallelConnectDisconnect_data() QTest::newRow("500") << 500; } -void tst_QTcpSocket_stresstest::parallelConnectDisconnect() +void tst_NetworkStressTest::parallelConnectDisconnect() { QFETCH_GLOBAL(QString, hostname); QFETCH_GLOBAL(int, port); @@ -697,7 +677,7 @@ void tst_QTcpSocket_stresstest::parallelConnectDisconnect() qDebug() << "Average transfer rate was" << (totalBytes / 1024.0 / 1024 * 1000 / outerTimer.elapsed()) << "MB/s"; } -void tst_QTcpSocket_stresstest::namGet_data() +void tst_NetworkStressTest::namGet_data() { QTest::addColumn<int>("parallelAttempts"); QTest::addColumn<bool>("pipelineAllowed"); @@ -724,7 +704,7 @@ void tst_QTcpSocket_stresstest::namGet_data() QTest::newRow("500p") << 500 << true; } -void tst_QTcpSocket_stresstest::namGet() +void tst_NetworkStressTest::namGet() { QFETCH_GLOBAL(QString, hostname); QFETCH_GLOBAL(int, port); @@ -786,234 +766,6 @@ void tst_QTcpSocket_stresstest::namGet() qDebug() << "Average transfer rate was" << (totalBytes / 1024.0 / 1024 * 1000 / outerTimer.elapsed()) << "MB/s"; } -void tst_QTcpSocket_stresstest::blockingSequentialRemoteHosts() -{ - QFETCH_GLOBAL(bool, isLocalhost); - if (isLocalhost) - return; - - qint64 totalBytes = 0; - QElapsedTimer outerTimer; - outerTimer.start(); - - for (int i = 0; i < httpUrls.size(); ++i) { - const QUrl &url = httpUrls.at(i); - QElapsedTimer timeout; - byteCounter = 0; - timeout.start(); - - QTcpSocket socket; - socket.connectToHost(url.host(), url.port(80)); - QVERIFY2(socket.waitForConnected(10000), "Timeout connecting"); - - socket.write("GET " + url.toEncoded(QUrl::RemoveScheme | QUrl::RemoveAuthority | QUrl::RemoveFragment) + " HTTP/1.0\r\n" - "Connection: close\r\n" - "User-Agent: tst_QTcpSocket_stresstest/1.0\r\n" - "Host: " + url.encodedHost() + "\r\n" - "\r\n"); - while (socket.bytesToWrite()) - QVERIFY2(socket.waitForBytesWritten(10000), "Timeout writing"); - - while (socket.state() == QAbstractSocket::ConnectedState && !timeout.hasExpired(10000)) { - socket.waitForReadyRead(10000); - byteCounter += socket.readAll().size(); // discard - } - QVERIFY2(!timeout.hasExpired(10000), "Timeout reading"); - - totalBytes += byteCounter; - if (intermediateDebug) { - double rate = (byteCounter * 1.0 / timeout.elapsed()); - qDebug() << i << url << byteCounter << "bytes in" << timeout.elapsed() << "ms:" - << (rate / 1024.0 * 1000) << "kB/s"; - } - } - qDebug() << "Average transfer rate was" << (totalBytes / 1024.0 * 1000 / outerTimer.elapsed()) << "kB/s"; -} - -void tst_QTcpSocket_stresstest::sequentialRemoteHosts() -{ - QFETCH_GLOBAL(bool, isLocalhost); - if (isLocalhost) - return; - - qint64 totalBytes = 0; - QElapsedTimer outerTimer; - outerTimer.start(); - - for (int i = 0; i < httpUrls.size(); ++i) { - const QUrl &url = httpUrls.at(i); - QElapsedTimer timeout; - byteCounter = 0; - timeout.start(); - - QTcpSocket socket; - socket.connectToHost(url.host(), url.port(80)); - - socket.write("GET " + url.toEncoded(QUrl::RemoveScheme | QUrl::RemoveAuthority | QUrl::RemoveFragment) + " HTTP/1.0\r\n" - "Connection: close\r\n" - "User-Agent: tst_QTcpSocket_stresstest/1.0\r\n" - "Host: " + url.encodedHost() + "\r\n" - "\r\n"); - connect(&socket, SIGNAL(readyRead()), SLOT(slotReadAll())); - - QTestEventLoop::instance().connect(&socket, SIGNAL(disconnected()), SLOT(exitLoop())); - QTestEventLoop::instance().enterLoop(30); - QVERIFY2(!QTestEventLoop::instance().timeout(), "Timeout"); - - totalBytes += byteCounter; - if (intermediateDebug) { - double rate = (byteCounter * 1.0 / timeout.elapsed()); - qDebug() << i << url << byteCounter << "bytes in" << timeout.elapsed() << "ms:" - << (rate / 1024.0 * 1000) << "kB/s"; - } - } - qDebug() << "Average transfer rate was" << (totalBytes / 1024.0 * 1000 / outerTimer.elapsed()) << "kB/s"; -} - -void tst_QTcpSocket_stresstest::parallelRemoteHosts_data() -{ - QTest::addColumn<int>("parallelAttempts"); - QTest::newRow("1") << 1; - QTest::newRow("2") << 2; - QTest::newRow("4") << 4; - QTest::newRow("5") << 5; - QTest::newRow("6") << 6; - QTest::newRow("8") << 8; - QTest::newRow("10") << 10; - QTest::newRow("25") << 25; - QTest::newRow("500") << 500; -} - -void tst_QTcpSocket_stresstest::parallelRemoteHosts() -{ - QFETCH_GLOBAL(bool, isLocalhost); - if (isLocalhost) - return; - - QFETCH(int, parallelAttempts); - - qint64 totalBytes = 0; - QElapsedTimer outerTimer; - outerTimer.start(); - - QVector<QUrl>::ConstIterator it = httpUrls.constBegin(); - while (it != httpUrls.constEnd()) { - QElapsedTimer timeout; - byteCounter = 0; - timeout.start(); - - QVector<QSharedPointer<QTcpSocket> > sockets; - sockets.reserve(parallelAttempts); - for (int j = 0; j < parallelAttempts && it != httpUrls.constEnd(); ++j, ++it) { - const QUrl &url = *it; - QTcpSocket *socket = new QTcpSocket; - socket->connectToHost(url.host(), url.port(80)); - - socket->write("GET " + url.toEncoded(QUrl::RemoveScheme | QUrl::RemoveAuthority | QUrl::RemoveFragment) + " HTTP/1.0\r\n" - "Connection: close\r\n" - "User-Agent: tst_QTcpSocket_stresstest/1.0\r\n" - "Host: " + url.encodedHost() + "\r\n" - "\r\n"); - connect(socket, SIGNAL(readyRead()), SLOT(slotReadAll())); - QTestEventLoop::instance().connect(socket, SIGNAL(disconnected()), SLOT(exitLoop())); - - sockets.append(QSharedPointer<QTcpSocket>(socket)); - } - - while (!timeout.hasExpired(30000)) { - QTestEventLoop::instance().enterLoop(10); - int done = 0; - for (int j = 0; j < sockets.size(); ++j) - done += sockets[j]->state() == QAbstractSocket::UnconnectedState ? 1 : 0; - if (done == sockets.size()) - break; - } - - totalBytes += byteCounter; - if (intermediateDebug) { - double rate = (byteCounter * 1.0 / timeout.elapsed()); - qDebug() << byteCounter << "bytes in" << timeout.elapsed() << "ms:" - << (rate / 1024.0 * 1000) << "kB/s"; - } - } - qDebug() << "Average transfer rate was" << (totalBytes / 1024.0 * 1000 / outerTimer.elapsed()) << "kB/s"; -} - -void tst_QTcpSocket_stresstest::namRemoteGet_data() -{ - QTest::addColumn<int>("parallelAttempts"); - QTest::newRow("1") << 1; - QTest::newRow("2") << 2; - QTest::newRow("4") << 4; - QTest::newRow("5") << 5; - QTest::newRow("6") << 6; - QTest::newRow("8") << 8; - QTest::newRow("10") << 10; - QTest::newRow("25") << 25; - QTest::newRow("500") << 500; -} - -void tst_QTcpSocket_stresstest::namRemoteGet() -{ - QFETCH_GLOBAL(bool, isLocalhost); - if (isLocalhost) - return; - - QFETCH(int, parallelAttempts); - bool pipelineAllowed = false;// QFETCH(bool, pipelineAllowed); - - if (parallelAttempts > 100) { - QFETCH_GLOBAL(bool, isLocalhost); - if (!isLocalhost) - QSKIP("Localhost-only test", SkipSingle); - } - - qint64 totalBytes = 0; - QElapsedTimer outerTimer; - outerTimer.start(); - - QVector<QUrl>::ConstIterator it = httpUrls.constBegin(); - while (it != httpUrls.constEnd()) { - QElapsedTimer timeout; - byteCounter = 0; - timeout.start(); - - QNetworkRequest req; - req.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, pipelineAllowed); - - QVector<QSharedPointer<QNetworkReply> > replies; - replies.reserve(parallelAttempts); - for (int j = 0; j < parallelAttempts && it != httpUrls.constEnd(); ++j) { - req.setUrl(*it++); - QNetworkReply *r = manager.get(req); - - connect(r, SIGNAL(readyRead()), SLOT(slotReadAll())); - QTestEventLoop::instance().connect(r, SIGNAL(finished()), SLOT(exitLoop())); - - replies.append(QSharedPointer<QNetworkReply>(r)); - } - - while (!timeout.hasExpired(30000)) { - QTestEventLoop::instance().enterLoop(10); - int done = 0; - for (int j = 0; j < replies.size(); ++j) - done += replies[j]->isFinished() ? 1 : 0; - if (done == replies.size()) - break; - } - replies.clear(); - - QVERIFY2(!timeout.hasExpired(30000), "Timeout"); - totalBytes += byteCounter; - if (intermediateDebug) { - double rate = (byteCounter * 1.0 / timeout.elapsed()); - qDebug() << byteCounter << "bytes in" << timeout.elapsed() << "ms:" - << (rate / 1024.0 * 1000) << "kB/s"; - } - } - qDebug() << "Average transfer rate was" << (totalBytes / 1024.0 * 1000 / outerTimer.elapsed()) << "kB/s"; -} - -QTEST_MAIN(tst_QTcpSocket_stresstest); +QTEST_MAIN(tst_NetworkStressTest); #include "tst_network_stresstest.moc" diff --git a/tests/manual/network_stresstest/url-list.txt b/tests/manual/network_stresstest/url-list.txt deleted file mode 100644 index 3d6d7a9..0000000 --- a/tests/manual/network_stresstest/url-list.txt +++ /dev/null @@ -1,64 +0,0 @@ -http://www.digicert.com/CACerts/DigiCertAssuredIDRootCA.crt -http://www.digicert.com/CACerts/DigiCertGlobalRootCA.crt -http://www.digicert.com/CACerts/DigiCertHighAssuranceEVRootCA.crt -http://www.quovadis.bm/public/qvrca2.crt -http://www.quovadis.bm/public/qvrca3.crt -https://secure.globalsign.net/cacert/root-r2.crt -http://secure.globalsign.net/cacert/Root-R1.crt -http://www.certplus.com/PC/certplus_class2.pem -https://www.startssl.com/certs/ca.crt -http://www.turktrust.com.tr/sertifikalar/TURKTRUST_Elektronik_Sertifika_Hizmet_Saglayicisi.crt -http://www.turktrust.com.tr/sertifikalar/kok_s2.crt -http://crt.comodoca.com/COMODOCertificationAuthority.crt -http://crt.comodoca.com/COMODOECCCertificationAuthority.crt -https://bugzilla.mozilla.org/attachment.cgi?id=368998 -https://bugzilla.mozilla.org/attachment.cgi?id=335538 -https://bugzilla.mozilla.org/attachment.cgi?id=304810 -https://www.securetrust.com/legal/STCA.txt -https://www.securetrust.com/legal/SGCA.txt -http://www.securetrust.com/legal/XGCA.txt -http://www.diginotar.nl/files/Rootcertificaten/DigiNotar%20root%20CA2007.crt -https://bugzilla.mozilla.org/attachment.cgi?id=294057 -https://bugzilla.mozilla.org/attachment.cgi?id=368997 -https://bugzilla.mozilla.org/attachment.cgi?id=306731 -https://certs.starfieldtech.com/repository/valicert_class2_root.crt -https://certs.godaddy.com/repository/gd-class2-root.crt -https://certs.starfieldtech.com/repository/sf-class2-root.crt -ftp://ftp.networksolutions.com/certs/netsolevroot.crt -https://bugzilla.mozilla.org/attachment.cgi?id=335551 -https://bugzilla.mozilla.org/attachment.cgi?id=369000 -https://bugzilla.mozilla.org/attachment.cgi?id=306736 -https://bugzilla.mozilla.org/attachment.cgi?id=267983 -https://swisssign.net/cgi-bin/authority/download?ca=50AFCC078715476F38C5B465D1DE95AAE9DF9CCC&into=browser -https://swisssign.net/cgi-bin/authority/download?ca=5B257B96A465517EB839F3C078665EE83AE7F0EE&into=browser -https://swisssign.net/cgi-bin/authority/download?ca=17A0CDC1E441B63A5B3BCB459DBD1CC298FA8658&into=browser -http://apps.identrust.com/roots/DSTROOTCAX3.cer -https://bugzilla.mozilla.org/attachment.cgi?id=277051 -http://www.ssi.gouv.fr/IMG/crt/igca-rsa.crt -http://www.e-szigno.hu/RootCA.crt -http://www.s-trust.de/service_support/zertifikatsmanagement/verzeichnisdienste/download_wurzelzertifikate/ordner_crt_dateien/authentication.crt -http://public.wisekey.com/crt/owgrgaca.crt -http://www.trustcenter.de/media/class_2_ii.der -http://www.trustcenter.de/media/class_3_ii.der -http://www.trustcenter.de/media/Universal_CA-I.der -http://www.certigna.fr/ca/ACcertigna.crt -https://repository.secomtrust.net/EV-Root1/EVRoot1ca.cer -http://www.certicamara.com/ac_offline_raiz_certicamara.crt -http://fedir.comsign.co.il/cacert/ComsignCA.crt -http://fedir.comsign.co.il/cacert/ComsignSecuredCA.crt -http://crl.pki.wellsfargo.com/wsprca.crt -http://cacert.omniroot.com/ct_root_ss.crt -http://www.kamusm.gov.tr/BilgiDeposu/KOKSHS.v3.crt -https://bugzilla.mozilla.org/attachment.cgi?id=380381 -http://210.71.154.6/download/ROOTeCA.cer -https://bugzilla.mozilla.org/attachment.cgi?id=359654 -http://www.gpki.go.jp/apcaself/APCAroot.der -https://bugzilla.mozilla.org/attachment.cgi?id=405525 -https://bugzilla.mozilla.org/attachment.cgi?id=361508 -https://bugzilla.mozilla.org/attachment.cgi?id=361508 -http://www.hongkongpost.gov.hk/product/download/root/img/smartid_rt.cacert -http://www.sk.ee/files/JUUR-SK.der -https://bugzilla.mozilla.org/attachment.cgi?id=408102 -http://www.disig.eu/ca/cert/ca_disig.der -https://bugzilla.mozilla.org/attachment.cgi?id=365241 -https://www2.jcsinc.co.jp/repository/certs/SSAD-rca.der diff --git a/tests/manual/network_stresstest/wwwfiles.qrc b/tests/manual/network_stresstest/wwwfiles.qrc index 2290861..4d602a1 100644 --- a/tests/manual/network_stresstest/wwwfiles.qrc +++ b/tests/manual/network_stresstest/wwwfiles.qrc @@ -1,6 +1,5 @@ <RCC> <qresource prefix="/"> <file>qtest</file> - <file>url-list.txt</file> </qresource> </RCC> |