Warning, file /utilities/telly-skout/benchmarks/databasebenchmark.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 // SPDX-FileCopyrightText: 2023 Plata Hill <plata.hill@kdemail.net> 0002 // SPDX-License-Identifier: LGPL-2.1-or-later 0003 0004 #include "../src/database.h" 0005 0006 #include <QStandardPaths> 0007 #include <QTest> 0008 0009 class DatabaseBenchmark : public QObject 0010 { 0011 Q_OBJECT 0012 private Q_SLOTS: 0013 void initTestCase() 0014 { 0015 QStandardPaths::setTestModeEnabled(true); 0016 0017 Database::instance().execute(QStringLiteral("DELETE FROM \"Groups\";")); 0018 QCOMPARE(Database::instance().groupCount(), 0); 0019 Database::instance().execute(QStringLiteral("DELETE FROM Channels;")); 0020 QCOMPARE(Database::instance().channelCount(), 0); 0021 Database::instance().execute(QStringLiteral("DELETE FROM GroupChannels;")); 0022 Database::instance().execute(QStringLiteral("DELETE FROM Programs;")); 0023 Database::instance().execute(QStringLiteral("DELETE FROM ProgramCategories;")); 0024 Database::instance().execute(QStringLiteral("DELETE FROM Favorites;")); 0025 QCOMPARE(Database::instance().favoriteCount(), 0); 0026 } 0027 0028 void testAddGroups() 0029 { 0030 QVector<GroupData> groups; 0031 0032 for (int i = 0; i < 10000; ++i) { 0033 GroupData data; 0034 data.m_id = GroupId("Group" + QString::number(i)); 0035 data.m_name = "Group"; 0036 data.m_url = "GroupUrl"; 0037 groups.push_back(data); 0038 } 0039 0040 QBENCHMARK { 0041 Database::instance().addGroups(groups); 0042 } 0043 0044 QCOMPARE(Database::instance().groupCount(), 10000); 0045 } 0046 0047 void testGroups() 0048 { 0049 QBENCHMARK { 0050 const QVector<GroupData> groups = Database::instance().groups(); 0051 QCOMPARE(groups.size(), 10000); 0052 } 0053 } 0054 0055 void testAddChannels() 0056 { 0057 QList<ChannelData> channels; 0058 0059 for (int i = 0; i < 10000; ++i) { 0060 ChannelData data; 0061 data.m_id = ChannelId("Channel" + QString::number(i)); 0062 data.m_name = "Channel"; 0063 data.m_url = "ChannelUrl"; 0064 data.m_image = "ChannelImage"; 0065 channels.push_back(data); 0066 } 0067 0068 QBENCHMARK { 0069 Database::instance().addChannels(channels, GroupId("Group1")); 0070 } 0071 0072 QCOMPARE(Database::instance().channelCount(), 10000); 0073 } 0074 0075 void testGroupsForChannel() 0076 { 0077 QBENCHMARK { 0078 const QVector<GroupData> groups = Database::instance().groups(ChannelId("Channel1")); 0079 QCOMPARE(groups.size(), 1); 0080 } 0081 } 0082 0083 void testAddFavorite() 0084 { 0085 QBENCHMARK { 0086 for (int i = 0; i < 100; ++i) { 0087 Database::instance().addFavorite(ChannelId("Channel" + QString::number(i))); 0088 } 0089 } 0090 } 0091 0092 void testFavorites() 0093 { 0094 QBENCHMARK { 0095 const QVector<ChannelId> favorites = Database::instance().favorites(); 0096 QCOMPARE(favorites.size(), 100); 0097 } 0098 } 0099 0100 void testChannelsOnlyFavorites() 0101 { 0102 QBENCHMARK { 0103 const QVector<ChannelData> channels = Database::instance().channels(true); 0104 QCOMPARE(channels.size(), 100); 0105 } 0106 } 0107 0108 void testSortFavorites() 0109 { 0110 QVector<ChannelId> favorites; 0111 for (int i = 99; i >= 0; --i) { 0112 favorites.push_back(ChannelId("Channel" + QString::number(i))); 0113 } 0114 0115 QBENCHMARK { 0116 Database::instance().sortFavorites(favorites); 0117 } 0118 } 0119 0120 void testRemoveFavorite() 0121 { 0122 QBENCHMARK { 0123 Database::instance().removeFavorite(ChannelId("Channel50")); 0124 } 0125 QCOMPARE(Database::instance().favoriteCount(), 99); 0126 } 0127 0128 void testAddPrograms() 0129 { 0130 QVector<ProgramData> programs; 0131 0132 for (int i = 0; i < 10000; ++i) { 0133 ProgramData data; 0134 data.m_id = ProgramId("Program" + QString::number(i)); 0135 data.m_url = "ProgramUrl"; 0136 data.m_channelId = ChannelId("Channel1"); 0137 data.m_startTime = QDateTime::fromString("2022-12-28T01:00:00", Qt::ISODate).addSecs(i); 0138 data.m_stopTime = QDateTime::fromString("2022-12-28T02:00:00", Qt::ISODate).addSecs(i); 0139 data.m_title = "ProgramTitle"; 0140 data.m_subtitle = "ProgramSubtitle"; 0141 data.m_description = "ProgramDescription"; 0142 data.m_descriptionFetched = true; 0143 data.m_categories = {"Category1"}; 0144 programs.push_back(data); 0145 } 0146 0147 QBENCHMARK { 0148 Database::instance().addPrograms(programs); 0149 } 0150 0151 QCOMPARE(Database::instance().programCount(ChannelId("Channel1")), 10000); 0152 } 0153 0154 void testPrograms() 0155 { 0156 QBENCHMARK { 0157 const QMap<ChannelId, QVector<ProgramData>> programs = Database::instance().programs(); 0158 QCOMPARE(programs.size(), 1); 0159 QCOMPARE(programs[ChannelId("Channel1")].size(), 10000); 0160 } 0161 } 0162 }; 0163 0164 QTEST_GUILESS_MAIN(DatabaseBenchmark) 0165 0166 #include "databasebenchmark.moc"