aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmltest
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2022-10-26 09:42:51 -0700
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2022-11-14 04:48:13 +0100
commit0dbb801920ea04d99834f7e89e02241f12bd54f8 (patch)
tree5c1b0ef8d64c06105178d502d80194a4638dbf85 /src/qmltest
parentbf87630c4d09228a2c5e6cc08b16314bc307f274 (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.cpp28
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();