diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2014-12-11 17:50:01 -0800 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2014-12-20 07:37:17 +0100 |
commit | d55db285fc4ae0a978591213c294f53ab879cd40 (patch) | |
tree | 5cb6a91c8a219284035851ecaaaf0243cb1a9ea3 /tests/auto/dbus/qdbusabstractadaptor | |
parent | 36314ae75f2f13b6c93252dc2c93592bc0624296 (diff) |
Autotest: Fix a race condition in launching the QtDBus sub-processes
Wait for the subprocess to print "ready" before assuming that it is
ready to receive calls. waitForStarted() will return as soon as the
child is running, but it may not have registered on D-Bus yet.
This also solves the synchronization problem more elegantly than how
tst_qdbusmarshall.cpp was trying to do it.
Change-Id: I548dfba2677cc5a34ba50f4310c4d5baa98093b2
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'tests/auto/dbus/qdbusabstractadaptor')
-rw-r--r-- | tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp | 1 | ||||
-rw-r--r-- | tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp index b4a79fa754..c680d93dab 100644 --- a/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp +++ b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp @@ -163,6 +163,7 @@ int main(int argc, char *argv[]) con.registerObject(objectPath, &server, QDBusConnection::ExportAllSlots); printf("ready.\n"); + fflush(stdout); return app.exec(); } diff --git a/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp index 2fdba4f7e1..971c939aad 100644 --- a/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp +++ b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp @@ -498,6 +498,7 @@ void tst_QDBusAbstractAdaptor::initTestCase() #endif proc.start(QFINDTESTDATA("qmyserver/qmyserver" EXE)); QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString())); + QVERIFY(proc.waitForReadyRead()); WaitForQMyServer w; QVERIFY(w.ok()); |