summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/dummyresourcewritebenchmark.cpp42
-rw-r--r--tests/querytest.cpp90
2 files changed, 109 insertions, 23 deletions
diff --git a/tests/dummyresourcewritebenchmark.cpp b/tests/dummyresourcewritebenchmark.cpp
index 07f57f6..e0ec503 100644
--- a/tests/dummyresourcewritebenchmark.cpp
+++ b/tests/dummyresourcewritebenchmark.cpp
@@ -20,6 +20,7 @@
20#include "hawd/formatter.h" 20#include "hawd/formatter.h"
21 21
22#include "event_generated.h" 22#include "event_generated.h"
23#include "mail_generated.h"
23#include "entity_generated.h" 24#include "entity_generated.h"
24#include "metadata_generated.h" 25#include "metadata_generated.h"
25#include "createentity_generated.h" 26#include "createentity_generated.h"
@@ -27,38 +28,36 @@
27#include "getrssusage.h" 28#include "getrssusage.h"
28#include "utils.h" 29#include "utils.h"
29 30
31#include <KMime/Message>
32
30static QByteArray createEntityBuffer(size_t attachmentSize, int &bufferSize) 33static QByteArray createEntityBuffer(size_t attachmentSize, int &bufferSize)
31{ 34{
32 uint8_t rawData[attachmentSize];
33 flatbuffers::FlatBufferBuilder eventFbb; 35 flatbuffers::FlatBufferBuilder eventFbb;
34 eventFbb.Clear(); 36 eventFbb.Clear();
35 { 37 {
36 uint8_t *rawDataPtr = Q_NULLPTR;
37 auto data = eventFbb.CreateUninitializedVector<uint8_t>(attachmentSize, &rawDataPtr);
38 auto summary = eventFbb.CreateString("summary");
39 Sink::ApplicationDomain::Buffer::EventBuilder eventBuilder(eventFbb);
40 eventBuilder.add_summary(summary);
41 eventBuilder.add_attachment(data);
42 auto eventLocation = eventBuilder.Finish();
43 Sink::ApplicationDomain::Buffer::FinishEventBuffer(eventFbb, eventLocation);
44 memcpy((void *)rawDataPtr, rawData, attachmentSize);
45 }
46 38
47 flatbuffers::FlatBufferBuilder localFbb; 39 auto msg = KMime::Message::Ptr::create();
48 { 40 msg->subject()->from7BitString("Some subject");
49 auto uid = localFbb.CreateString("testuid"); 41 msg->setBody("This is the body now.");
50 auto localBuilder = Sink::ApplicationDomain::Buffer::EventBuilder(localFbb); 42 msg->assemble();
51 localBuilder.add_uid(uid); 43
52 auto location = localBuilder.Finish(); 44 const auto data = msg->encodedContent();
53 Sink::ApplicationDomain::Buffer::FinishEventBuffer(localFbb, location); 45
46 auto summary = eventFbb.CreateString("summary");
47 auto mimeMessage = eventFbb.CreateString(data.constData(), data.length());
48 Sink::ApplicationDomain::Buffer::MailBuilder eventBuilder(eventFbb);
49 eventBuilder.add_subject(summary);
50 eventBuilder.add_messageId(summary);
51 eventBuilder.add_mimeMessage(mimeMessage);
52 Sink::ApplicationDomain::Buffer::FinishMailBuffer(eventFbb, eventBuilder.Finish());
54 } 53 }
55 54
56 flatbuffers::FlatBufferBuilder entityFbb; 55 flatbuffers::FlatBufferBuilder entityFbb;
57 Sink::EntityBuffer::assembleEntityBuffer(entityFbb, 0, 0, eventFbb.GetBufferPointer(), eventFbb.GetSize(), localFbb.GetBufferPointer(), localFbb.GetSize()); 56 Sink::EntityBuffer::assembleEntityBuffer(entityFbb, 0, 0, 0, 0, eventFbb.GetBufferPointer(), eventFbb.GetSize());
58 bufferSize = entityFbb.GetSize(); 57 bufferSize = entityFbb.GetSize();
59 58
60 flatbuffers::FlatBufferBuilder fbb; 59 flatbuffers::FlatBufferBuilder fbb;
61 auto type = fbb.CreateString(Sink::ApplicationDomain::getTypeName<Sink::ApplicationDomain::Event>().toStdString().data()); 60 auto type = fbb.CreateString(Sink::ApplicationDomain::getTypeName<Sink::ApplicationDomain::Mail>().toStdString().data());
62 auto delta = fbb.CreateVector<uint8_t>(entityFbb.GetBufferPointer(), entityFbb.GetSize()); 61 auto delta = fbb.CreateVector<uint8_t>(entityFbb.GetBufferPointer(), entityFbb.GetSize());
63 Sink::Commands::CreateEntityBuilder builder(fbb); 62 Sink::Commands::CreateEntityBuilder builder(fbb);
64 builder.add_domainType(type); 63 builder.add_domainType(type);
@@ -263,10 +262,7 @@ private slots:
263 262
264 void runBenchmarks() 263 void runBenchmarks()
265 { 264 {
266 writeInProcess(1000, mTimeStamp);
267 writeInProcess(2000, mTimeStamp);
268 writeInProcess(5000, mTimeStamp); 265 writeInProcess(5000, mTimeStamp);
269 writeInProcess(20000, mTimeStamp);
270 } 266 }
271 267
272 void ensureUsedMemoryRemainsStable() 268 void ensureUsedMemoryRemainsStable()
diff --git a/tests/querytest.cpp b/tests/querytest.cpp
index 1584c48..ec6438d 100644
--- a/tests/querytest.cpp
+++ b/tests/querytest.cpp
@@ -14,6 +14,8 @@
14#include "testutils.h" 14#include "testutils.h"
15#include "applicationdomaintype.h" 15#include "applicationdomaintype.h"
16 16
17#include <KMime/Message>
18
17using namespace Sink; 19using namespace Sink;
18using namespace Sink::ApplicationDomain; 20using namespace Sink::ApplicationDomain;
19 21
@@ -1254,6 +1256,94 @@ private slots:
1254 VERIFYEXEC(Sink::Store::removeDataFromDisk(QByteArray("sink.dummy.instance1"))); 1256 VERIFYEXEC(Sink::Store::removeDataFromDisk(QByteArray("sink.dummy.instance1")));
1255 } 1257 }
1256 1258
1259 void testMailFulltextSubject()
1260 {
1261 // Setup
1262 {
1263 auto msg = KMime::Message::Ptr::create();
1264 msg->subject()->from7BitString("Subject To Search");
1265 msg->setBody("This is the searchable body.");
1266 msg->assemble();
1267 {
1268 Mail mail("sink.dummy.instance1");
1269 mail.setExtractedMessageId("test1");
1270 mail.setExtractedSubject("Subject To Search");
1271 mail.setFolder("folder1");
1272 mail.setMimeMessage(msg->encodedContent());
1273 VERIFYEXEC(Sink::Store::create<Mail>(mail));
1274 }
1275 {
1276 Mail mail("sink.dummy.instance1");
1277 mail.setExtractedMessageId("test2");
1278 mail.setFolder("folder2");
1279 mail.setExtractedSubject("Stuff");
1280 VERIFYEXEC(Sink::Store::create<Mail>(mail));
1281 }
1282 VERIFYEXEC(Sink::ResourceControl::flushMessageQueue("sink.dummy.instance1"));
1283 }
1284
1285 // Test
1286 {
1287 Sink::Query query;
1288 query.resourceFilter("sink.dummy.instance1");
1289 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Subject To Search"), QueryBase::Comparator::Fulltext));
1290 auto model = Sink::Store::loadModel<Mail>(query);
1291 QTRY_VERIFY(model->data(QModelIndex(), Sink::Store::ChildrenFetchedRole).toBool());
1292 QCOMPARE(model->rowCount(), 1);
1293 }
1294 {
1295 Sink::Query query;
1296 query.resourceFilter("sink.dummy.instance1");
1297 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Subject"), QueryBase::Comparator::Fulltext));
1298 auto result = Sink::Store::read<Mail>(query);
1299 QCOMPARE(result.size(), 1);
1300 }
1301 {
1302 Sink::Query query;
1303 query.resourceFilter("sink.dummy.instance1");
1304 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Search"), QueryBase::Comparator::Fulltext));
1305 auto result = Sink::Store::read<Mail>(query);
1306 QCOMPARE(result.size(), 1);
1307 }
1308 {
1309 Sink::Query query;
1310 query.resourceFilter("sink.dummy.instance1");
1311 query.filter<Mail::Subject>(QueryBase::Comparator(QString("search"), QueryBase::Comparator::Fulltext));
1312 auto result = Sink::Store::read<Mail>(query);
1313 QCOMPARE(result.size(), 1);
1314 }
1315 {
1316 Sink::Query query;
1317 query.resourceFilter("sink.dummy.instance1");
1318 query.filter<Mail::Subject>(QueryBase::Comparator(QString("sear*"), QueryBase::Comparator::Fulltext));
1319 auto result = Sink::Store::read<Mail>(query);
1320 QCOMPARE(result.size(), 1);
1321 }
1322 {
1323 Sink::Query query;
1324 query.resourceFilter("sink.dummy.instance1");
1325 query.filter<Mail::MimeMessage>(QueryBase::Comparator(QString("searchable"), QueryBase::Comparator::Fulltext));
1326 auto result = Sink::Store::read<Mail>(query);
1327 QCOMPARE(result.size(), 1);
1328 }
1329 {
1330 Sink::Query query;
1331 query.resourceFilter("sink.dummy.instance1");
1332 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Subject"), QueryBase::Comparator::Fulltext));
1333 query.filter<Mail::Folder>("folder1");
1334 auto result = Sink::Store::read<Mail>(query);
1335 QCOMPARE(result.size(), 1);
1336 }
1337 {
1338 Sink::Query query;
1339 query.resourceFilter("sink.dummy.instance1");
1340 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Subject"), QueryBase::Comparator::Fulltext));
1341 query.filter<Mail::Folder>("folder2");
1342 auto result = Sink::Store::read<Mail>(query);
1343 QCOMPARE(result.size(), 0);
1344 }
1345 }
1346
1257}; 1347};
1258 1348
1259QTEST_MAIN(QueryTest) 1349QTEST_MAIN(QueryTest)