blob: 01d9ca4d9a0e7cf53985136047ad03a082156323 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
#include <QtTest>
#include <QString>
#include "dummyresource/resourcefactory.h"
#include "clientapi.h"
#include "commands.h"
#include "entitybuffer.h"
static void removeFromDisk(const QString &name)
{
Akonadi2::Storage store(Akonadi2::Store::storageLocation(), name, Akonadi2::Storage::ReadWrite);
store.removeFromDisk();
}
class DummyResourceBenchmark : public QObject
{
Q_OBJECT
private Q_SLOTS:
void initTestCase()
{
auto factory = Akonadi2::ResourceFactory::load("org.kde.dummy");
QVERIFY(factory);
removeFromDisk("org.kde.dummy");
removeFromDisk("org.kde.dummy.userqueue");
removeFromDisk("org.kde.dummy.synchronizerqueue");
removeFromDisk("org.kde.dummy.index.uid");
}
void cleanup()
{
removeFromDisk("org.kde.dummy");
removeFromDisk("org.kde.dummy.userqueue");
removeFromDisk("org.kde.dummy.synchronizerqueue");
removeFromDisk("org.kde.dummy.index.uid");
}
void testWriteToFacadeAndQueryByUid()
{
QTime time;
time.start();
int num = 10000;
for (int i = 0; i < num; i++) {
Akonadi2::Domain::Event event;
event.setProperty("uid", "testuid");
QCOMPARE(event.getProperty("uid").toByteArray(), QByteArray("testuid"));
event.setProperty("summary", "summaryValue");
Akonadi2::Store::create<Akonadi2::Domain::Event>(event, "org.kde.dummy");
}
auto appendTime = time.elapsed();
//Ensure everything is processed
{
Akonadi2::Query query;
query.resources << "org.kde.dummy";
query.syncOnDemand = false;
query.processAll = true;
query.propertyFilter.insert("uid", "nonexistantuid");
async::SyncListResult<Akonadi2::Domain::Event::Ptr> result(Akonadi2::Store::load<Akonadi2::Domain::Event>(query));
result.exec();
}
auto allProcessedTime = time.elapsed();
//Measure query
{
time.start();
Akonadi2::Query query;
query.resources << "org.kde.dummy";
query.syncOnDemand = false;
query.processAll = false;
query.propertyFilter.insert("uid", "testuid");
async::SyncListResult<Akonadi2::Domain::Event::Ptr> result(Akonadi2::Store::load<Akonadi2::Domain::Event>(query));
result.exec();
QCOMPARE(result.size(), num);
}
qDebug() << "Append to messagequeue " << appendTime;
qDebug() << "All processed: " << allProcessedTime << "/sec " << num*1000/allProcessedTime;
qDebug() << "Query Time: " << time.elapsed() << "/sec " << num*1000/time.elapsed();
}
};
QTEST_MAIN(DummyResourceBenchmark)
#include "dummyresourcebenchmark.moc"
|