From e19bad87f43caf602793d8297562804b17383f7d Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 17 Aug 2015 00:19:50 +0200 Subject: Transactions for messagequeue --- tests/messagequeuetest.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'tests') diff --git a/tests/messagequeuetest.cpp b/tests/messagequeuetest.cpp index d5c47f5..9c2aa16 100644 --- a/tests/messagequeuetest.cpp +++ b/tests/messagequeuetest.cpp @@ -6,6 +6,7 @@ #include "clientapi.h" #include "storage.h" #include "messagequeue.h" +#include "log.h" class MessageQueueTest : public QObject { @@ -13,6 +14,7 @@ class MessageQueueTest : public QObject private Q_SLOTS: void initTestCase() { + Akonadi2::Log::setDebugOutputLevel(Akonadi2::Log::Trace); Akonadi2::Storage store(Akonadi2::Store::storageLocation(), "org.kde.dummy.testqueue", Akonadi2::Storage::ReadWrite); store.removeFromDisk(); } @@ -50,6 +52,14 @@ private Q_SLOTS: QVERIFY(gotError); } + void testEnqueue() + { + MessageQueue queue(Akonadi2::Store::storageLocation(), "org.kde.dummy.testqueue"); + QSignalSpy spy(&queue, SIGNAL(messageReady())); + queue.enqueue("value1"); + QCOMPARE(spy.size(), 1); + } + void testDrained() { MessageQueue queue(Akonadi2::Store::storageLocation(), "org.kde.dummy.testqueue"); @@ -152,6 +162,44 @@ private Q_SLOTS: QVERIFY(!gotError); } + void testBatchDequeue() + { + MessageQueue queue(Akonadi2::Store::storageLocation(), "org.kde.dummy.testqueue"); + queue.enqueue("value1"); + queue.enqueue("value2"); + queue.enqueue("value3"); + + int count = 0; + queue.dequeueBatch(2, [&count](const QByteArray &data) { + count++; + return KAsync::null(); + }).exec().waitForFinished(); + QCOMPARE(count, 2); + + queue.dequeueBatch(1, [&count](const QByteArray &data) { + count++; + return KAsync::null(); + }).exec().waitForFinished(); + QCOMPARE(count, 3); + } + + void testBatchEnqueue() + { + MessageQueue queue(Akonadi2::Store::storageLocation(), "org.kde.dummy.testqueue"); + QSignalSpy spy(&queue, SIGNAL(messageReady())); + queue.startTransaction(); + queue.enqueue("value1"); + queue.enqueue("value2"); + queue.enqueue("value3"); + + QVERIFY(queue.isEmpty()); + QCOMPARE(spy.count(), 0); + + queue.commit(); + + QVERIFY(!queue.isEmpty()); + QCOMPARE(spy.count(), 1); + } }; -- cgit v1.2.3