Fix the (currently unbuilt) qdir/tree/ benchmark

It tried to find its test-data-directory locally, instead of asking
FileSystem where it was keeping its files, relative to a temporary
directory. Its expected counts didn't match the arcane results of its
data file; since this is a benchmark, not a regression test, I'm
assuming that's just because it was never right or the rules for
QDirIterator's filtering have changed.

Tidied up somewhat in the process.

Change-Id: Ib2dcd314b11cb0f1a6fc425633afd0e9c39bd036
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
This commit is contained in:
Edward Welbourne 2021-08-18 16:44:07 +02:00
parent d267060189
commit eec25c7807

View File

@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2016 The Qt Company Ltd. ** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/ ** Contact: https://www.qt.io/licensing/
** **
** This file is part of the test suite module of the Qt Toolkit. ** This file is part of the test suite module of the Qt Toolkit.
@ -42,7 +42,7 @@ class bench_QDir_tree
public: public:
bench_QDir_tree() bench_QDir_tree()
: prefix("./test-tree/"), : prefix("test-tree/"),
musicprefix(QLatin1String("music")), musicprefix(QLatin1String("music")),
photoprefix(QLatin1String("photos")), photoprefix(QLatin1String("photos")),
sourceprefix(QLatin1String("source")), sourceprefix(QLatin1String("source")),
@ -60,6 +60,7 @@ private:
qint64 musicsize; qint64 musicsize;
qint64 photosize; qint64 photosize;
qint64 sourcesize; qint64 sourcesize;
FileSystem fs; // Uses QTemporaryDir to tidy away file tree created.
private slots: private slots:
void initTestCase() void initTestCase()
@ -71,7 +72,7 @@ private slots:
QStack<QByteArray> stack; QStack<QByteArray> stack;
QByteArray line; QByteArray line;
Q_FOREVER { while (true) {
char ch; char ch;
if (!list.getChar(&ch)) if (!list.getChar(&ch))
break; break;
@ -89,12 +90,11 @@ private slots:
--pop; --pop;
} }
line = list.readLine(); line = list.readLine().trimmed();
line.chop(1);
stack.push(line); stack.push(line);
line = prefix; line = prefix;
Q_FOREACH(const QByteArray &pathElement, stack) for (const QByteArray &pathElement : qAsConst(stack))
line += pathElement; line += pathElement;
if (line.endsWith('/')) if (line.endsWith('/'))
@ -140,13 +140,11 @@ private slots:
QTest::addColumn<int>("filter"); QTest::addColumn<int>("filter");
QTest::addColumn<int>("entryCount"); QTest::addColumn<int>("entryCount");
QTest::newRow("*.cpp") << QStringList("*.cpp") QTest::newRow("*.cpp") << QStringList("*.cpp") << int(QDir::Files) << 3791;
<< int(QDir::Files) QTest::newRow("executables")
<< 3813; << QStringList("*")
QTest::newRow("executables") << QStringList("*")
<< int(QDir::Executable | QDir::Files | QDir::AllDirs | QDir::NoDotAndDotDot) << int(QDir::Executable | QDir::Files | QDir::AllDirs | QDir::NoDotAndDotDot)
<< 543; << 536;
} }
void fileSearch() const void fileSearch() const
@ -158,8 +156,9 @@ private slots:
int count = 0; int count = 0;
QBENCHMARK { QBENCHMARK {
// Recursive directory iteration // Recursive directory iteration
QDirIterator iterator(prefix, nameFilters, QDir::Filter(filter), QDirIterator iterator(fs.absoluteFilePath(prefix),
QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); nameFilters, QDir::Filter(filter),
QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
count = 0; count = 0;
while (iterator.hasNext()) { while (iterator.hasNext()) {
@ -177,7 +176,8 @@ private slots:
{ {
int count = 0; int count = 0;
QBENCHMARK { QBENCHMARK {
QDirIterator iterator(prefix, QDirIterator iterator(
fs.absoluteFilePath(prefix),
QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System, QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System,
QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
@ -187,10 +187,10 @@ private slots:
++count; ++count;
} }
QCOMPARE(count, 11963); QCOMPARE(count, 11906);
} }
QCOMPARE(count, 11963); QCOMPARE(count, 11906);
} }
void thousandFiles_data() const void thousandFiles_data() const
@ -209,7 +209,8 @@ private slots:
QBENCHMARK { QBENCHMARK {
qint64 totalsize = 0; qint64 totalsize = 0;
int count = 0; int count = 0;
QDirIterator iter(dirName, QDir::Files, QDirIterator::Subdirectories); QDirIterator iter(fs.absoluteFilePath(dirName),
QDir::Files, QDirIterator::Subdirectories);
while(iter.hasNext()) { while(iter.hasNext()) {
count++; count++;
totalsize += iter.nextFileInfo().size(); totalsize += iter.nextFileInfo().size();
@ -218,8 +219,6 @@ private slots:
QCOMPARE(totalsize, expectedSize); QCOMPARE(totalsize, expectedSize);
} }
} }
private:
FileSystem fs;
}; };
QTEST_MAIN(bench_QDir_tree) QTEST_MAIN(bench_QDir_tree)