From 6ec8d1a7aa3757688ff56c476207c5a2abccca21 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Mon, 3 Jul 2017 09:08:49 +0200 Subject: [PATCH] AutoTest: Add optional verbosity for Qt tests Add options allowing verbose benchmarks and logging of signals and slots inside Qt tests. Beside this fixing a typo (recognition of results of type info) inside the plain text reader. Change-Id: Iaba7112c55bf30213584e56858d096c8f78307d0 Reviewed-by: David Schulz --- .../autotest/qtest/qttestconfiguration.cpp | 6 ++++++ .../autotest/qtest/qttestoutputreader.cpp | 2 +- src/plugins/autotest/qtest/qttestsettings.cpp | 6 ++++++ src/plugins/autotest/qtest/qttestsettings.h | 2 ++ .../autotest/qtest/qttestsettingspage.cpp | 4 ++++ .../autotest/qtest/qttestsettingspage.ui | 17 +++++++++++++++++ 6 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/plugins/autotest/qtest/qttestconfiguration.cpp b/src/plugins/autotest/qtest/qttestconfiguration.cpp index 2329bfe6bc5..0875ec18a63 100644 --- a/src/plugins/autotest/qtest/qttestconfiguration.cpp +++ b/src/plugins/autotest/qtest/qttestconfiguration.cpp @@ -67,6 +67,12 @@ QStringList QtTestConfiguration::argumentsForTestRunner() const if (!metricsOption.isEmpty()) arguments << metricsOption; + if (qtSettings->verboseBench) + arguments << "-vb"; + + if (qtSettings->logSignalsSlots) + arguments << "-vs"; + if (runMode() == DebuggableTestConfiguration::Debug) { if (qtSettings->noCrashHandler) arguments << "-nocrashhandler"; diff --git a/src/plugins/autotest/qtest/qttestoutputreader.cpp b/src/plugins/autotest/qtest/qttestoutputreader.cpp index aa86681a486..acf435fd88c 100644 --- a/src/plugins/autotest/qtest/qttestoutputreader.cpp +++ b/src/plugins/autotest/qtest/qttestoutputreader.cpp @@ -319,7 +319,7 @@ void QtTestOutputReader::processPlainTextOutput(const QByteArray &outputLine) static QRegExp finish("^[*]{9} Finished testing of (.*) [*]{9}$"); static QRegExp result("^(PASS |FAIL! |XFAIL |XPASS |SKIP |BPASS |BFAIL |RESULT " - "|INFO |QWARN |WARNING|QDEBUG ): (.*)$"); + "|INFO |QWARN |WARNING|QDEBUG ): (.*)$"); static QRegExp benchDetails("^\\s+([\\d,.]+ .* per iteration \\(total: [\\d,.]+, iterations: \\d+\\))$"); static QRegExp locationUnix("^ Loc: \\[(.*)\\]$"); diff --git a/src/plugins/autotest/qtest/qttestsettings.cpp b/src/plugins/autotest/qtest/qttestsettings.cpp index 1b672cd29dd..dba1be98e27 100644 --- a/src/plugins/autotest/qtest/qttestsettings.cpp +++ b/src/plugins/autotest/qtest/qttestsettings.cpp @@ -31,6 +31,8 @@ namespace Internal { static const char metricsKey[] = "Metrics"; static const char noCrashhandlerKey[] = "NoCrashhandlerOnDebug"; static const char useXMLOutputKey[] = "UseXMLOutput"; +static const char verboseBenchKey[] = "VerboseBench"; +static const char logSignalsSlotsKey[] = "LogSignalsSlots"; static MetricsType intToMetrics(int value) { @@ -60,6 +62,8 @@ void QtTestSettings::fromFrameworkSettings(const QSettings *s) metrics = intToMetrics(s->value(metricsKey, Walltime).toInt()); noCrashHandler = s->value(noCrashhandlerKey, true).toBool(); useXMLOutput = s->value(useXMLOutputKey, true).toBool(); + verboseBench = s->value(verboseBenchKey, false).toBool(); + logSignalsSlots = s->value(logSignalsSlotsKey, false).toBool(); } void QtTestSettings::toFrameworkSettings(QSettings *s) const @@ -67,6 +71,8 @@ void QtTestSettings::toFrameworkSettings(QSettings *s) const s->setValue(metricsKey, metrics); s->setValue(noCrashhandlerKey, noCrashHandler); s->setValue(useXMLOutputKey, useXMLOutput); + s->setValue(verboseBenchKey, verboseBench); + s->setValue(logSignalsSlotsKey, logSignalsSlots); } QString QtTestSettings::metricsTypeToOption(const MetricsType type) diff --git a/src/plugins/autotest/qtest/qttestsettings.h b/src/plugins/autotest/qtest/qttestsettings.h index 9418059243b..8f2c0954b9b 100644 --- a/src/plugins/autotest/qtest/qttestsettings.h +++ b/src/plugins/autotest/qtest/qttestsettings.h @@ -49,6 +49,8 @@ public: MetricsType metrics = Walltime; bool noCrashHandler = true; bool useXMLOutput = true; + bool verboseBench = false; + bool logSignalsSlots = false; protected: void fromFrameworkSettings(const QSettings *s) override; diff --git a/src/plugins/autotest/qtest/qttestsettingspage.cpp b/src/plugins/autotest/qtest/qttestsettingspage.cpp index 8258440ec4e..8aa4c6cc133 100644 --- a/src/plugins/autotest/qtest/qttestsettingspage.cpp +++ b/src/plugins/autotest/qtest/qttestsettingspage.cpp @@ -47,6 +47,8 @@ void QtTestSettingsWidget::setSettings(const QtTestSettings &settings) { m_ui.disableCrashhandlerCB->setChecked(settings.noCrashHandler); m_ui.useXMLOutputCB->setChecked(settings.useXMLOutput); + m_ui.verboseBenchmarksCB->setChecked(settings.verboseBench); + m_ui.logSignalsAndSlotsCB->setChecked(settings.logSignalsSlots); switch (settings.metrics) { case MetricsType::Walltime: m_ui.walltimeRB->setChecked(true); @@ -74,6 +76,8 @@ QtTestSettings QtTestSettingsWidget::settings() const result.noCrashHandler = m_ui.disableCrashhandlerCB->isChecked(); result.useXMLOutput = m_ui.useXMLOutputCB->isChecked(); + result.verboseBench = m_ui.verboseBenchmarksCB->isChecked(); + result.logSignalsSlots = m_ui.logSignalsAndSlotsCB->isChecked(); if (m_ui.walltimeRB->isChecked()) result.metrics = MetricsType::Walltime; else if (m_ui.tickcounterRB->isChecked()) diff --git a/src/plugins/autotest/qtest/qttestsettingspage.ui b/src/plugins/autotest/qtest/qttestsettingspage.ui index 38837afee87..4991107a022 100644 --- a/src/plugins/autotest/qtest/qttestsettingspage.ui +++ b/src/plugins/autotest/qtest/qttestsettingspage.ui @@ -46,6 +46,23 @@ Warning: Plain text output is missing some information (e.g. duration) + + + + Verbose benchmarks + + + + + + + Log every signal emission and resulting slot invocations. + + + Log signals and slots + + +