recovery-hello.c 1.59 KB
Newer Older
1
#ident "$Id$"
2 3
// test recovery of "hello" comments

4 5 6
#include "test.h"
#include "includes.h"

7
#define TESTDIR __SRCFILE__ ".dir"
8 9 10 11 12 13

static int 
run_test(void) {
    int r;

    // setup the test dir
14 15
    r = system("rm -rf " TESTDIR);
    CKERR(r);
16 17 18 19 20 21 22
    r = toku_os_mkdir(TESTDIR, S_IRWXU); assert(r == 0);

    // create the log
    TOKULOGGER logger;
    r = toku_logger_create(&logger); assert(r == 0);
    r = toku_logger_open(TESTDIR, logger); assert(r == 0);
    BYTESTRING hello  = { strlen("hello"), "hello" };
23 24 25
    r = toku_log_comment(logger, NULL, TRUE, 0, hello); assert(r == 0);
    LSN beginlsn;
    r = toku_log_begin_checkpoint(logger, &beginlsn, TRUE, 0); assert(r == 0);
26
    r = toku_log_end_checkpoint(logger, NULL, TRUE, beginlsn.lsn, 0, 0, 0); assert(r == 0);
27 28 29
    r = toku_log_comment(logger, NULL, TRUE, 0, hello); assert(r == 0);
    BYTESTRING there  = { strlen("there"), "there" };
    r = toku_log_comment(logger, NULL, TRUE, 0, there); assert(r == 0);
30 31
    r = toku_logger_close(&logger); assert(r == 0);

32
    // redirect stderr
33
    int devnul = open(DEV_NULL_FILE, O_WRONLY);
34
    assert(devnul>=0);
35
    r = toku_dup2(devnul, fileno(stderr)); 	    assert(r==fileno(stderr));
36 37
    r = close(devnul);                      assert(r==0);

38
    // run recovery
39 40 41 42
    r = tokudb_recover(NULL,
		       NULL_prepared_txn_callback,
		       NULL_keep_cachetable_callback,
		       NULL_logger, TESTDIR, TESTDIR, 0, 0, 0, NULL, 0); 
43
    assert(r == 0);
44 45 46 47

    r = system("rm -rf " TESTDIR);
    CKERR(r);

48 49 50 51 52 53 54 55 56
    return 0;
}

int
test_main(int UU(argc), const char *UU(argv[])) {
    int r;
    r = run_test();
    return r;
}