diff options
author | Shane Kearns <shane.kearns@accenture.com> | 2011-03-08 18:01:54 (GMT) |
---|---|---|
committer | Shane Kearns <shane.kearns@accenture.com> | 2011-03-09 13:24:09 (GMT) |
commit | 28100e436bb662756c2cb0be471785bcd2dbef83 (patch) | |
tree | b45fe3fd382df56b0b0c459c44b7259ac465fbe6 | |
parent | 0b0247e675e3e8054e41de41c716d8f915e18629 (diff) | |
download | Qt-28100e436bb662756c2cb0be471785bcd2dbef83.zip Qt-28100e436bb662756c2cb0be471785bcd2dbef83.tar.gz Qt-28100e436bb662756c2cb0be471785bcd2dbef83.tar.bz2 |
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
-rw-r--r-- | tests/auto/qudpsocket/tst_qudpsocket.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/auto/qudpsocket/tst_qudpsocket.cpp b/tests/auto/qudpsocket/tst_qudpsocket.cpp index 6ba55b2..e6fe068 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" |