summaryrefslogtreecommitdiffstats
path: root/tests/auto/qudpsocket
diff options
context:
space:
mode:
authorShane Kearns <shane.kearns@accenture.com>2011-03-08 18:01:54 +0000
committerShane Kearns <shane.kearns@accenture.com>2011-03-09 13:24:09 +0000
commit28100e436bb662756c2cb0be471785bcd2dbef83 (patch)
treeb45fe3fd382df56b0b0c459c44b7259ac465fbe6 /tests/auto/qudpsocket
parent0b0247e675e3e8054e41de41c716d8f915e18629 (diff)
tst_qudpsocket - add a non localhost test case
The echo test case uses the UDP echo service on the qt-test-server Reviewed-by: Markus Goetz
Diffstat (limited to 'tests/auto/qudpsocket')
-rw-r--r--tests/auto/qudpsocket/tst_qudpsocket.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/auto/qudpsocket/tst_qudpsocket.cpp b/tests/auto/qudpsocket/tst_qudpsocket.cpp
index 6ba55b2f6d..e6fe068ae8 100644
--- a/tests/auto/qudpsocket/tst_qudpsocket.cpp
+++ b/tests/auto/qudpsocket/tst_qudpsocket.cpp
@@ -108,6 +108,8 @@ private slots:
void setMulticastInterface();
void multicast_data();
void multicast();
+ void echo_data();
+ void echo();
protected slots:
void empty_readyReadSlot();
@@ -1095,5 +1097,55 @@ void tst_QUdpSocket::multicast()
QVERIFY2(receiver.leaveMulticastGroup(groupAddress), qPrintable(receiver.errorString()));
}
+void tst_QUdpSocket::echo_data()
+{
+ QTest::addColumn<bool>("connect");
+ QTest::newRow("writeDatagram") << false;
+ QTest::newRow("write") << true;
+}
+
+void tst_QUdpSocket::echo()
+{
+ QFETCH(bool, connect);
+ QHostInfo info = QHostInfo::fromName(QtNetworkSettings::serverName());
+ QVERIFY(info.addresses().count());
+ QHostAddress remote = info.addresses().first();
+
+ QUdpSocket sock;
+ if (connect) {
+ sock.connectToHost(remote, 7);
+ } else {
+ sock.bind();
+ }
+ QByteArray out(30, 'x');
+ QByteArray in;
+ int successes = 0;
+ for (int i=0;i<20;i++) {
+ if (connect) {
+ sock.write(out);
+ } else {
+ sock.writeDatagram(out, remote, 7);
+ }
+ if (sock.waitForReadyRead(1000)) {
+ while (sock.hasPendingDatagrams()) {
+ QHostAddress from;
+ quint16 port;
+ if (connect) {
+ in = sock.read(sock.pendingDatagramSize());
+ } else {
+ in.resize(sock.pendingDatagramSize());
+ sock.readDatagram(in.data(), in.length(), &from, &port);
+ }
+ if (in==out)
+ successes++;
+ }
+ }
+ if (!sock.isValid())
+ QFAIL(sock.errorString().toLatin1().constData());
+ qDebug() << "packets in" << successes << "out" << i;
+ }
+ QVERIFY(successes >= 18);
+}
+
QTEST_MAIN(tst_QUdpSocket)
#include "tst_qudpsocket.moc"