mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 23:04:20 +01:00
64da224f05
git-svn-id: file:///svn/toku/tokudb@40438 c7de825b-a66e-492c-adef-691d508d4ae1
83 lines
2.6 KiB
C
83 lines
2.6 KiB
C
/* -*- mode: C; c-basic-offset: 4 -*- */
|
|
#ident "$Id$"
|
|
#ident "Copyright (c) 2010 Tokutek Inc. All rights reserved."
|
|
|
|
#include "test.h"
|
|
#include "includes.h"
|
|
#include "../brttypes.h"
|
|
#include "../txn.h"
|
|
|
|
/*
|
|
* a test of the txn filenums to ignore utilities:
|
|
* - toku_txn_ignore_create()
|
|
* - toku_txn_ignore_free()
|
|
* - toku_txn_ignore_add()
|
|
* - toku_txn_ignore_delete()
|
|
* - toku_txn_ignore_contains()
|
|
*/
|
|
|
|
int
|
|
test_main(int argc, const char *argv[]) {
|
|
default_parse_args(argc, argv);
|
|
|
|
TOKUTXN txn = (TOKUTXN) toku_malloc(sizeof(struct tokutxn));
|
|
|
|
int r;
|
|
|
|
toku_txn_ignore_init(txn);
|
|
|
|
FILENUM f1 = {1};
|
|
FILENUM f2 = {2};
|
|
FILENUM f3 = {3};
|
|
FILENUM f4 = {4};
|
|
FILENUM f5 = {5};
|
|
FILENUM f6 = {6};
|
|
FILENUM f7 = {7};
|
|
FILENUM f8 = {8};
|
|
FILENUM f9 = {9};
|
|
|
|
r = toku_txn_ignore_add(txn, f1); CKERR(r);
|
|
r = toku_txn_ignore_add(txn, f3); CKERR(r);
|
|
r = toku_txn_ignore_add(txn, f5); CKERR(r);
|
|
r = toku_txn_ignore_add(txn, f7); CKERR(r);
|
|
r = toku_txn_ignore_add(txn, f9); CKERR(r);
|
|
r = toku_txn_ignore_remove(txn, f3); CKERR(r);
|
|
r = toku_txn_ignore_remove(txn, f2); assert( r == ENOENT );
|
|
|
|
r = toku_txn_ignore_contains(txn, f1); CKERR(r);
|
|
r = toku_txn_ignore_contains(txn, f2); assert( r == ENOENT );
|
|
r = toku_txn_ignore_contains(txn, f3); assert( r == ENOENT );
|
|
r = toku_txn_ignore_contains(txn, f4); assert( r == ENOENT );
|
|
r = toku_txn_ignore_contains(txn, f5); CKERR(r);
|
|
r = toku_txn_ignore_contains(txn, f6); assert( r == ENOENT );
|
|
r = toku_txn_ignore_contains(txn, f7); CKERR(r);
|
|
r = toku_txn_ignore_contains(txn, f8); assert( r == ENOENT );
|
|
r = toku_txn_ignore_contains(txn, f9); CKERR(r);
|
|
|
|
assert(txn->ignore_errors.fns_allocated == 8);
|
|
assert(txn->ignore_errors.filenums.num == 4);
|
|
|
|
|
|
r = toku_txn_ignore_add(txn, f2); CKERR(r);
|
|
r = toku_txn_ignore_add(txn, f3); CKERR(r);
|
|
r = toku_txn_ignore_add(txn, f4); CKERR(r);
|
|
r = toku_txn_ignore_add(txn, f6); CKERR(r);
|
|
r = toku_txn_ignore_add(txn, f8); CKERR(r);
|
|
|
|
TXN_IGNORE txni = &(txn->ignore_errors); // test using code similar to that in txn.c
|
|
assert(txni->fns_allocated == 16);
|
|
assert(txni->filenums.num == 9);
|
|
|
|
// check that dups are ignored
|
|
for (int i=0;i<10;i++) {
|
|
r = toku_txn_ignore_add(txn, f2); CKERR(r);
|
|
}
|
|
assert(txn->ignore_errors.fns_allocated == 16);
|
|
assert(txn->ignore_errors.filenums.num == 9);
|
|
|
|
toku_txn_ignore_free(txn);
|
|
|
|
toku_free(txn);
|
|
|
|
return 0;
|
|
}
|