]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
mail-transaction-log-view unit testing is now also independent.
authorTimo Sirainen <tss@iki.fi>
Wed, 27 May 2009 00:43:01 +0000 (20:43 -0400)
committerTimo Sirainen <tss@iki.fi>
Wed, 27 May 2009 00:43:01 +0000 (20:43 -0400)
--HG--
branch : HEAD

src/lib-index/Makefile.am
src/lib-index/test-index.c [deleted file]
src/lib-index/test-index.h [deleted file]
src/lib-index/test-mail-transaction-log-view.c [moved from src/lib-index/test-transaction-log-view.c with 69% similarity]

index 42ae0fe81762a930b4aa72e650333e332762286f..3225dbe3cf1597a290c5a8004673c5bdc6e51240 100644 (file)
@@ -59,32 +59,23 @@ headers = \
         mailbox-list-index-private.h
 
 test_programs = \
-       test-index \
-       test-mail-transaction-log-append
+       test-mail-transaction-log-append \
+       test-mail-transaction-log-view
 
 noinst_PROGRAMS = $(test_programs)
 
 test_libs = \
-       libindex.la \
+       mail-index-util.o \
        ../lib-test/libtest.la \
-       ../lib-imap/libimap.la \
-       ../lib-mail/libmail.la \
-       ../lib-charset/libcharset.la \
        ../lib/liblib.la
 
-test_index_SOURCES = \
-       test-index.c \
-       test-transaction-log-view.c
-
-test_headers = \
-       test-index.h
-
-test_index_LDADD = $(test_libs) $(LIBICONV)
-test_index_DEPENDENCIES = $(test_libs)
-
 test_mail_transaction_log_append_SOURCES = test-mail-transaction-log-append.c
-test_mail_transaction_log_append_LDADD = mail-transaction-log-append.lo mail-index-util.lo ../lib-test/libtest.la ../lib/liblib.la
-test_mail_transaction_log_append_DEPENDENCIES = mail-transaction-log-append.lo mail-index-util.lo ../lib-test/libtest.la ../lib/liblib.la
+test_mail_transaction_log_append_LDADD = mail-transaction-log-append.o $(test_libs)
+test_mail_transaction_log_append_DEPENDENCIES = mail-transaction-log-append.o $(test_libs)
+
+test_mail_transaction_log_view_SOURCES = test-mail-transaction-log-view.c
+test_mail_transaction_log_view_LDADD = mail-transaction-log-view.o $(test_libs)
+test_mail_transaction_log_view_DEPENDENCIES = mail-transaction-log-view.o $(test_libs)
 
 check: check-am check-test
 check-test: $(test_programs)
@@ -94,7 +85,7 @@ check-test: $(test_programs)
 
 if INSTALL_HEADERS
   pkginc_libdir=$(pkgincludedir)
-  pkginc_lib_HEADERS = $(headers) $(test_headers)
+  pkginc_lib_HEADERS = $(headers)
 else
-  noinst_HEADERS = $(headers) $(test_headers)
+  noinst_HEADERS = $(headers)
 endif
diff --git a/src/lib-index/test-index.c b/src/lib-index/test-index.c
deleted file mode 100644 (file)
index b55a8a1..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Copyright (c) 2009 Dovecot authors, see the included COPYING file */
-
-#include "test-index.h"
-
-int main(void)
-{
-       static void (*test_functions[])(void) = {
-               test_transaction_log_view,
-               NULL
-       };
-       return test_run(test_functions);
-}
diff --git a/src/lib-index/test-index.h b/src/lib-index/test-index.h
deleted file mode 100644 (file)
index b6d1ac0..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef TEST_INDEX_H
-#define TEST_INDEX_H
-
-#include "lib.h"
-#include "test-common.h"
-
-void test_transaction_log_view(void);
-
-#endif
similarity index 69%
rename from src/lib-index/test-transaction-log-view.c
rename to src/lib-index/test-mail-transaction-log-view.c
index ab7686608083f621b493b41342bd8d1f1d3da44e..92cf963ef4d23d116df2ce9b432f965697bf4605 100644 (file)
@@ -8,6 +8,51 @@
 static struct mail_transaction_log *log;
 static struct mail_transaction_log_view *view;
 
