tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
branchRCL_3
changeset 14 c0432d11811c
parent 4 3b1da2848fc7
equal deleted inserted replaced
13:cc75c76972ee 14:c0432d11811c
   105 
   105 
   106     void getMultiple_data();
   106     void getMultiple_data();
   107     void getMultiple();
   107     void getMultiple();
   108     void getMultipleWithPipeliningAndMultiplePriorities();
   108     void getMultipleWithPipeliningAndMultiplePriorities();
   109     void getMultipleWithPriorities();
   109     void getMultipleWithPriorities();
       
   110 
       
   111     void getEmptyWithPipelining();
   110 };
   112 };
   111 
   113 
   112 tst_QHttpNetworkConnection::tst_QHttpNetworkConnection()
   114 tst_QHttpNetworkConnection::tst_QHttpNetworkConnection()
   113 {
   115 {
   114     Q_SET_DEFAULT_IAP
   116     Q_SET_DEFAULT_IAP
   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"