diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2022-10-26 09:42:51 -0700 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-11-14 04:48:13 +0100 |
commit | 0dbb801920ea04d99834f7e89e02241f12bd54f8 (patch) | |
tree | 5c1b0ef8d64c06105178d502d80194a4638dbf85 /src/qmltest | |
parent | bf87630c4d09228a2c5e6cc08b16314bc307f274 (diff) |
QuickTest: adapt to QtTest change for multiple results in a measurer
Change-Id: I07ec23f3cb174fb197c3fffd1721ac1ba2cde53f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/qmltest')
-rw-r--r-- | src/qmltest/quicktestresult.cpp | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/src/qmltest/quicktestresult.cpp b/src/qmltest/quicktestresult.cpp index 98ba0d41e7..e248625e01 100644 --- a/src/qmltest/quicktestresult.cpp +++ b/src/qmltest/quicktestresult.cpp @@ -162,7 +162,7 @@ public: QTest::QBenchmarkIterationController *benchmarkIter; QBenchmarkTestMethodData *benchmarkData; int iterCount; - QList<QBenchmarkResult> results; + QList<QList<QBenchmarkResult>> resultsList; }; QByteArray QuickTestResultPrivate::intern(const QString &str) @@ -651,7 +651,7 @@ void QuickTestResult::startMeasurement() d->benchmarkData = new QBenchmarkTestMethodData(); QBenchmarkTestMethodData::current = d->benchmarkData; d->iterCount = (QBenchmarkGlobalData::current->measurer->needsWarmupIteration()) ? -1 : 0; - d->results.clear(); + d->resultsList.clear(); } void QuickTestResult::beginDataRun() @@ -663,14 +663,17 @@ void QuickTestResult::endDataRun() { Q_D(QuickTestResult); QBenchmarkTestMethodData::current->endDataRun(); + const QList<QBenchmarkResult> &results = QBenchmarkTestMethodData::current->results; + if (results.isEmpty()) + return; // shouldn't happen if (d->iterCount > -1) // iteration -1 is the warmup iteration. - d->results.append(QBenchmarkTestMethodData::current->result); + d->resultsList.append(results); if (QBenchmarkGlobalData::current->verboseOutput) { if (d->iterCount == -1) { - qDebug() << "warmup stage result :" << QBenchmarkTestMethodData::current->result.value; + qDebug() << "warmup stage result :" << results.first().measurement.value; } else { - qDebug() << "accumulation stage result:" << QBenchmarkTestMethodData::current->result.value; + qDebug() << "accumulation stage result:" << results.first().measurement.value; } } } @@ -680,17 +683,20 @@ bool QuickTestResult::measurementAccepted() return QBenchmarkTestMethodData::current->resultsAccepted(); } -static QBenchmarkResult qMedian(const QList<QBenchmarkResult> &container) +static QList<QBenchmarkResult> qMedian(const QList<QList<QBenchmarkResult>> &container) { const int count = container.size(); if (count == 0) - return QBenchmarkResult(); + return {}; if (count == 1) return container.at(0); - QList<QBenchmarkResult> containerCopy = container; - std::sort(containerCopy.begin(), containerCopy.end()); + QList<QList<QBenchmarkResult>> containerCopy = container; + std::sort(containerCopy.begin(), containerCopy.end(), + [](const QList<QBenchmarkResult> &a, const QList<QBenchmarkResult> &b) { + return a.first() < b.first(); + }); const int middle = count / 2; @@ -705,13 +711,13 @@ bool QuickTestResult::needsMoreMeasurements() if (d->iterCount < QBenchmarkGlobalData::current->adjustMedianIterationCount()) return true; if (QBenchmarkTestMethodData::current->resultsAccepted()) - QTestLog::addBenchmarkResult(qMedian(d->results)); + QTestLog::addBenchmarkResults(qMedian(d->resultsList)); return false; } void QuickTestResult::startBenchmark(RunMode runMode, const QString &tag) { - QBenchmarkTestMethodData::current->result = QBenchmarkResult(); + QBenchmarkTestMethodData::current->results = {}; QBenchmarkTestMethodData::current->resultAccepted = false; QBenchmarkGlobalData::current->context.tag = tag; QBenchmarkGlobalData::current->context.slotName = functionName(); |