+void mail_transaction_log_file_set_corrupted(struct mail_transaction_log_file *file ATTR_UNUSED,
+                                            const char *fmt ATTR_UNUSED, ...)
+{
+}
+
+void mail_transaction_logs_clean(struct mail_transaction_log *log ATTR_UNUSED)
+{
+}
+
+int mail_transaction_log_find_file(struct mail_transaction_log *log,
+                                  uint32_t file_seq, bool nfs_flush ATTR_UNUSED,
+                                  struct mail_transaction_log_file **file_r)
+{
+       struct mail_transaction_log_file *file;
+
+       for (file = log->files; file != NULL; file = file->next) {
+               if (file->hdr.file_seq == file_seq) {
+                       *file_r = file;
+                       return 1;
+               }
+       }
+       return 0;
+}
+
+int mail_transaction_log_file_map(struct mail_transaction_log_file *file ATTR_UNUSED,
+                                 uoff_t start_offset ATTR_UNUSED, uoff_t end_offset ATTR_UNUSED)
+{
+       return 1;
+}
+
+int mail_transaction_log_file_get_highest_modseq_at(
+               struct mail_transaction_log_file *file ATTR_UNUSED,
+               uoff_t offset ATTR_UNUSED, uint64_t *highest_modseq_r)
+{
+       *highest_modseq_r = 0;
+       return 0;
+}
+
+bool mail_transaction_header_has_modseq(const struct mail_transaction_header *hdr ATTR_UNUSED,
+                                       const void *data ATTR_UNUSED,
+                                       uint64_t cur_modseq ATTR_UNUSED)
+{
+       return TRUE;
+}
+
 static void
 test_transaction_log_file_add(uint32_t file_seq)
 {
@@ -17,15 +62,15 @@ test_transaction_log_file_add(uint32_t file_seq)
        file->hdr.file_seq = file_seq;
        file->hdr.hdr_size = file->sync_offset = sizeof(file->hdr);
        file->hdr.prev_file_seq = file_seq - 1;
-       file->hdr.indexid = 1;
        file->log = log;
        file->fd = -1;
+       file->buffer = buffer_create_dynamic(default_pool, 256);
+       file->buffer_offset = file->hdr.hdr_size;
 
        /* files must be sorted by file_seq */
        for (p = &log->files; *p != NULL; p = &(*p)->next) {
                if ((*p)->hdr.file_seq > file->hdr.file_seq)
                        break;
-               i_assert((*p)->hdr.file_seq < file->hdr.file_seq);
        }
        *p = file;
        log->head = file;
@@ -47,12 +92,30 @@ static bool view_is_file_refed(uint32_t file_seq)
        return ret;
 }
 
+static size_t
+add_append_record(struct mail_transaction_log_file *file,
+                 const struct mail_index_record *rec)
+{
+       struct mail_transaction_header hdr;
+       size_t size;
+
+       memset(&hdr, 0, sizeof(hdr));
+       hdr.type = MAIL_TRANSACTION_APPEND | MAIL_TRANSACTION_EXTERNAL;
+       hdr.size = mail_index_uint32_to_offset(sizeof(hdr) + sizeof(*rec));
+
+       buffer_append(file->buffer, &hdr, sizeof(hdr));
+       buffer_append(file->buffer, rec, sizeof(*rec));
+
+       size = sizeof(hdr) + sizeof(*rec);
+       file->sync_offset += size;
+       return size;
+}
+
 void test_transaction_log_view(void)
 {
        const struct mail_transaction_header *hdr;
-       struct mail_transaction_log_append_ctx *append_ctx;
-       struct mail_index_record append_rec;
        const struct mail_index_record *rec;
+       struct mail_index_record append_rec;
        const void *data;
        uint32_t seq;
        uoff_t offset, last_log_size;
@@ -70,12 +133,9 @@ void test_transaction_log_view(void)
        /* add an append record to the 3rd log file */
        memset(&append_rec, 0, sizeof(append_rec));
        append_rec.uid = 1;
-       test_assert(mail_transaction_log_append_begin(log->index, TRUE, &append_ctx) == 0);
-       mail_transaction_log_append_add(append_ctx, MAIL_TRANSACTION_APPEND,
-                                       &append_rec, sizeof(append_rec));
-       test_assert(mail_transaction_log_append_commit(&append_ctx) == 0);
+
        last_log_size = sizeof(struct mail_transaction_log_header) +
-               sizeof(struct mail_transaction_header) + sizeof(append_rec);
+               add_append_record(log->head, &append_rec);
 
        view = mail_transaction_log_view_open(log);
        test_assert(view != NULL && log->views == view &&
@@ -123,15 +183,12 @@ void test_transaction_log_view(void)
        mail_transaction_log_view_clear(view, 2);
        test_assert(!view_is_file_refed(1) && view_is_file_refed(2) &&
                    view_is_file_refed(3));
+       log->files = log->files->next;
+       test_assert(log->files->hdr.file_seq == 2);
        test_end();
 
        /* --- first file has been removed --- */
 
-       test_begin("removed first");
-       mail_transaction_logs_clean(log);
-       test_assert(log->files->hdr.file_seq == 2);
-       test_end();
-
        test_begin("set 2-3");
        test_assert(mail_transaction_log_view_set(view, 2, 0, (uint32_t)-1, (uoff_t)-1, &reset) == 1);
        test_end();
@@ -146,3 +203,12 @@ void test_transaction_log_view(void)
        view->log = log;
        test_end();
 }
+
+int main(void)
+{
+       static void (*test_functions[])(void) = {
+               test_transaction_log_view,
+               NULL
+       };
+       return test_run(test_functions);
+}