tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
changeset 23 89e065397ea6
parent 22 79de32ba3296
child 25 e24348a560a6
--- a/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp	Fri May 14 16:40:13 2010 +0300
+++ b/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp	Thu May 27 13:40:48 2010 +0300
@@ -107,6 +107,8 @@
     void getMultiple();
     void getMultipleWithPipeliningAndMultiplePriorities();
     void getMultipleWithPriorities();
+
+    void getEmptyWithPipelining();
 };
 
 tst_QHttpNetworkConnection::tst_QHttpNetworkConnection()
@@ -985,6 +987,53 @@
 }
 
 
+class GetEmptyWithPipeliningReceiver : public QObject
+{
+    Q_OBJECT
+public:
+    int receivedCount;
+    int requestCount;
+    GetEmptyWithPipeliningReceiver(int rq) : receivedCount(0),requestCount(rq) { }
+public Q_SLOTS:
+    void finishedSlot() {
+        QHttpNetworkReply *reply = (QHttpNetworkReply*) sender();
+        receivedCount++;
+
+        if (receivedCount == requestCount)
+            QTestEventLoop::instance().exitLoop();
+    }
+};
+
+void tst_QHttpNetworkConnection::getEmptyWithPipelining()
+{
+    quint16 requestCount = 50;
+    // use 2 connections.
+    QHttpNetworkConnection connection(2, QtNetworkSettings::serverName());
+    GetEmptyWithPipeliningReceiver receiver(requestCount);
+
+    QUrl url("http://" + QtNetworkSettings::serverName() + "/cgi-bin/echo.cgi"); // a get on this = getting an empty file
+    QList<QHttpNetworkRequest*> requests;
+    QList<QHttpNetworkReply*> replies;
+
+    for (int i = 0; i < requestCount; i++) {
+        QHttpNetworkRequest *request = 0;
+        request = new QHttpNetworkRequest(url, QHttpNetworkRequest::Get);
+        request->setPipeliningAllowed(true);
+
+        requests.append(request);
+        QHttpNetworkReply *reply = connection.sendRequest(*request);
+        connect(reply, SIGNAL(finished()), &receiver, SLOT(finishedSlot()));
+        replies.append(reply);
+    }
+
+    QTestEventLoop::instance().enterLoop(20);
+    QVERIFY(!QTestEventLoop::instance().timeout());
+
+    qDeleteAll(requests);
+    qDeleteAll(replies);
+}
+
+
 
 QTEST_MAIN(tst_QHttpNetworkConnection)
 #include "tst_qhttpnetworkconnection.moc"