diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2015-02-10 09:32:16 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2015-02-10 09:42:25 +0100 |
commit | fc35f714340d5361231506dfbead132122f59460 (patch) | |
tree | fd80498d9417c87b386a011f5849f1e4e48ad3fa /tests/auto/network | |
parent | 6389160f04322449c34bd1ecfe53983e3b588943 (diff) | |
parent | 0d990b9ca117514fe83f53b39f25d6272304f2fb (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')
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()); |