File indexing completed on 2024-04-28 03:56:49
0001 /* 0002 SPDX-FileCopyrightText: 2023 Alexander Lohnau <alexander.lohnau@gmx.de> 0003 SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 #include "runnermanager.h" 0006 #include <QCommandLineParser> 0007 #include <QCoreApplication> 0008 #include <QTimer> 0009 0010 #include <iostream> 0011 0012 static void runQuery(const QString &runnerId, const QString &query, int iterations) 0013 { 0014 QEventLoop loop; 0015 KRunner::RunnerManager manager; 0016 manager.setAllowedRunners({runnerId}); 0017 manager.launchQuery("test"); 0018 qWarning() << "Following runners are loaded" << manager.runners(); 0019 QObject::connect(&manager, &KRunner::RunnerManager::queryFinished, &loop, &QEventLoop::quit); 0020 for (int i = 0; i < iterations; ++i) { 0021 // Setup of match session is done for first query automatically 0022 for (int j = 1; j <= query.size(); ++j) { 0023 manager.launchQuery(query.mid(0, j)); 0024 loop.exec(); 0025 } 0026 manager.matchSessionComplete(); 0027 } 0028 } 0029 0030 int main(int argv, char **argc) 0031 { 0032 QCoreApplication app(argv, argc); 0033 QCommandLineOption iterationsOption("iterations", "Number of iterations where the query will be run", "iterations"); 0034 0035 QCommandLineParser parser; 0036 parser.addOption(iterationsOption); 0037 parser.addPositionalArgument("runner", "The runnerId you want to load"); 0038 parser.addPositionalArgument("query", "The query to run, each letter is launched as it's own query"); 0039 parser.process(app); 0040 0041 const QStringList positionalArguments = parser.positionalArguments(); 0042 if (positionalArguments.size() != 2) { 0043 qWarning() << "The runnerId and query must be specified as the only positional arguments"; 0044 exit(1); 0045 } 0046 const QString runner = positionalArguments.at(0); 0047 const QString query = positionalArguments.at(1); 0048 int iterations = parser.isSet(iterationsOption) ? parser.value(iterationsOption).toInt() : 1; 0049 if (iterations < 1) { 0050 qWarning() << "invalid iterations value set, it must be more than 1" << iterations; 0051 } 0052 0053 QTimer::singleShot(0, &app, [&app, runner, query, iterations]() { 0054 runQuery(runner, query, iterations); 0055 QTimer::singleShot(10, &app, &QCoreApplication::quit); 0056 std::cout << "Finished running queries" << std::endl; 0057 }); 0058 0059 return app.exec(); 0060 }