X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftdb2%2Ftools%2Ftdbtorture.c;h=89c2609967b425a4bdd8d71c8763fc4949576d2e;hb=2b5cb9bd6be4e61870ba7a400d1a9d91c5933371;hp=2ac9a8de43975a6b36220e5ebf1a1598c2acfa93;hpb=a40b318e7a07a452ae7456053727bd11b2fa49b4;p=ccan diff --git a/ccan/tdb2/tools/tdbtorture.c b/ccan/tdb2/tools/tdbtorture.c index 2ac9a8de..89c26099 100644 --- a/ccan/tdb2/tools/tdbtorture.c +++ b/ccan/tdb2/tools/tdbtorture.c @@ -20,11 +20,10 @@ #define DELETE_PROB 8 #define STORE_PROB 4 #define APPEND_PROB 6 -//#define TRANSACTION_PROB 10 -//#define TRANSACTION_PREPARE_PROB 2 +#define TRANSACTION_PROB 10 +#define TRANSACTION_PREPARE_PROB 2 #define LOCKSTORE_PROB 5 #define TRAVERSE_PROB 20 -#define TRAVERSE_READ_PROB 20 #define TRAVERSE_MOD_PROB 100 #define TRAVERSE_ABORT_PROB 500 #define CULL_PROB 100 @@ -43,22 +42,13 @@ static int count_pipe; static union tdb_attribute log_attr; static union tdb_attribute seed_attr; -#ifdef PRINTF_FMT -static void tdb_log(struct tdb_context *tdb, enum tdb_debug_level level, void *private, const char *format, ...) PRINTF_FMT(4,5); -#endif -static void tdb_log(struct tdb_context *tdb, enum tdb_debug_level level, void *private, const char *format, ...) +static void tdb_log(struct tdb_context *tdb, enum tdb_log_level level, + void *private, const char *message) { - va_list ap; - - if (level != TDB_DEBUG_TRACE) - error_count++; - - va_start(ap, format); - vfprintf(stdout, format, ap); - va_end(ap); + fputs(message, stdout); fflush(stdout); #if 0 - if (level != TDB_DEBUG_TRACE) { + { char *ptr; signal(SIGUSR1, SIG_IGN); asprintf(&ptr,"xterm -e gdb /proc/%d/exe %d", getpid(), getpid()); @@ -171,9 +161,7 @@ static void addrec_db(void) } if (in_traverse == 0 && in_transaction && random() % TRANSACTION_PROB == 0) { - if (tdb_transaction_cancel(db) != 0) { - fatal("tdb_transaction_cancel failed"); - } + tdb_transaction_cancel(db); in_transaction--; goto next; } @@ -207,7 +195,7 @@ static void addrec_db(void) #if LOCKSTORE_PROB if (random() % LOCKSTORE_PROB == 0) { tdb_chainlock(db, key); - data = tdb_fetch(db, key); + tdb_fetch(db, key, &data); if (tdb_store(db, key, data, TDB_REPLACE) != 0) { fatal("tdb_store failed"); } @@ -227,17 +215,8 @@ static void addrec_db(void) } #endif -#if TRAVERSE_READ_PROB - if (in_traverse == 0 && random() % TRAVERSE_READ_PROB == 0) { - in_traverse++; - tdb_traverse_read(db, NULL, NULL); - in_traverse--; - goto next; - } -#endif - - data = tdb_fetch(db, key); - if (data.dptr) free(data.dptr); + if (tdb_fetch(db, key, &data) == TDB_SUCCESS) + free(data.dptr); next: free(k); @@ -301,7 +280,7 @@ static int run_child(int i, int seed, unsigned num_loops, unsigned start) } if (error_count == 0) { - tdb_traverse_read(db, NULL, NULL); + tdb_traverse(db, NULL, NULL); #if TRANSACTION_PROB if (always_transaction) { while (in_transaction) {