383 QTest::addColumn<int>("statusCode"); |
385 QTest::addColumn<int>("statusCode"); |
384 QTest::addColumn<QString>("statusString"); |
386 QTest::addColumn<QString>("statusString"); |
385 QTest::addColumn<int>("contentLength"); |
387 QTest::addColumn<int>("contentLength"); |
386 QTest::addColumn<int>("downloadSize"); |
388 QTest::addColumn<int>("downloadSize"); |
387 |
389 |
388 QTest::newRow("success-internal") << "http://" << QtNetworkSettings::serverName() << "/cgi-bin/echo.cgi" << ushort(80) << false << "7 bytes" << 200 << "OK" << 7 << 7; |
390 QTest::newRow("success-internal") << "http://" << QtNetworkSettings::serverName() << "/qtest/cgi-bin/echo.cgi" << ushort(80) << false << "7 bytes" << 200 << "OK" << 7 << 7; |
389 QTest::newRow("failure-internal") << "http://" << QtNetworkSettings::serverName() << "/t" << ushort(80) << false << "Hello World" << 404 << "Not Found" << -1 << 997 + QtNetworkSettings::serverName().size(); |
391 QTest::newRow("failure-internal") << "http://" << QtNetworkSettings::serverName() << "/t" << ushort(80) << false << "Hello World" << 404 << "Not Found" << -1 << 997 + QtNetworkSettings::serverName().size(); |
390 } |
392 } |
391 |
393 |
392 void tst_QHttpNetworkConnection::post() |
394 void tst_QHttpNetworkConnection::post() |
393 { |
395 { |
799 // send 100 requests. apache will usually force-close after 100 requests in a single tcp connection |
801 // send 100 requests. apache will usually force-close after 100 requests in a single tcp connection |
800 QTest::addColumn<int>("requestCount"); |
802 QTest::addColumn<int>("requestCount"); |
801 |
803 |
802 QTest::newRow("6 connections, no pipelining, 100 requests") << quint16(6) << false << 100; |
804 QTest::newRow("6 connections, no pipelining, 100 requests") << quint16(6) << false << 100; |
803 QTest::newRow("1 connection, no pipelining, 100 requests") << quint16(1) << false << 100; |
805 QTest::newRow("1 connection, no pipelining, 100 requests") << quint16(1) << false << 100; |
804 QTest::newRow("6 connections, pipelining allowed, 100 requests") << quint16(2) << true << 100; |
806 QTest::newRow("6 connections, pipelining allowed, 100 requests") << quint16(6) << true << 100; |
805 QTest::newRow("1 connection, pipelining allowed, 100 requests") << quint16(1) << true << 100; |
807 QTest::newRow("1 connection, pipelining allowed, 100 requests") << quint16(1) << true << 100; |
806 } |
808 } |
807 |
809 |
808 void tst_QHttpNetworkConnection::getMultiple() |
810 void tst_QHttpNetworkConnection::getMultiple() |
809 { |
811 { |
983 qDeleteAll(requests); |
985 qDeleteAll(requests); |
984 qDeleteAll(replies); |
986 qDeleteAll(replies); |
985 } |
987 } |
986 |
988 |
987 |
989 |
|
990 class GetEmptyWithPipeliningReceiver : public QObject |
|
991 { |
|
992 Q_OBJECT |
|
993 public: |
|
994 int receivedCount; |
|
995 int requestCount; |
|
996 GetEmptyWithPipeliningReceiver(int rq) : receivedCount(0),requestCount(rq) { } |
|
997 public Q_SLOTS: |
|
998 void finishedSlot() { |
|
999 QHttpNetworkReply *reply = (QHttpNetworkReply*) sender(); |
|
1000 receivedCount++; |
|
1001 |
|
1002 if (receivedCount == requestCount) |
|
1003 QTestEventLoop::instance().exitLoop(); |
|
1004 } |
|
1005 }; |
|
1006 |
|
1007 void tst_QHttpNetworkConnection::getEmptyWithPipelining() |
|
1008 { |
|
1009 quint16 requestCount = 50; |
|
1010 // use 2 connections. |
|
1011 QHttpNetworkConnection connection(2, QtNetworkSettings::serverName()); |
|
1012 GetEmptyWithPipeliningReceiver receiver(requestCount); |
|
1013 |
|
1014 QUrl url("http://" + QtNetworkSettings::serverName() + "/cgi-bin/echo.cgi"); // a get on this = getting an empty file |
|
1015 QList<QHttpNetworkRequest*> requests; |
|
1016 QList<QHttpNetworkReply*> replies; |
|
1017 |
|
1018 for (int i = 0; i < requestCount; i++) { |
|
1019 QHttpNetworkRequest *request = 0; |
|
1020 request = new QHttpNetworkRequest(url, QHttpNetworkRequest::Get); |
|
1021 request->setPipeliningAllowed(true); |
|
1022 |
|
1023 requests.append(request); |
|
1024 QHttpNetworkReply *reply = connection.sendRequest(*request); |
|
1025 connect(reply, SIGNAL(finished()), &receiver, SLOT(finishedSlot())); |
|
1026 replies.append(reply); |
|
1027 } |
|
1028 |
|
1029 QTestEventLoop::instance().enterLoop(20); |
|
1030 QVERIFY(!QTestEventLoop::instance().timeout()); |
|
1031 |
|
1032 qDeleteAll(requests); |
|
1033 qDeleteAll(replies); |
|
1034 } |
|
1035 |
|
1036 |
988 |
1037 |
989 QTEST_MAIN(tst_QHttpNetworkConnection) |
1038 QTEST_MAIN(tst_QHttpNetworkConnection) |
990 #include "tst_qhttpnetworkconnection.moc" |
1039 #include "tst_qhttpnetworkconnection.moc" |