diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/dummyresourcewritebenchmark.cpp | 42 | ||||
-rw-r--r-- | tests/querytest.cpp | 90 |
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 | |||
30 | static QByteArray createEntityBuffer(size_t attachmentSize, int &bufferSize) | 33 | static 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 | |||
17 | using namespace Sink; | 19 | using namespace Sink; |
18 | using namespace Sink::ApplicationDomain; | 20 | using 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 | ||
1259 | QTEST_MAIN(QueryTest) | 1349 | QTEST_MAIN(QueryTest) |