File indexing completed on 2024-05-12 04:39:14

0001 /*
0002     SPDX-FileCopyrightText: 2016 Milian Wolff <mail@milianw.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #include "bench_duchain.h"
0008 
0009 #include <QLoggingCategory>
0010 #include <QTest>
0011 
0012 #include <tests/autotestshell.h>
0013 #include <tests/testcore.h>
0014 #include <tests/testfile.h>
0015 #include <language/duchain/duchainlock.h>
0016 #include <language/duchain/duchain.h>
0017 
0018 using namespace KDevelop;
0019 
0020 BenchDUChain::BenchDUChain()
0021 {
0022 }
0023 
0024 BenchDUChain::~BenchDUChain()
0025 {
0026 }
0027 
0028 void BenchDUChain::initTestCase()
0029 {
0030     QLoggingCategory::setFilterRules(QStringLiteral("*.debug=false\ndefault.debug=true\nkdevelop.plugins.clang.debug=true\n"));
0031     QVERIFY(qputenv("KDEV_CLANG_DISPLAY_DIAGS", "1"));
0032 
0033     AutoTestShell::init({QStringLiteral("kdevclangsupport")});
0034     TestCore::initialize(Core::NoUi);
0035 }
0036 
0037 void BenchDUChain::cleanupTestCase()
0038 {
0039     TestCore::shutdown();
0040 }
0041 
0042 void BenchDUChain::benchDUChainBuilder()
0043 {
0044     QBENCHMARK_ONCE {
0045         TestFile file(
0046             "#include <vector>\n"
0047             "#include <map>\n"
0048             "#include <set>\n"
0049             "#include <algorithm>\n"
0050             "#include <functional>\n"
0051             "#include <limits>\n"
0052             "#include <bitset>\n"
0053             "#include <iostream>\n"
0054             "#include <string>\n"
0055             "#include <mutex>\n", QStringLiteral("cpp"));
0056         file.parse(TopDUContext::AllDeclarationsContextsAndUses);
0057         QVERIFY(file.waitForParsed(60000));
0058 
0059         DUChainReadLocker lock;
0060         auto top = file.topContext();
0061         QVERIFY(top);
0062     }
0063 }
0064 
0065 QTEST_MAIN(BenchDUChain)
0066 
0067 #include "moc_bench_duchain.cpp"