diff options
author | Peter Hartmann <phartmann@blackberry.com> | 2014-09-11 11:59:23 +0200 |
---|---|---|
committer | Peter Hartmann <phartmann@blackberry.com> | 2014-10-04 14:41:55 +0200 |
commit | 0473d2bd344ab7f6ad4037c6b33a4735036d238a (patch) | |
tree | da1923e16d58923af4cdcff79523a16a1b5617a8 /tests | |
parent | 03e794b7a6ce730c8768b91e00fefc6db32463be (diff) |
QNetworkRequest: Add new enum to emit all uploadProgress signals
... so that a user can have more fine-grained uploadProgress signal
emissions if desired.
Change-Id: I9f77fd80c100dbe249beaf3057e6e8974680ec59
Reviewed-by: Markus Goetz <markus@woboq.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp index ce1a4cee06..7ec35fb3c2 100644 --- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -315,6 +315,7 @@ private Q_SLOTS: void ioPostToHttpFromMiddleOfQBufferFiveBytes(); void ioPostToHttpNoBufferFlag(); void ioPostToHttpUploadProgress(); + void emitAllUploadProgressSignals(); void ioPostToHttpEmptyUploadProgress(); void lastModifiedHeaderForFile(); @@ -4979,6 +4980,59 @@ void tst_QNetworkReply::ioPostToHttpUploadProgress() server.close(); } +void tst_QNetworkReply::emitAllUploadProgressSignals() +{ + QFile sourceFile(testDataDir + "/image1.jpg"); + QVERIFY(sourceFile.open(QIODevice::ReadOnly)); + + // emulate a minimal http server + QTcpServer server; + server.listen(QHostAddress(QHostAddress::LocalHost), 0); + connect(&server, SIGNAL(newConnection()), &QTestEventLoop::instance(), SLOT(exitLoop())); + + QUrl url = QUrl(QString("http://127.0.0.1:%1/").arg(server.serverPort())); + QNetworkRequest normalRequest(url); + normalRequest.setRawHeader("Content-Type", "application/octet-stream"); + + QNetworkRequest catchAllSignalsRequest(normalRequest); + catchAllSignalsRequest.setAttribute(QNetworkRequest::EmitAllUploadProgressSignalsAttribute, true); + + QList<QNetworkRequest> requests; + requests << normalRequest << catchAllSignalsRequest; + + QList<int> signalCount; + + foreach (const QNetworkRequest &request, requests) { + + sourceFile.seek(0); + QNetworkReplyPtr reply(manager.post(request, &sourceFile)); + QSignalSpy spy(reply.data(), SIGNAL(uploadProgress(qint64,qint64))); + + // get the request started and the incoming socket connected + QTestEventLoop::instance().enterLoop(10); + QVERIFY(!QTestEventLoop::instance().timeout()); + QTcpSocket *incomingSocket = server.nextPendingConnection(); + QVERIFY(incomingSocket); + QTestEventLoop::instance().enterLoop(10); + + connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); + incomingSocket->write("HTTP/1.0 200 OK\r\n"); + incomingSocket->write("Content-Length: 0\r\n"); + incomingSocket->write("\r\n"); + QTestEventLoop::instance().enterLoop(10); + // not timeouted -> finished() was emitted + QVERIFY(!QTestEventLoop::instance().timeout()); + + incomingSocket->close(); + signalCount.append(spy.count()); + reply->deleteLater(); + } + server.close(); + + // verify that the normal request emitted less signals than the one emitting all signals + QVERIFY2(signalCount.at(0) < signalCount.at(1), "no upload signal was suppressed"); +} + void tst_QNetworkReply::ioPostToHttpEmptyUploadProgress() { QByteArray ba; |