summaryrefslogtreecommitdiffstats
path: root/tests/mailtest.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2018-01-25 16:29:00 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-02-06 08:38:08 +0100
commit9b84aff4b68c3cef3328c85ac12418048b169cee (patch)
tree7014f685e6a8c850f0be7965e1e656d3de72a15d /tests/mailtest.cpp
parent0a0c197ed487c343675b62dff8456932c8d5ff7f (diff)
downloadsink-9b84aff4b68c3cef3328c85ac12418048b169cee.tar.gz
sink-9b84aff4b68c3cef3328c85ac12418048b169cee.zip
Store all BLOB properties inline.
BLOB properties had a couple of intended purposes: * Allow large payloads to be streamed directly to disk, and then be handled by reference. * Allow zero-copy handling. * Keep the database values compact so we can avoid traversing large BLOBS. However, they came at the cost of code-complexity, and we lost all the benefits of our storage layer, such as transactions. Measurements showed, that for email (the intended primary usecase), the overhead is hardly measurable, with most parts performing better, or at least not worse. We additionally also gain file-system independence, which may help on other platforms. The biggest drawback is probably that large payloads need to be written to disk twice, because of the synchronizer queue (once for the queue, once for the actual data).
Diffstat (limited to 'tests/mailtest.cpp')
-rw-r--r--tests/mailtest.cpp10
1 files changed, 3 insertions, 7 deletions
diff --git a/tests/mailtest.cpp b/tests/mailtest.cpp
index 1c24268..88cacd2 100644
--- a/tests/mailtest.cpp
+++ b/tests/mailtest.cpp
@@ -164,7 +164,6 @@ void MailTest::testCreateModifyDeleteMail()
164 auto mail = *mails.first(); 164 auto mail = *mails.first();
165 QCOMPARE(mail.getSubject(), subject); 165 QCOMPARE(mail.getSubject(), subject);
166 QCOMPARE(mail.getFolder(), folder.identifier()); 166 QCOMPARE(mail.getFolder(), folder.identifier());
167 QVERIFY(QFile(mail.getMimeMessagePath()).exists());
168 KMime::Message m; 167 KMime::Message m;
169 m.setContent(KMime::CRLFtoLF(mail.getMimeMessage())); 168 m.setContent(KMime::CRLFtoLF(mail.getMimeMessage()));
170 m.parse(); 169 m.parse();
@@ -193,7 +192,6 @@ void MailTest::testCreateModifyDeleteMail()
193 auto mail = *mails.first(); 192 auto mail = *mails.first();
194 QCOMPARE(mail.getSubject(), subject2); 193 QCOMPARE(mail.getSubject(), subject2);
195 QCOMPARE(mail.getFolder(), folder.identifier()); 194 QCOMPARE(mail.getFolder(), folder.identifier());
196 QVERIFY(QFile(mail.getMimeMessagePath()).exists());
197 KMime::Message m; 195 KMime::Message m;
198 m.setContent(KMime::CRLFtoLF(mail.getMimeMessage())); 196 m.setContent(KMime::CRLFtoLF(mail.getMimeMessage()));
199 m.parse(); 197 m.parse();
@@ -251,8 +249,7 @@ void MailTest::testMoveMail()
251 auto mail = *mails.first(); 249 auto mail = *mails.first();
252 modifiedMail = mail; 250 modifiedMail = mail;
253 QCOMPARE(mail.getFolder(), folder.identifier()); 251 QCOMPARE(mail.getFolder(), folder.identifier());
254 SinkWarning() << "path: " << mail.getMimeMessagePath(); 252 QVERIFY(!mail.getMimeMessage().isEmpty());
255 QVERIFY(QFile(mail.getMimeMessagePath()).exists());
256 }); 253 });
257 VERIFYEXEC(job); 254 VERIFYEXEC(job);
258 } 255 }
@@ -269,8 +266,7 @@ void MailTest::testMoveMail()
269 QCOMPARE(mails.size(), 1); 266 QCOMPARE(mails.size(), 1);
270 auto mail = *mails.first(); 267 auto mail = *mails.first();
271 QCOMPARE(mail.getFolder(), folder1.identifier()); 268 QCOMPARE(mail.getFolder(), folder1.identifier());
272 QVERIFY(QFile(mail.getMimeMessagePath()).exists()); 269 QVERIFY(!mail.getMimeMessage().isEmpty());
273 SinkTrace() << "Mime message path: " << mail.getMimeMessagePath();
274 }); 270 });
275 VERIFYEXEC(job); 271 VERIFYEXEC(job);
276 } 272 }
@@ -324,7 +320,7 @@ void MailTest::testMarkMailAsRead()
324 auto mail = mails.first(); 320 auto mail = mails.first();
325 ASYNCVERIFY(!mail->getSubject().isEmpty()); 321 ASYNCVERIFY(!mail->getSubject().isEmpty());
326 ASYNCCOMPARE(mail->getUnread(), false); 322 ASYNCCOMPARE(mail->getUnread(), false);
327 ASYNCVERIFY(QFileInfo(mail->getMimeMessagePath()).exists()); 323 ASYNCVERIFY(!mail->getMimeMessage().isEmpty());
328 return KAsync::null<void>(); 324 return KAsync::null<void>();
329 }); 325 });
330 VERIFYEXEC(job2); 326 VERIFYEXEC(job2);