tests/auto/qhostinfo/tst_qhostinfo.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
--- a/tests/auto/qhostinfo/tst_qhostinfo.cpp	Tue Jan 26 12:42:25 2010 +0200
+++ b/tests/auto/qhostinfo/tst_qhostinfo.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -88,6 +88,7 @@
 #endif
 
 #include "../network-settings.h"
+#include "../../shared/util.h"
 
 //TESTED_CLASS=
 //TESTED_FILES=
@@ -124,6 +125,9 @@
     void raceCondition();
     void threadSafety();
 
+    void multipleSameLookups();
+    void multipleDifferentLookups();
+
 protected slots:
     void resultsReady(const QHostInfo &);
 
@@ -131,6 +135,7 @@
     bool ipv6LookupsAvailable;
     bool ipv6Available;
     bool lookupDone;
+    int lookupsDoneCounter;
     QHostInfo lookupResults;
 };
 
@@ -411,11 +416,53 @@
     }
 }
 
+// this test is for the multi-threaded QHostInfo rewrite. It is about getting results at all,
+// not about getting correct IPs
+void tst_QHostInfo::multipleSameLookups()
+{
+    const int COUNT = 10;
+    lookupsDoneCounter = 0;
+
+    for (int i = 0; i < COUNT; i++)
+        QHostInfo::lookupHost("localhost", this, SLOT(resultsReady(const QHostInfo)));
+
+    QTRY_VERIFY(lookupsDoneCounter == COUNT);
+
+    // spin two seconds more to see if it is not more :)
+    QTestEventLoop::instance().enterLoop(2);
+    QTRY_VERIFY(lookupsDoneCounter == COUNT);
+}
+
+// this test is for the multi-threaded QHostInfo rewrite. It is about getting results at all,
+// not about getting correct IPs
+void tst_QHostInfo::multipleDifferentLookups()
+{
+    QStringList hostnameList;
+    hostnameList << "www.ovi.com" << "www.nokia.com" << "qt.nokia.com" << "www.trolltech.com" << "troll.no"
+            << "www.qtcentre.org" << "forum.nokia.com" << "www.forum.nokia.com" << "wiki.forum.nokia.com"
+            << "www.nokia.no" << "nokia.de" << "127.0.0.1" << "----";
+
+    const int COUNT = hostnameList.size();
+    lookupsDoneCounter = 0;
+
+    for (int i = 0; i < hostnameList.size(); i++)
+        QHostInfo::lookupHost(hostnameList.at(i), this, SLOT(resultsReady(const QHostInfo)));
+
+    // give some time
+    QTestEventLoop::instance().enterLoop(5);
+    // try_verify gives some more time
+    QTRY_VERIFY(lookupsDoneCounter == COUNT);
+
+    // spin two seconds more to see if it is not more than expected
+    QTestEventLoop::instance().enterLoop(2);
+    QTRY_VERIFY(lookupsDoneCounter == COUNT);
+}
+
 void tst_QHostInfo::resultsReady(const QHostInfo &hi)
 {
     lookupDone = true;
     lookupResults = hi;
-
+    lookupsDoneCounter++;
     QTestEventLoop::instance().exitLoop();
 }