From de00275898e5cf5f9bbc829f7e4059b7afa02e2a Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 27 Jan 2015 23:48:46 +0100 Subject: DummyResourceBenchmark --- tests/CMakeLists.txt | 2 + tests/dummyresourcebenchmark.cpp | 85 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 tests/dummyresourcebenchmark.cpp (limited to 'tests') diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7ef4113..8257c8a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -20,7 +20,9 @@ manual_tests ( domainadaptortest messagequeuetest indextest + dummyresourcebenchmark ) target_link_libraries(dummyresourcetest akonadi2_resource_dummy) +target_link_libraries(dummyresourcebenchmark akonadi2_resource_dummy) diff --git a/tests/dummyresourcebenchmark.cpp b/tests/dummyresourcebenchmark.cpp new file mode 100644 index 0000000..01d9ca4 --- /dev/null +++ b/tests/dummyresourcebenchmark.cpp @@ -0,0 +1,85 @@ +#include + +#include + +#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(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 result(Akonadi2::Store::load(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 result(Akonadi2::Store::load(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" -- cgit v1.2.3