X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftdb2%2Ftools%2Ftdbtorture.c;h=5dddf99a7cfa47d8807df251c3bc902a8e890fc5;hb=a39bf3aca1b60365efaf8b1eeb2b2c58b09ffab6;hp=84223aa32a0ec2ac8ff2aa8ee11d47ff06f44d16;hpb=81defbc32d0c3b0aa3f6e71405a3cf1f76afec45;p=ccan diff --git a/ccan/tdb2/tools/tdbtorture.c b/ccan/tdb2/tools/tdbtorture.c index 84223aa3..5dddf99a 100644 --- a/ccan/tdb2/tools/tdbtorture.c +++ b/ccan/tdb2/tools/tdbtorture.c @@ -20,8 +20,8 @@ #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 @@ -41,23 +41,21 @@ static int always_transaction = 0; static int loopnum; static int count_pipe; static union tdb_attribute log_attr; +static union tdb_attribute seed_attr; -#ifdef PRINTF_ATTRIBUTE -static void tdb_log(struct tdb_context *tdb, enum tdb_debug_level level, void *private, const char *format, ...) PRINTF_ATTRIBUTE(4,5); +#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, ...) { va_list ap; - if (level != TDB_DEBUG_TRACE) - error_count++; - va_start(ap, format); vfprintf(stdout, format, ap); va_end(ap); 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()); @@ -170,9 +168,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; } @@ -338,7 +334,10 @@ int main(int argc, char * const *argv) int kill_random = 0; int *done; + log_attr.base.attr = TDB_ATTRIBUTE_LOG; + log_attr.base.next = &seed_attr; log_attr.log.log_fn = tdb_log; + seed_attr.base.attr = TDB_ATTRIBUTE_SEED; while ((c = getopt(argc, argv, "n:l:s:thk")) != -1) { switch (c) { @@ -372,6 +371,7 @@ int main(int argc, char * const *argv) if (seed == -1) { seed = (getpid() + time(NULL)) & 0x7FFFFFFF; } + seed_attr.seed.seed = (((uint64_t)seed) << 32) | seed; if (num_procs == 1 && !kill_random) { /* Don't fork for this case, makes debugging easier. */