From: Timo Sirainen Date: Mon, 27 Jan 2020 10:35:10 +0000 (+0200) Subject: lib-index: Add unit test for log rotation during commit X-Git-Tag: 2.3.10~114 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=319cc23f1e6913be741712ccf9f82afcf9d47212;p=thirdparty%2Fdovecot%2Fcore.git lib-index: Add unit test for log rotation during commit --- diff --git a/src/lib-index/Makefile.am b/src/lib-index/Makefile.am index e7856e602b..40fefb5b2f 100644 --- a/src/lib-index/Makefile.am +++ b/src/lib-index/Makefile.am @@ -61,6 +61,7 @@ headers = \ mailbox-log.h test_programs = \ + test-mail-index \ test-mail-index-map \ test-mail-index-modseq \ test-mail-index-sync-ext \ @@ -79,6 +80,10 @@ test_libs = \ test_deps = $(noinst_LTLIBRARIES) $(test_libs) +test_mail_index_SOURCES = test-mail-index.c +test_mail_index_LDADD = $(noinst_LTLIBRARIES) $(test_libs) +test_mail_index_DEPENDENCIES = $(test_deps) + test_mail_index_map_SOURCES = test-mail-index-map.c test_mail_index_map_LDADD = $(noinst_LTLIBRARIES) $(test_libs) test_mail_index_map_DEPENDENCIES = $(test_deps) diff --git a/src/lib-index/test-mail-index.c b/src/lib-index/test-mail-index.c new file mode 100644 index 0000000000..c18f42b5f7 --- /dev/null +++ b/src/lib-index/test-mail-index.c @@ -0,0 +1,42 @@ +/* Copyright (c) 2019 Dovecot authors, see the included COPYING file */ + +#include "lib.h" +#include "array.h" +#include "test-common.h" +#include "test-mail-index.h" +#include "mail-transaction-log-private.h" + +static void test_mail_index_rotate(void) +{ + struct mail_index *index; + struct mail_index_view *view; + struct mail_index_transaction *trans; + + test_begin("mail index rotate"); + index = test_mail_index_init(); + view = mail_index_view_open(index); + + /* First rotation of the index. The view will point to the old index. */ + trans = mail_index_transaction_begin(view, 0); + mail_index_reset(trans); + test_assert(mail_index_transaction_commit(&trans) == 0); + + /* Second rotation of the index. The log head doesn't have any extra + references. */ + trans = mail_index_transaction_begin(view, 0); + mail_index_reset(trans); + test_assert(mail_index_transaction_commit(&trans) == 0); + + mail_index_view_close(&view); + test_mail_index_deinit(&index); + test_end(); +} + +int main(void) +{ + static void (*const test_functions[])(void) = { + test_mail_index_rotate, + NULL + }; + return test_run(test_functions); +}