summaryrefslogtreecommitdiffstats
path: root/tests/auto/network
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2015-02-10 09:32:16 +0100
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2015-02-10 09:42:25 +0100
commitfc35f714340d5361231506dfbead132122f59460 (patch)
treefd80498d9417c87b386a011f5849f1e4e48ad3fa /tests/auto/network
parent6389160f04322449c34bd1ecfe53983e3b588943 (diff)
parent0d990b9ca117514fe83f53b39f25d6272304f2fb (diff)
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts: src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro src/gui/image/qimage_conversions.cpp src/gui/opengl/qopenglextensions_p.h src/gui/text/qtextengine.cpp src/network/ssl/qsslsocket_openssl.cpp src/plugins/platforms/eglfs/qeglfshooks_stub.cpp src/plugins/platforms/eglfs/qeglfsscreen.cpp src/plugins/platforms/eglfs/qeglfswindow.cpp src/plugins/platforms/windows/qwindowsfontdatabase.cpp src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp src/plugins/platforms/windows/qwindowsnativeinterface.cpp src/plugins/platforms/windows/qwindowsscreen.cpp src/plugins/platforms/windows/qwindowswindow.cpp src/plugins/platforms/windows/qwindowswindow.h src/plugins/platforms/xcb/qxcbdrag.h src/widgets/itemviews/qabstractitemview.cpp src/widgets/kernel/qwidget.cpp src/widgets/util/qsystemtrayicon_p.h tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp Thanks to Friedemann Kleint for resolving the qwindowsfontdatabase.cpp conflicts. Change-Id: I937232c30523d5121c195d947d92aec6f129b03e
Diffstat (limited to 'tests/auto/network')
-rw-r--r--tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp90
-rw-r--r--tests/auto/network/ssl/qsslcertificate/qsslcertificate.pro1
-rw-r--r--tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp8
3 files changed, 94 insertions, 5 deletions
diff --git a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
index db09ec4486..49a3a720c7 100644
--- a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
+++ b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2015 Intel Corporation.
** Contact: http://www.qt-project.org/legal
**
** This file is part of the test suite of the Qt Toolkit.
@@ -114,6 +115,8 @@ private slots:
void echo();
void linkLocalIPv6();
void linkLocalIPv4();
+ void readyRead();
+ void readyReadForEmptyDatagram();
protected slots:
void empty_readyReadSlot();
@@ -1515,5 +1518,92 @@ void tst_QUdpSocket::linkLocalIPv4()
qDeleteAll(sockets);
}
+void tst_QUdpSocket::readyRead()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ char buf[1];
+ QUdpSocket sender, receiver;
+#ifdef FORCE_SESSION
+ sender.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+ receiver.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+
+ QVERIFY(receiver.bind(QHostAddress(QHostAddress::AnyIPv4), 0));
+ quint16 port = receiver.localPort();
+ QVERIFY(port != 0);
+
+ QSignalSpy spy(&receiver, SIGNAL(readyRead()));
+
+ // send a datagram to that port
+ sender.writeDatagram("a", makeNonAny(receiver.localAddress()), port);
+
+ // wait a little
+ // if QTBUG-43857 is still going, we'll live-lock on socket notifications from receiver's socket
+ QTest::qWait(100);
+
+ // make sure only one signal was emitted
+ QCOMPARE(spy.count(), 1);
+ QVERIFY(receiver.hasPendingDatagrams());
+ QCOMPARE(receiver.bytesAvailable(), qint64(1));
+ QCOMPARE(receiver.pendingDatagramSize(), qint64(1));
+
+ // write another datagram
+ sender.writeDatagram("ab", makeNonAny(receiver.localAddress()), port);
+
+ // no new signal should be emitted because we haven't read the first datagram yet
+ QTest::qWait(100);
+ QCOMPARE(spy.count(), 1);
+ QVERIFY(receiver.hasPendingDatagrams());
+ QVERIFY(receiver.bytesAvailable() >= 1); // most likely is 1, but it could be 1 + 2 in the future
+ QCOMPARE(receiver.pendingDatagramSize(), qint64(1));
+
+ // read all the datagrams (we could read one only, but we can't be sure the OS is queueing)
+ while (receiver.hasPendingDatagrams())
+ receiver.readDatagram(buf, sizeof buf);
+
+ // write a new datagram and ensure the signal is emitted now
+ sender.writeDatagram("abc", makeNonAny(receiver.localAddress()), port);
+ QTest::qWait(100);
+ QCOMPARE(spy.count(), 2);
+ QVERIFY(receiver.hasPendingDatagrams());
+ QCOMPARE(receiver.bytesAvailable(), qint64(3));
+ QCOMPARE(receiver.pendingDatagramSize(), qint64(3));
+}
+
+void tst_QUdpSocket::readyReadForEmptyDatagram()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ QUdpSocket sender, receiver;
+#ifdef FORCE_SESSION
+ sender.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+ receiver.setProperty("_q_networksession", QVariant::fromValue(networkSession));
+#endif
+
+ QVERIFY(receiver.bind(QHostAddress(QHostAddress::AnyIPv4), 0));
+ quint16 port = receiver.localPort();
+ QVERIFY(port != 0);
+
+ connect(&receiver, SIGNAL(readyRead()), SLOT(empty_readyReadSlot()));
+
+ // send an empty datagram to that port
+ sender.writeDatagram("", makeNonAny(receiver.localAddress()), port);
+
+ // ensure that we got a readyRead, despite bytesAvailable() == 0
+ QTestEventLoop::instance().enterLoop(1);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ char buf[1];
+ QVERIFY(receiver.hasPendingDatagrams());
+ QCOMPARE(receiver.pendingDatagramSize(), qint64(0));
+ QCOMPARE(receiver.bytesAvailable(), qint64(0));
+ QCOMPARE(receiver.readDatagram(buf, sizeof buf), qint64(0));
+}
+
QTEST_MAIN(tst_QUdpSocket)
#include "tst_qudpsocket.moc"
diff --git a/tests/auto/network/ssl/qsslcertificate/qsslcertificate.pro b/tests/auto/network/ssl/qsslcertificate/qsslcertificate.pro
index 69cd241f84..f2d6589410 100644
--- a/tests/auto/network/ssl/qsslcertificate/qsslcertificate.pro
+++ b/tests/auto/network/ssl/qsslcertificate/qsslcertificate.pro
@@ -6,6 +6,5 @@ SOURCES += tst_qsslcertificate.cpp
QT = core network testlib
TARGET = tst_qsslcertificate
-DEFINES += SRCDIR=\\\"$$PWD/\\\"
TESTDATA += certificates/* more-certificates/* verify-certs/* pkcs12/*
diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
index 82050e73fd..a300187b95 100644
--- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
+++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
@@ -1301,7 +1301,7 @@ void tst_QSslCertificate::pkcs12()
return;
}
- QFile f(QLatin1String(SRCDIR "pkcs12/leaf.p12"));
+ QFile f(testDataDir + QLatin1String("/pkcs12/leaf.p12"));
bool ok = f.open(QIODevice::ReadOnly);
QVERIFY(ok);
@@ -1316,12 +1316,12 @@ void tst_QSslCertificate::pkcs12()
QVERIFY(ok);
f.close();
- QList<QSslCertificate> leafCert = QSslCertificate::fromPath(QLatin1String( SRCDIR "pkcs12/leaf.crt"));
+ QList<QSslCertificate> leafCert = QSslCertificate::fromPath(testDataDir + QLatin1String("/pkcs12/leaf.crt"));
QVERIFY(!leafCert.isEmpty());
QCOMPARE(cert, leafCert.first());
- QFile f2(QLatin1String(SRCDIR "pkcs12/leaf.key"));
+ QFile f2(testDataDir + QLatin1String("/pkcs12/leaf.key"));
ok = f2.open(QIODevice::ReadOnly);
QVERIFY(ok);
@@ -1331,7 +1331,7 @@ void tst_QSslCertificate::pkcs12()
QVERIFY(!leafKey.isNull());
QCOMPARE(key, leafKey);
- QList<QSslCertificate> caCert = QSslCertificate::fromPath(QLatin1String(SRCDIR "pkcs12/inter.crt"));
+ QList<QSslCertificate> caCert = QSslCertificate::fromPath(testDataDir + QLatin1String("/pkcs12/inter.crt"));
QVERIFY(!caCert.isEmpty());
QVERIFY(!caCerts.isEmpty());