/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ // vim: ft=cpp:expandtab:ts=8:sw=4:softtabstop=4: #ident "$Id$" #ident "Copyright (c) 2007, 2008 Tokutek Inc. All rights reserved." #include "logcursor.h" #include "test.h" const int N = 2; int test_main (int argc, const char *argv[]) { default_parse_args(argc, argv); int r; toku_os_recursive_delete(TOKU_TEST_FILENAME); r = toku_os_mkdir(TOKU_TEST_FILENAME, S_IRWXU); assert(r==0); TOKULOGGER logger; LSN lsn = ZERO_LSN; int helloseq = 0; // create N log files with a hello message for (int i=0; icmd == LT_comment); char expect[32]; sprintf(expect, "hello%d", helloseq++); assert(le->u.comment.comment.len == strlen(expect) && memcmp(le->u.comment.comment.data, expect, le->u.comment.comment.len) == 0); } r = toku_logcursor_next(lc, &le); assert(r != 0); r = toku_logcursor_destroy(&lc); assert(r == 0 && lc == NULL); // verify the log backwards r = toku_logcursor_create(&lc, TOKU_TEST_FILENAME); assert(r == 0 && lc != NULL); helloseq = 2*N; for (int i=0; i<2*N; i++) { r = toku_logcursor_prev(lc, &le); assert(r == 0 && le->cmd == LT_comment); char expect[32]; sprintf(expect, "hello%d", --helloseq); assert(le->u.comment.comment.len == strlen(expect) && memcmp(le->u.comment.comment.data, expect, le->u.comment.comment.len) == 0); } r = toku_logcursor_prev(lc, &le); assert(r != 0); r = toku_logcursor_destroy(&lc); assert(r == 0 && lc == NULL); toku_os_recursive_delete(TOKU_TEST_FILENAME); return 0; }