Line data Source code
1 : #include "../common/tdb_private.h" 2 : #include "../common/io.c" 3 : #include "../common/tdb.c" 4 : #include "../common/lock.c" 5 : #include "../common/freelist.c" 6 : #include "../common/traverse.c" 7 : #include "../common/transaction.c" 8 : #include "../common/error.c" 9 : #include "../common/open.c" 10 : #include "../common/check.c" 11 : #include "../common/hash.c" 12 : #include "../common/mutex.c" 13 : #include "tap-interface.h" 14 : #include <stdlib.h> 15 : 16 2 : static void log_fn(struct tdb_context *tdb, enum tdb_debug_level level, const char *fmt, ...) 17 : { 18 2 : unsigned int *count = tdb_get_logging_private(tdb); 19 2 : if (strstr(fmt, "spinlocks")) 20 2 : (*count)++; 21 2 : } 22 : 23 : /* The code should barf on TDBs created with rwlocks. */ 24 1 : int main(int argc, char *argv[]) 25 : { 26 : struct tdb_context *tdb; 27 : unsigned int log_count; 28 1 : struct tdb_logging_context log_ctx = { log_fn, &log_count }; 29 : 30 : plan_tests(4); 31 : 32 : /* We should fail to open rwlock-using tdbs of either endian. */ 33 1 : log_count = 0; 34 1 : tdb = tdb_open_ex("test/rwlock-le.tdb", 0, 0, O_RDWR, 0, 35 : &log_ctx, NULL); 36 1 : ok1(!tdb); 37 1 : ok1(log_count == 1); 38 : 39 1 : log_count = 0; 40 1 : tdb = tdb_open_ex("test/rwlock-be.tdb", 0, 0, O_RDWR, 0, 41 : &log_ctx, NULL); 42 1 : ok1(!tdb); 43 1 : ok1(log_count == 1); 44 : 45 1 : return exit_status(); 46 : }