X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftdb2%2Ftools%2Ftdbtorture.c;h=1696d4a355d1e85bb6dcba7ff72e44dbc26a0d77;hb=076c398e1b84881f5c9d0da081bd2ef8027c2b2b;hp=84223aa32a0ec2ac8ff2aa8ee11d47ff06f44d16;hpb=81defbc32d0c3b0aa3f6e71405a3cf1f76afec45;p=ccan diff --git a/ccan/tdb2/tools/tdbtorture.c b/ccan/tdb2/tools/tdbtorture.c index 84223aa3..1696d4a3 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,9 +41,10 @@ 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, ...) { @@ -170,9 +171,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 +337,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 +374,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. */