File indexing completed on 2024-05-05 05:29:36
0001 /* 0002 SPDX-FileCopyrightText: 2009 George Kiagiadakis <gkiagia@users.sourceforge.net> 0003 SPDX-FileCopyrightText: 2021 Harald Sitter <sitter@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 #include "backtraceparsertest.h" 0008 #include <QMetaEnum> 0009 #include <QSharedPointer> 0010 0011 #define DATA_DIR QFINDTESTDATA("backtraceparsertest_data") 0012 0013 BacktraceParserTest::BacktraceParserTest(QObject *parent) 0014 : QObject(parent) 0015 , m_settings(DATA_DIR + QLatin1Char('/') + QStringLiteral("data.ini"), QSettings::IniFormat) 0016 , m_generator(new FakeBacktraceGenerator(this)) 0017 { 0018 } 0019 0020 void BacktraceParserTest::fetchData(const QString &group) 0021 { 0022 QTest::addColumn<QString>("filename"); 0023 QTest::addColumn<QString>("result"); 0024 QTest::addColumn<QString>("debugger"); 0025 QTest::addColumn<bool>("compositorCrash"); 0026 0027 m_settings.beginGroup(group); 0028 const QStringList keys = m_settings.allKeys(); 0029 m_settings.endGroup(); 0030 0031 for (const QString &key : keys) { 0032 QTest::newRow(qPrintable(key)) << QString(DATA_DIR + QLatin1Char('/') + key) << m_settings.value(group + QLatin1Char('/') + key).toString() 0033 << m_settings.value(QStringLiteral("debugger/") + key).toString() 0034 << m_settings.value(QStringLiteral("compositorCrash/") + key).toBool(); 0035 } 0036 } 0037 0038 void BacktraceParserTest::btParserUsefulnessTest_data() 0039 { 0040 fetchData(QStringLiteral("usefulness")); 0041 } 0042 0043 void BacktraceParserTest::btParserUsefulnessTest() 0044 { 0045 QFETCH(QString, filename); 0046 QFETCH(QString, result); 0047 QFETCH(QString, debugger); 0048 0049 // parse 0050 QSharedPointer<BacktraceParser> parser(BacktraceParser::newParser(debugger)); 0051 parser->connectToGenerator(m_generator); 0052 m_generator->sendData(filename); 0053 0054 // convert usefulness to string 0055 QMetaEnum metaUsefulness = BacktraceParser::staticMetaObject.enumerator(BacktraceParser::staticMetaObject.indexOfEnumerator("Usefulness")); 0056 QString btUsefulness = QString::fromLatin1(metaUsefulness.valueToKey(parser->backtraceUsefulness())); 0057 0058 // compare 0059 QEXPECT_FAIL("test_e", "Working on it", Continue); 0060 QCOMPARE(btUsefulness, result); 0061 } 0062 0063 void BacktraceParserTest::btParserBenchmark_data() 0064 { 0065 QTest::addColumn<QString>("filename"); 0066 QTest::addColumn<QString>("debugger"); 0067 0068 m_settings.beginGroup(QStringLiteral("debugger")); 0069 const QStringList keys = m_settings.allKeys(); 0070 for (const QString &key : keys) { 0071 QTest::newRow(qPrintable(key)) << QString(DATA_DIR + QLatin1Char('/') + key) << m_settings.value(key).toString(); 0072 } 0073 m_settings.endGroup(); 0074 } 0075 0076 void BacktraceParserTest::btParserBenchmark() 0077 { 0078 QFETCH(QString, filename); 0079 QFETCH(QString, debugger); 0080 0081 QSharedPointer<BacktraceParser> parser(BacktraceParser::newParser(debugger)); 0082 parser->connectToGenerator(m_generator); 0083 0084 QBENCHMARK_ONCE { 0085 m_generator->sendData(filename); 0086 } 0087 } 0088 0089 void BacktraceParserTest::btParserCompositorCrashTest_data() 0090 { 0091 fetchData(QStringLiteral("compositorCrash")); 0092 } 0093 0094 void BacktraceParserTest::btParserCompositorCrashTest() 0095 { 0096 QFETCH(QString, filename); 0097 QFETCH(QString, debugger); 0098 QFETCH(bool, compositorCrash); 0099 // parse 0100 QSharedPointer<BacktraceParser> parser(BacktraceParser::newParser(debugger)); 0101 parser->connectToGenerator(m_generator); 0102 m_generator->sendData(filename); 0103 0104 // compare 0105 QCOMPARE(parser->hasCompositorCrashed(), compositorCrash); 0106 } 0107 0108 QTEST_GUILESS_MAIN(BacktraceParserTest) 0109 0110 #include "moc_backtraceparsertest.cpp"