tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
changeset 25 e24348a560a6
parent 23 89e065397ea6
equal deleted inserted replaced
23:89e065397ea6 25:e24348a560a6
   107     void getMultiple();
   107     void getMultiple();
   108     void getMultipleWithPipeliningAndMultiplePriorities();
   108     void getMultipleWithPipeliningAndMultiplePriorities();
   109     void getMultipleWithPriorities();
   109     void getMultipleWithPriorities();
   110 
   110 
   111     void getEmptyWithPipelining();
   111     void getEmptyWithPipelining();
       
   112 
       
   113     void getAndThenDeleteObject();
       
   114     void getAndThenDeleteObject_data();
   112 };
   115 };
   113 
   116 
   114 tst_QHttpNetworkConnection::tst_QHttpNetworkConnection()
   117 tst_QHttpNetworkConnection::tst_QHttpNetworkConnection()
   115 {
   118 {
   116     Q_SET_DEFAULT_IAP
   119     Q_SET_DEFAULT_IAP
  1031 
  1034 
  1032     qDeleteAll(requests);
  1035     qDeleteAll(requests);
  1033     qDeleteAll(replies);
  1036     qDeleteAll(replies);
  1034 }
  1037 }
  1035 
  1038 
       
  1039 void tst_QHttpNetworkConnection::getAndThenDeleteObject_data()
       
  1040 {
       
  1041     QTest::addColumn<bool>("replyFirst");
       
  1042 
       
  1043     QTest::newRow("delete-reply-first") << true;
       
  1044     QTest::newRow("delete-connection-first") << false;
       
  1045 }
       
  1046 
       
  1047 void tst_QHttpNetworkConnection::getAndThenDeleteObject()
       
  1048 {
       
  1049     // yes, this will leak if the testcase fails. I don't care. It must not fail then :P
       
  1050     QHttpNetworkConnection *connection = new QHttpNetworkConnection(QtNetworkSettings::serverName());
       
  1051     QHttpNetworkRequest request("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile");
       
  1052     QHttpNetworkReply *reply = connection->sendRequest(request);
       
  1053     reply->setDownstreamLimited(true);
       
  1054 
       
  1055     QTime stopWatch;
       
  1056     stopWatch.start();
       
  1057     forever {
       
  1058         QCoreApplication::instance()->processEvents();
       
  1059         if (reply->bytesAvailable())
       
  1060             break;
       
  1061         if (stopWatch.elapsed() >= 30000)
       
  1062             break;
       
  1063     }
       
  1064 
       
  1065     QVERIFY(reply->bytesAvailable());
       
  1066     QCOMPARE(reply->statusCode() ,200);
       
  1067     QVERIFY(!reply->isFinished()); // must not be finished
       
  1068 
       
  1069     QFETCH(bool, replyFirst);
       
  1070 
       
  1071     if (replyFirst) {
       
  1072         delete reply;
       
  1073         delete connection;
       
  1074     } else {
       
  1075         delete connection;
       
  1076         delete reply;
       
  1077     }
       
  1078 }
       
  1079 
  1036 
  1080 
  1037 
  1081 
  1038 QTEST_MAIN(tst_QHttpNetworkConnection)
  1082 QTEST_MAIN(tst_QHttpNetworkConnection)
  1039 #include "tst_qhttpnetworkconnection.moc"
  1083 #include "tst_qhttpnetworkconnection.moc"