From 6d3558b4492027f54e6dab702c115a251eb9e9d0 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 1 Jan 2015 18:21:35 -0200 Subject: Autotest: Be nicer when asking the sub-processes to exit Instead of killing them outright (and note that terminate() doesn't work on Windows), ask them nicely to exit on their own. This way, if we run them in valgrind, valgrind gets a chance to print the leak check output and summary. Change-Id: Ib6cc8d4560ff0bf255f94980eb220e97592c00f0 Reviewed-by: Frederik Gladhorn --- tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp') diff --git a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp index 04992c9f28..9b2c25bdd5 100644 --- a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp +++ b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp @@ -297,8 +297,10 @@ void tst_QDBusInterface::initTestCase() void tst_QDBusInterface::cleanupTestCase() { + QDBusMessage msg = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "quit"); + QDBusConnection::sessionBus().call(msg); + proc.waitForFinished(200); proc.close(); - proc.kill(); } void tst_QDBusInterface::notConnected() -- cgit v1.2.3 From 9b869cfb01556ee361bd8f66b1a1f6bc40134cb7 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 1 Jan 2015 18:22:47 -0200 Subject: Autotest: Forward stderr of the sub-processes So we can get the output when running with QDBUS_DEBUG=1. Change-Id: I6a6b8e0d82727c522914fb90a7ce594c86307d8f Reviewed-by: Frederik Gladhorn --- tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp') diff --git a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp index 9b2c25bdd5..92a44292c3 100644 --- a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp +++ b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp @@ -271,6 +271,7 @@ void tst_QDBusInterface::initTestCase() #else # define EXE "" #endif + proc.setProcessChannelMode(QProcess::ForwardedErrorChannel); proc.start(QFINDTESTDATA("qmyserver/qmyserver" EXE)); QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString())); QVERIFY(proc.waitForReadyRead()); -- cgit v1.2.3 From aa83bacb14dac06eb7226c8c688f37eeecec15d4 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 1 Jan 2015 19:56:06 -0200 Subject: Autotest: fix a race condition in verifying a peer D-Bus connected On the unit test side, everything is sequential: we first ask for the connection, verify that it is connected, then ask the remote side via the session bus if it is connected. Unfortunately, the remote site may handle things in a different order: it may handle the incoming function call to "isConnected" before doing accept(2) on the listening socket. So, instead, make the local side block until the connection is received on the other side. On the remote, we don't block, instead we use the feature of delayed replies. Change-Id: Ie386938b8b39dd94a9d7e5913668125fb4a3c7da Reviewed-by: Alex Blasche --- tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp') diff --git a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp index 92a44292c3..fce5868980 100644 --- a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp +++ b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp @@ -290,10 +290,10 @@ void tst_QDBusInterface::initTestCase() QDBusConnection peercon = QDBusConnection::connectToPeer(address, "peer"); QVERIFY(peercon.isConnected()); - QDBusMessage req2 = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "isConnected"); + QDBusMessage req2 = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "waitForConnected"); QDBusMessage rpl2 = con.call(req2); QVERIFY(rpl2.type() == QDBusMessage::ReplyMessage); - QVERIFY(rpl2.arguments().at(0).toBool()); + QVERIFY2(rpl2.type() == QDBusMessage::ReplyMessage, rpl2.errorMessage().toLatin1()); } void tst_QDBusInterface::cleanupTestCase() -- cgit v1.2.3