From 4888e3e8401dc2e949f7e575c0e1e0036d746af6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Fri, 14 Feb 2020 12:07:18 +0100 Subject: Remove bearermanagement usage inside QNAM and QNetworkProxy Change-Id: I2c4fdf598b46daf1b69a65848ebe0fd78ef8be24 Reviewed-by: Timur Pocheptsov --- .../access/qnetworkreply/tst_qnetworkreply.cpp | 297 --------------------- 1 file changed, 297 deletions(-) (limited to 'tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp') diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp index e26700071b..915926e488 100644 --- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -66,12 +66,6 @@ #include #endif #endif -#ifndef QT_NO_BEARERMANAGEMENT -#include -#include -#include -#include -#endif #ifdef QT_BUILD_INTERNAL #include // implicitly included by qnetworkaccessmanager_p.h currently, but don't rely on that being true forever #include @@ -161,11 +155,6 @@ class tst_QNetworkReply: public QObject QList storedExpectedSslErrors; static const QString certsFilePath; #endif -#ifndef QT_NO_BEARERMANAGEMENT - QNetworkConfigurationManager *netConfMan; - QNetworkConfiguration networkConfiguration; - QScopedPointer networkSession; -#endif using QObject::connect; static bool connect(const QNetworkReplyPtr &ptr, const char *signal, const QObject *receiver, const char *slot, Qt::ConnectionType ct = Qt::AutoConnection) @@ -481,15 +470,6 @@ private Q_SLOTS: void emitErrorForAllReplies(); // QTBUG-36890 -#ifdef QT_BUILD_INTERNAL - void backgroundRequest_data(); - void backgroundRequest(); - void backgroundRequestInterruption_data(); - void backgroundRequestInterruption(); - void backgroundRequestConnectInBackground_data(); - void backgroundRequestConnectInBackground(); -#endif - void putWithRateLimiting(); void ioHttpSingleRedirect(); @@ -1576,15 +1556,6 @@ void tst_QNetworkReply::initTestCase() #ifndef QT_NO_SSL QSslConfiguration::defaultConfiguration().caCertificates(); //preload certificates #endif -#ifndef QT_NO_BEARERMANAGEMENT - netConfMan = new QNetworkConfigurationManager(this); - networkConfiguration = netConfMan->defaultConfiguration(); - networkSession.reset(new QNetworkSession(networkConfiguration)); - if (!networkSession->isOpen()) { - networkSession->open(); - QVERIFY(networkSession->waitForOpened(30000)); - } -#endif echoProcessDir = QFINDTESTDATA("echo"); QVERIFY2(!echoProcessDir.isEmpty(), qPrintable( @@ -1599,11 +1570,6 @@ void tst_QNetworkReply::cleanupTestCase() if (!wronlyFileName.isNull()) QFile::remove(wronlyFileName); #endif -#ifndef QT_NO_BEARERMANAGEMENT - if (networkSession && networkSession->isOpen()) { - networkSession->close(); - } -#endif } void tst_QNetworkReply::cleanupTestData() @@ -5931,11 +5897,6 @@ void tst_QNetworkReply::httpProxyCommands() QNetworkRequest request(url); request.setRawHeader("User-Agent", "QNetworkReplyAutoTest/1.0"); QNetworkReplyPtr reply(manager.get(request)); - //clearing the proxy here causes the test to fail. - //the proxy isn't used until after the bearer has been started - //which is correct in general, because system proxy isn't known until that time. - //removing this line is safe, as the proxy is also reset by the cleanup() function - //manager.setProxy(QNetworkProxy()); // wait for the finished signal QVERIFY(waitForFinish(reply) != Timeout); @@ -7028,38 +6989,7 @@ void tst_QNetworkReply::getFromUnreachableIp() // NOERROR; so socket engine starts a timer (30 s.) and waits for a timeout/ // error/success. Unfortunately, the test itself is waiting only for 5 s. // So we have to adjust the connection timeout or skip the test completely - // if the 'bearermanagement' feature is not available. -#if QT_CONFIG(bearermanagement) - class ConfigurationGuard - { - public: - explicit ConfigurationGuard(QNetworkAccessManager *m) - : manager(m) - { - Q_ASSERT(m); - auto conf = manager->configuration(); - previousTimeout = conf.connectTimeout(); - conf.setConnectTimeout(1500); - manager->setConfiguration(conf); - } - ~ConfigurationGuard() - { - Q_ASSERT(manager); - auto conf = manager->configuration(); - conf.setConnectTimeout(previousTimeout); - manager->setConfiguration(conf); - } - private: - QNetworkAccessManager *manager = nullptr; - int previousTimeout = 0; - - Q_DISABLE_COPY(ConfigurationGuard) - }; - - const ConfigurationGuard restorer(&manager); -#else // bearermanagement QSKIP("This test is non-deterministic on Windows x86"); -#endif // !bearermanagement #endif // Q_OS_WIN QNetworkRequest request(QUrl("http://255.255.255.255/42/23/narf/narf/narf")); @@ -8136,233 +8066,6 @@ void tst_QNetworkReply::emitErrorForAllReplies() // QTBUG-36890 } } -#ifdef QT_BUILD_INTERNAL -void tst_QNetworkReply::backgroundRequest_data() -{ -#ifndef QT_NO_BEARERMANAGEMENT - QTest::addColumn("url"); - QTest::addColumn("background"); - QTest::addColumn("policy"); - QTest::addColumn("error"); - - QUrl httpurl("http://" + QtNetworkSettings::httpServerName()); - QUrl httpsurl("https://" + QtNetworkSettings::httpServerName()); -#if QT_CONFIG(ftp) - QUrl ftpurl("ftp://" + QtNetworkSettings::ftpServerName() + "/qtest/rfc3252.txt"); -#endif - - QTest::newRow("http, fg, normal") << httpurl << false << (int)QNetworkSession::NoPolicy << QNetworkReply::NoError; - QTest::newRow("http, bg, normal") << httpurl << true << (int)QNetworkSession::NoPolicy << QNetworkReply::NoError; - QTest::newRow("http, fg, nobg") << httpurl << false << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::NoError; - QTest::newRow("http, bg, nobg") << httpurl << true << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::BackgroundRequestNotAllowedError; - -#ifndef QT_NO_SSL - QTest::newRow("https, fg, normal") << httpsurl << false << (int)QNetworkSession::NoPolicy << QNetworkReply::NoError; - QTest::newRow("https, bg, normal") << httpsurl << true << (int)QNetworkSession::NoPolicy << QNetworkReply::NoError; - QTest::newRow("https, fg, nobg") << httpsurl << false << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::NoError; - QTest::newRow("https, bg, nobg") << httpsurl << true << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::BackgroundRequestNotAllowedError; -#endif - -#if QT_CONFIG(ftp) - QTest::newRow("ftp, fg, normal") << ftpurl << false << (int)QNetworkSession::NoPolicy << QNetworkReply::NoError; - QTest::newRow("ftp, bg, normal") << ftpurl << true << (int)QNetworkSession::NoPolicy << QNetworkReply::NoError; - QTest::newRow("ftp, fg, nobg") << ftpurl << false << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::NoError; - QTest::newRow("ftp, bg, nobg") << ftpurl << true << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::BackgroundRequestNotAllowedError; -#endif -#endif // !QT_NO_BEARERMANAGEMENT -} -#endif - -//test purpose: background requests can't be started when not allowed -#ifdef QT_BUILD_INTERNAL -void tst_QNetworkReply::backgroundRequest() -{ -#ifndef QT_NO_BEARERMANAGEMENT - QFETCH(QUrl, url); - QFETCH(bool, background); - QFETCH(int, policy); - QFETCH(QNetworkReply::NetworkError, error); - - QNetworkRequest request(url); - - if (background) - request.setAttribute(QNetworkRequest::BackgroundRequestAttribute, QVariant::fromValue(true)); - - //this preconstructs the session so we can change policies in advance - manager.setConfiguration(networkConfiguration); - -#ifndef QT_NO_SSL - connect(&manager, SIGNAL(sslErrors(QNetworkReply*,QList)), - SLOT(sslErrors(QNetworkReply*,QList))); -#endif - - const QWeakPointer sessionWeakPtr = QNetworkAccessManagerPrivate::getNetworkSession(&manager); - QVERIFY(!sessionWeakPtr.isNull()); - auto session = const_cast(sessionWeakPtr.toStrongRef().data()); - QNetworkSession::UsagePolicies original = session->usagePolicies(); - QNetworkSessionPrivate::setUsagePolicies(*session, QNetworkSession::UsagePolicies(policy)); - - QNetworkReplyPtr reply(manager.get(request)); - - QVERIFY(waitForFinish(reply) != Timeout); - if (session) - QNetworkSessionPrivate::setUsagePolicies(*session, original); - - QVERIFY(reply->isFinished()); - QCOMPARE(reply->error(), error); -#endif -} -#endif - -#ifdef QT_BUILD_INTERNAL -void tst_QNetworkReply::backgroundRequestInterruption_data() -{ - QTest::addColumn("url"); - QTest::addColumn("background"); - QTest::addColumn("error"); - - QUrl httpurl("http://" + QtNetworkSettings::httpServerName() + "/qtest/mediumfile"); - QUrl httpsurl("https://" + QtNetworkSettings::httpServerName() + "/qtest/mediumfile"); -#if QT_CONFIG(ftp) - QUrl ftpurl("ftp://" + QtNetworkSettings::ftpServerName() + "/qtest/bigfile"); -#endif - - QTest::newRow("http, fg, nobg") << httpurl << false << QNetworkReply::NoError; - QTest::newRow("http, bg, nobg") << httpurl << true << QNetworkReply::BackgroundRequestNotAllowedError; - -#ifndef QT_NO_SSL - QTest::newRow("https, fg, nobg") << httpsurl << false << QNetworkReply::NoError; - QTest::newRow("https, bg, nobg") << httpsurl << true << QNetworkReply::BackgroundRequestNotAllowedError; -#endif - -#if QT_CONFIG(ftp) - QTest::newRow("ftp, fg, nobg") << ftpurl << false << QNetworkReply::NoError; - QTest::newRow("ftp, bg, nobg") << ftpurl << true << QNetworkReply::BackgroundRequestNotAllowedError; -#endif -} -#endif - -//test purpose: background requests in progress are aborted when policy changes to disallow them -#ifdef QT_BUILD_INTERNAL -void tst_QNetworkReply::backgroundRequestInterruption() -{ -#ifndef QT_NO_BEARERMANAGEMENT - if (QNetworkStatusMonitor::isEnabled() && QByteArray(QTest::currentDataTag()).startsWith("http")) - QSKIP("This test (currently) doesn't make any sense when QNetworkStatusMonitor is enabled"); - - QFETCH(QUrl, url); - QFETCH(bool, background); - QFETCH(QNetworkReply::NetworkError, error); - - QNetworkRequest request(url); - - if (background) - request.setAttribute(QNetworkRequest::BackgroundRequestAttribute, QVariant::fromValue(true)); - - //this preconstructs the session so we can change policies in advance - manager.setConfiguration(networkConfiguration); - -#ifndef QT_NO_SSL - connect(&manager, SIGNAL(sslErrors(QNetworkReply*,QList)), - SLOT(sslErrors(QNetworkReply*,QList))); -#endif - - const QWeakPointer sessionWeakPtr = QNetworkAccessManagerPrivate::getNetworkSession(&manager); - QVERIFY(!sessionWeakPtr.isNull()); - auto session = const_cast(sessionWeakPtr.toStrongRef().data()); - QNetworkSession::UsagePolicies original = session->usagePolicies(); - QNetworkSessionPrivate::setUsagePolicies(*session, QNetworkSession::NoPolicy); - - request.setAttribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute, 8192); - QNetworkReplyPtr reply(manager.get(request)); - reply->setReadBufferSize(1024); - - QSignalSpy spy(reply.data(), SIGNAL(readyRead())); - QTRY_VERIFY(spy.count() > 0); - - QNetworkSessionPrivate::setUsagePolicies(*session, QNetworkSession::NoBackgroundTrafficPolicy); - - // After we have changed the policy we can download at full speed. - reply->setReadBufferSize(0); - - QVERIFY(waitForFinish(reply) != Timeout); - if (session) - QNetworkSessionPrivate::setUsagePolicies(*session, original); - - QVERIFY(reply->isFinished()); - QCOMPARE(reply->error(), error); -#endif -} -#endif - -#ifdef QT_BUILD_INTERNAL -void tst_QNetworkReply::backgroundRequestConnectInBackground_data() -{ - QTest::addColumn("url"); - QTest::addColumn("background"); - - QUrl httpurl("http://" + QtNetworkSettings::httpServerName()); -#if QT_CONFIG(ftp) - QUrl ftpurl("ftp://" + QtNetworkSettings::ftpServerName() + "/qtest/rfc3252.txt"); -#endif - - QTest::newRow("http, fg") << httpurl << false; - QTest::newRow("http, bg") << httpurl << true; - -#if QT_CONFIG(ftp) - QTest::newRow("ftp, fg") << ftpurl << false; - QTest::newRow("ftp, bg") << ftpurl << true; -#endif -} -#endif - -//test purpose: check that backgroundness is propagated to the network session -#ifdef QT_BUILD_INTERNAL -void tst_QNetworkReply::backgroundRequestConnectInBackground() -{ -#ifndef QT_NO_BEARERMANAGEMENT - QFETCH(QUrl, url); - QFETCH(bool, background); - - QNetworkRequest request(url); - - if (background) - request.setAttribute(QNetworkRequest::BackgroundRequestAttribute, QVariant::fromValue(true)); - - QWeakPointer session = QNetworkAccessManagerPrivate::getNetworkSession(&manager); - //force QNAM to reopen the session. - if (session && session.toStrongRef().data()->isOpen()) { - const_cast(session.toStrongRef().data())->close(); - QCoreApplication::processEvents(); //let signals propagate inside QNAM - } - - //this preconstructs the session so we can change policies in advance - manager.setConfiguration(networkConfiguration); - - session = QNetworkAccessManagerPrivate::getNetworkSession(&manager); - QVERIFY(session); - QNetworkSession::UsagePolicies original = session.toStrongRef().data()->usagePolicies(); - QNetworkSessionPrivate::setUsagePolicies(*const_cast(session.toStrongRef().data()), QNetworkSession::NoPolicy); - - QNetworkReplyPtr reply(manager.get(request)); - - QVERIFY(waitForFinish(reply) != Timeout); - session = QNetworkAccessManagerPrivate::getNetworkSession(&manager); - if (session) { - QVariant cib = session.toStrongRef().data()->sessionProperty(QStringLiteral("ConnectInBackground")); - if (!cib.isValid()) - QSKIP("inconclusive - ConnectInBackground session property not supported by the bearer plugin"); - QCOMPARE(cib.toBool(), background); - QNetworkSessionPrivate::setUsagePolicies(*const_cast(session.toStrongRef().data()), original); - } else { - QSKIP("inconclusive - network session has been destroyed"); - } - - QVERIFY(reply->isFinished()); -#endif -} -#endif - class RateLimitedUploadDevice : public QIODevice { Q_OBJECT -- cgit v1.2.3