summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/network/access
diff options
context:
space:
mode:
Diffstat (limited to 'tests/benchmarks/network/access')
-rw-r--r--tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp43
1 files changed, 39 insertions, 4 deletions
diff --git a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
index 55376d5a79..3b8565a0ec 100644
--- a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -52,6 +52,7 @@
#ifdef QT_BUILD_INTERNAL
#include <QtNetwork/private/qhostinfo_p.h>
+#include <QtNetwork/private/qsslsocket_openssl_p.h>
#endif
Q_DECLARE_METATYPE(QSharedPointer<char>)
@@ -552,10 +553,16 @@ void tst_qnetworkreply::echoPerformance()
void tst_qnetworkreply::preConnectEncrypted()
{
+ QFETCH(int, sleepTime);
+ QFETCH(QSslConfiguration, sslConfiguration);
+ bool spdyEnabled = !sslConfiguration.isNull();
+
QString hostName = QLatin1String("www.google.com");
QNetworkAccessManager manager;
QNetworkRequest request(QUrl("https://" + hostName));
+ if (spdyEnabled)
+ request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, true);
// make sure we have a full request including
// DNS lookup, TCP and SSL handshakes
@@ -581,8 +588,12 @@ void tst_qnetworkreply::preConnectEncrypted()
manager.clearAccessCache();
// now try to make the connection beforehand
- QFETCH(int, sleepTime);
- manager.connectToHostEncrypted(hostName);
+ if (spdyEnabled) {
+ request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, true);
+ manager.connectToHostEncrypted(hostName, 443, sslConfiguration);
+ } else {
+ manager.connectToHostEncrypted(hostName);
+ }
QTestEventLoop::instance().enterLoopMSecs(sleepTime);
// now make another request and hopefully use the existing connection
@@ -590,18 +601,42 @@ void tst_qnetworkreply::preConnectEncrypted()
QNetworkReply *preConnectReply = normalResult.first;
QVERIFY(!QTestEventLoop::instance().timeout());
QVERIFY(preConnectReply->error() == QNetworkReply::NoError);
+ bool spdyWasUsed = preConnectReply->attribute(QNetworkRequest::SpdyWasUsedAttribute).toBool();
+ QCOMPARE(spdyEnabled, spdyWasUsed);
qint64 preConnectElapsed = preConnectResult.second;
qDebug() << request.url().toString() << "full request:" << normalElapsed
<< "ms, pre-connect request:" << preConnectElapsed << "ms, difference:"
<< (normalElapsed - preConnectElapsed) << "ms";
}
+
#endif // !QT_NO_SSL
void tst_qnetworkreply::preConnectEncrypted_data()
{
+#ifndef QT_NO_OPENSSL
QTest::addColumn<int>("sleepTime");
- QTest::newRow("2secs") << 2000; // to start a new request after preconnecting is done
- QTest::newRow("100ms") << 100; // to start a new request while preconnecting is in-flight
+ QTest::addColumn<QSslConfiguration>("sslConfiguration");
+
+ // start a new normal request after preconnecting is done
+ QTest::newRow("HTTPS-2secs") << 2000 << QSslConfiguration();
+
+ // start a new normal request while preconnecting is in-flight
+ QTest::newRow("HTTPS-100ms") << 100 << QSslConfiguration();
+
+ QSslConfiguration spdySslConf = QSslConfiguration::defaultConfiguration();
+ QList<QByteArray> nextProtocols = QList<QByteArray>()
+ << QSslConfiguration::NextProtocolSpdy3_0
+ << QSslConfiguration::NextProtocolHttp1_1;
+ spdySslConf.setAllowedNextProtocols(nextProtocols);
+
+#if defined(QT_BUILD_INTERNAL) && !defined(QT_NO_SSL) && OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_NEXTPROTONEG)
+ // start a new SPDY request while preconnecting is done
+ QTest::newRow("SPDY-2secs") << 2000 << spdySslConf;
+
+ // start a new SPDY request while preconnecting is in-flight
+ QTest::newRow("SPDY-100ms") << 100 << spdySslConf;
+#endif // defined (QT_BUILD_INTERNAL) && !defined(QT_NO_SSL) ...
+#endif // QT_NO_OPENSSL
}
void tst_qnetworkreply::downloadPerformance()