From 13e0a36626bd75e631dd9536e795a494432b1945 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Tue, 10 Sep 2019 09:04:17 +0200 Subject: Retire SPDY protocol implementation (Qt6) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As it was superseded by HTTP/2. Bye, Speedy. Since it's Qt 6, we also fix the attribute's enumerator to fit our coding convention with HTTP2AllowedAttribute becoming Http2AllowedAttribute, and the same for HTTP2WasUsedAttribute. tst_qnetworkreply in 'benchmark' directory of qtbase/tests was updated - we have the logic they tested in preConnectEncrypted in tst_http2 now. Manual qnetworkreply test was updated (instead of SPDY in NPN failure we can use H2, the second test was deleted - again, auto-tested in tst_http2). Change-Id: I559c140c333ddf72664911c6e275b1d0d2b980a9 Task-number: QTBUG-78255 Reviewed-by: MÃ¥rten Nordheim --- tests/manual/qnetworkreply/main.cpp | 204 +----------------------------------- 1 file changed, 1 insertion(+), 203 deletions(-) (limited to 'tests/manual') diff --git a/tests/manual/qnetworkreply/main.cpp b/tests/manual/qnetworkreply/main.cpp index afac7a7095..01bd30a854 100644 --- a/tests/manual/qnetworkreply/main.cpp +++ b/tests/manual/qnetworkreply/main.cpp @@ -58,9 +58,6 @@ private slots: void setSslConfiguration_data(); void setSslConfiguration(); void uploadToFacebook(); - void spdy_data(); - void spdy(); - void spdyMultipleRequestsPerHost(); void proxyAuthentication_data(); void proxyAuthentication(); void authentication(); @@ -290,126 +287,6 @@ void tst_qnetworkreply::uploadToFacebook() } } -void tst_qnetworkreply::spdy_data() -{ - QTest::addColumn("host"); - QTest::addColumn("setAttribute"); - QTest::addColumn("enabled"); - QTest::addColumn("expectedProtocol"); - - QList hosts = QList() - << QStringLiteral("www.google.com") // sends SPDY and 30x redirect - << QStringLiteral("www.google.de") // sends SPDY and 200 OK - << QStringLiteral("mail.google.com") // sends SPDY and 200 OK - << QStringLiteral("www.youtube.com") // sends SPDY and 200 OK - << QStringLiteral("www.dropbox.com") // no SPDY, but NPN which selects HTTP - << QStringLiteral("www.facebook.com") // sends SPDY and 200 OK - << QStringLiteral("graph.facebook.com") // sends SPDY and 200 OK - << QStringLiteral("www.twitter.com") // sends SPDY and 30x redirect - << QStringLiteral("twitter.com") // sends SPDY and 200 OK - << QStringLiteral("api.twitter.com"); // sends SPDY and 200 OK - - foreach (const QString &host, hosts) { - QByteArray tag = host.toLocal8Bit(); - tag.append("-not-used"); - QTest::newRow(tag) - << QStringLiteral("https://") + host - << false - << false - << QByteArray(); - - tag = host.toLocal8Bit(); - tag.append("-disabled"); - QTest::newRow(tag) - << QStringLiteral("https://") + host - << true - << false - << QByteArray(); - - if (host != QStringLiteral("api.twitter.com")) { // they don't offer an API over HTTP - tag = host.toLocal8Bit(); - tag.append("-no-https-url"); - QTest::newRow(tag) - << QStringLiteral("http://") + host - << true - << true - << QByteArray(); - } - -#ifndef QT_NO_OPENSSL - tag = host.toLocal8Bit(); - tag.append("-enabled"); - QTest::newRow(tag) - << QStringLiteral("https://") + host - << true - << true - << (host == QStringLiteral("www.dropbox.com") - ? QByteArray(QSslConfiguration::NextProtocolHttp1_1) - : QByteArray(QSslConfiguration::NextProtocolSpdy3_0)); -#endif // QT_NO_OPENSSL - } -} - -void tst_qnetworkreply::spdy() -{ -#if defined(QT_BUILD_INTERNAL) && !defined(QT_NO_SSL) && OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_NEXTPROTONEG) - - m_manager.clearAccessCache(); - - QFETCH(QString, host); - QUrl url(host); - QNetworkRequest request(url); - - QFETCH(bool, setAttribute); - QFETCH(bool, enabled); - if (setAttribute) { - request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, QVariant(enabled)); - } - - QNetworkReply *reply = m_manager.get(request); - QObject::connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); - - QSignalSpy metaDataChangedSpy(reply, SIGNAL(metaDataChanged())); - QSignalSpy readyReadSpy(reply, SIGNAL(readyRead())); - QSignalSpy finishedSpy(reply, SIGNAL(finished())); - QSignalSpy finishedManagerSpy(&m_manager, SIGNAL(finished(QNetworkReply*))); - - QTestEventLoop::instance().enterLoop(15); - QVERIFY(!QTestEventLoop::instance().timeout()); - - QFETCH(QByteArray, expectedProtocol); - - bool expectedSpdyUsed = (expectedProtocol == QSslConfiguration::NextProtocolSpdy3_0); - QCOMPARE(reply->attribute(QNetworkRequest::SpdyWasUsedAttribute).toBool(), expectedSpdyUsed); - - QCOMPARE(metaDataChangedSpy.count(), 1); - QCOMPARE(finishedSpy.count(), 1); - QCOMPARE(finishedManagerSpy.count(), 1); - - QUrl redirectUrl = reply->header(QNetworkRequest::LocationHeader).toUrl(); - QByteArray content = reply->readAll(); - - int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); - QVERIFY(statusCode >= 200 && statusCode < 500); - if (statusCode == 200 || statusCode >= 400) { - QVERIFY(readyReadSpy.count() > 0); - QVERIFY(!content.isEmpty()); - } else if (statusCode >= 300 && statusCode < 400) { - QVERIFY(!redirectUrl.isEmpty()); - } - - QSslConfiguration::NextProtocolNegotiationStatus expectedStatus = - expectedProtocol.isNull() ? QSslConfiguration::NextProtocolNegotiationNone - : QSslConfiguration::NextProtocolNegotiationNegotiated; - QCOMPARE(reply->sslConfiguration().nextProtocolNegotiationStatus(), - expectedStatus); - - QCOMPARE(reply->sslConfiguration().nextNegotiatedProtocol(), expectedProtocol); -#else - QSKIP("Qt built withouth OpenSSL, or the OpenSSL version is too old"); -#endif // defined(QT_BUILD_INTERNAL) && !defined(QT_NO_SSL) ... -} - void tst_qnetworkreply::spdyReplyFinished() { static int finishedCount = 0; @@ -419,85 +296,6 @@ void tst_qnetworkreply::spdyReplyFinished() QTestEventLoop::instance().exitLoop(); } -void tst_qnetworkreply::spdyMultipleRequestsPerHost() -{ -#if defined(QT_BUILD_INTERNAL) && !defined(QT_NO_SSL) && OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_NEXTPROTONEG) - - QList requests; - requests - << QNetworkRequest(QUrl("https://www.facebook.com")) - << QNetworkRequest(QUrl("https://www.facebook.com/images/fb_icon_325x325.png")) - - << QNetworkRequest(QUrl("https://www.google.de")) - << QNetworkRequest(QUrl("https://www.google.de/preferences?hl=de")) - << QNetworkRequest(QUrl("https://www.google.de/intl/de/policies/?fg=1")) - << QNetworkRequest(QUrl("https://www.google.de/intl/de/about.html?fg=1")) - << QNetworkRequest(QUrl("https://www.google.de/services/?fg=1")) - << QNetworkRequest(QUrl("https://www.google.de/intl/de/ads/?fg=1")) - - << QNetworkRequest(QUrl("https://i1.ytimg.com/li/tnHdj3df7iM/default.jpg")) - << QNetworkRequest(QUrl("https://i1.ytimg.com/li/7Dr1BKwqctY/default.jpg")) - << QNetworkRequest(QUrl("https://i1.ytimg.com/li/hfZhJdhTqX8/default.jpg")) - << QNetworkRequest(QUrl("https://i1.ytimg.com/vi/14Nprh8163I/hqdefault.jpg")) - ; - QList replies; - QList metaDataChangedSpies; - QList readyReadSpies; - QList finishedSpies; - - QSignalSpy finishedManagerSpy(&m_manager, SIGNAL(finished(QNetworkReply*))); - - foreach (QNetworkRequest request, requests) { - request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, true); - QNetworkReply *reply = m_manager.get(request); - QObject::connect(reply, SIGNAL(finished()), this, SLOT(spdyReplyFinished())); - replies << reply; - 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; - } - - QCOMPARE(requests.count(), replies.count()); - - QTestEventLoop::instance().enterLoop(15); - QVERIFY(!QTestEventLoop::instance().timeout()); - - QCOMPARE(finishedManagerSpy.count(), requests.count()); - - for (int a = 0; a < replies.count(); ++a) { - - QCOMPARE(replies.at(a)->sslConfiguration().nextProtocolNegotiationStatus(), - QSslConfiguration::NextProtocolNegotiationNegotiated); - QCOMPARE(replies.at(a)->sslConfiguration().nextNegotiatedProtocol(), - QByteArray(QSslConfiguration::NextProtocolSpdy3_0)); - - 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); - - QByteArray content = replies.at(a)->readAll(); - QVERIFY(content.count() > 0); - - 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(); - } -#else - QSKIP("Qt built withouth OpenSSL, or the OpenSSL version is too old"); -#endif // defined(QT_BUILD_INTERNAL) && !defined(QT_NO_SSL) ... -} - void tst_qnetworkreply::proxyAuthentication_data() { QTest::addColumn("url"); @@ -586,7 +384,7 @@ void tst_qnetworkreply::npnWithEmptyList() // QTBUG-40714 QUrl url(QStringLiteral("https://www.ossifrage.net/")); QNetworkRequest request(url); - request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, QVariant(true)); + request.setAttribute(QNetworkRequest::Http2AllowedAttribute, QVariant(true)); QNetworkReply *reply = m_manager.get(request); QObject::connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); -- cgit v1.2.3