summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/dbus
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2014-12-11 17:50:01 -0800
committerThiago Macieira <thiago.macieira@intel.com>2014-12-20 07:37:17 +0100
commitd55db285fc4ae0a978591213c294f53ab879cd40 (patch)
tree5cb6a91c8a219284035851ecaaaf0243cb1a9ea3 /tests/benchmarks/dbus
parent36314ae75f2f13b6c93252dc2c93592bc0624296 (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/benchmarks/dbus')
-rw-r--r--tests/benchmarks/dbus/qdbusperformance/server/server.cpp1
-rw-r--r--tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp1
2 files changed, 2 insertions, 0 deletions
diff --git a/tests/benchmarks/dbus/qdbusperformance/server/server.cpp b/tests/benchmarks/dbus/qdbusperformance/server/server.cpp
index 12ae6ec6fb..6ee13b5c71 100644
--- a/tests/benchmarks/dbus/qdbusperformance/server/server.cpp
+++ b/tests/benchmarks/dbus/qdbusperformance/server/server.cpp
@@ -51,6 +51,7 @@ int main(int argc, char *argv[])
ServerObject obj(objectPath, con);
printf("ready.\n");
+ fflush(stdout);
return app.exec();
}
diff --git a/tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp b/tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp
index eff69fe24d..4bc3c94cd0 100644
--- a/tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp
+++ b/tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp
@@ -86,6 +86,7 @@ void tst_QDBusPerformance::initTestCase()
#endif
proc.start(QFINDTESTDATA("server/server" EXE));
QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString()));
+ QVERIFY(proc.waitForReadyRead());
QTestEventLoop::instance().enterLoop(5);
QVERIFY(con.interface()->isServiceRegistered(serviceName));