From 4e6440acf8e09abbb2b2aa208f0241416154e090 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Wed, 4 May 2016 15:21:17 +0200 Subject: [PATCH] Improve reliability of callgrind benchmark results When running under callgrind, do not bother with the use of the watchdog. The constructor waits for the thread to start, which adds an overall run-time cost that depends on the OS scheduling. Change-Id: I162e2e311c43a6892ebc67dea39899e40babb61d Reviewed-by: Robin Burchell --- src/testlib/qtestcase.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index d674b0af7ab..fe680e19aa0 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -2548,8 +2548,13 @@ static void qInvokeTestMethods(QObject *testObject) invokeMethod(testObject, "initTestCase_data()"); QScopedPointer watchDog; - if (!debuggerPresent()) + if (!debuggerPresent() +#ifdef QTESTLIB_USE_VALGRIND + && QBenchmarkGlobalData::current->mode() != QBenchmarkGlobalData::CallgrindChildProcess +#endif + ) { watchDog.reset(new WatchDog); + } if (!QTestResult::skipCurrentTest() && !QTest::currentTestFailed()) { invokeMethod(testObject, "initTestCase()");