From 13af56e436f49df32d3b2f6f223cf1dec2eabaac Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 26 Nov 2015 14:29:46 +0100 Subject: Use the new model api in the benchmark and split tests up. This way it's possible to i.e. repeatedly only run the reading part. --- tests/dummyresourcebenchmark.cpp | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) (limited to 'tests') diff --git a/tests/dummyresourcebenchmark.cpp b/tests/dummyresourcebenchmark.cpp index 242ac76..609b8dc 100644 --- a/tests/dummyresourcebenchmark.cpp +++ b/tests/dummyresourcebenchmark.cpp @@ -10,6 +10,7 @@ #include "synclistresult.h" #include "pipeline.h" #include "log.h" +#include "resourceconfig.h" #include "event_generated.h" #include "entity_generated.h" @@ -24,18 +25,20 @@ class DummyResourceBenchmark : public QObject { Q_OBJECT +private: + int num; private Q_SLOTS: void initTestCase() { Akonadi2::Log::setDebugOutputLevel(Akonadi2::Log::Warning); auto factory = Akonadi2::ResourceFactory::load("org.kde.dummy"); QVERIFY(factory); - DummyResource::removeFromDisk("org.kde.dummy.instance1"); + ResourceConfig::addResource("org.kde.dummy.instance1", "org.kde.dummy"); + num = 5000; } void cleanup() { - DummyResource::removeFromDisk("org.kde.dummy.instance1"); } static KAsync::Job waitForCompletion(QList > &futures) @@ -68,11 +71,12 @@ private Q_SLOTS: }); } - void testWriteToFacadeAndQueryByUid() + void testWriteToFacade() { + DummyResource::removeFromDisk("org.kde.dummy.instance1"); + QTime time; time.start(); - int num = 100; QList > waitCondition; for (int i = 0; i < num; i++) { Akonadi2::ApplicationDomain::Event event("org.kde.dummy.instance1"); @@ -90,13 +94,17 @@ private Q_SLOTS: query.resources << "org.kde.dummy.instance1"; query.syncOnDemand = false; query.processAll = true; - - query.propertyFilter.insert("uid", "nonexistantuid"); - async::SyncListResult result(Akonadi2::Store::load(query)); - result.exec(); + Akonadi2::Store::synchronize(query).exec().waitForFinished(); } auto allProcessedTime = time.elapsed(); + qDebug() << "Append to messagequeue " << appendTime; + qDebug() << "All processed: " << allProcessedTime << "/sec " << num*1000/allProcessedTime; + } + void testQueryByUid() + { + QTime time; + time.start(); //Measure query { time.start(); @@ -106,20 +114,18 @@ private Q_SLOTS: query.processAll = false; query.propertyFilter.insert("uid", "testuid"); - async::SyncListResult result(Akonadi2::Store::load(query)); - result.exec(); - QCOMPARE(result.size(), num); + auto model = Akonadi2::Store::loadModel(query); + model->fetchMore(QModelIndex()); + QTRY_COMPARE(model->rowCount(QModelIndex()), num); } - qDebug() << "Append to messagequeue " << appendTime; - qDebug() << "All processed: " << allProcessedTime << "/sec " << num*1000/allProcessedTime; qDebug() << "Query Time: " << time.elapsed() << "/sec " << num*1000/time.elapsed(); } void testWriteInProcess() { + DummyResource::removeFromDisk("org.kde.dummy.instance1"); QTime time; time.start(); - int num = 100; auto pipeline = QSharedPointer::create("org.kde.dummy.instance1"); DummyResource resource("org.kde.dummy.instance1", pipeline); @@ -191,6 +197,12 @@ private Q_SLOTS: Akonadi2::Commands::FinishCreateEntityBuffer(fbb, location); } } + + //This allows to run individual parts without doing a cleanup, but still cleaning up normally + void testCleanupForCompleteTest() + { + DummyResource::removeFromDisk("org.kde.dummy.instance1"); + } }; QTEST_MAIN(DummyResourceBenchmark) -- cgit v1.2.3