X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fdb-test.c;h=9a6f3bb6264e19620970226474d15ab85d7bb083;hb=46ddff89cca52f48ad1ed9eda5d5d9aa0b2f5ea5;hp=f4a3ba32abf5b1b04c7b9bf02df98bf5e1e07bc0;hpb=c3122e1724cd3df2ecf655adb533f085c99811fa;p=libucw.git diff --git a/lib/db-test.c b/lib/db-test.c index f4a3ba32..9a6f3bb6 100644 --- a/lib/db-test.c +++ b/lib/db-test.c @@ -1,18 +1,21 @@ /* - * Sherlock Library -- Database Manager -- Tests and Benchmarks + * UCW Library -- Database Manager -- Tests and Benchmarks * - * (c) 1999 Martin Mares + * (c) 1999 Martin Mares + * + * This software may be freely distributed and used according to the terms + * of the GNU Lesser General Public License. */ #if 1 -#include "db.c" +#include "lib/db.c" #define NAME "SDBM" #else -#include "db-emul.c" +#include "lib/db-emul.c" #define NAME "GDBM" #endif -#include +#include #include #include #include @@ -45,6 +48,7 @@ Options:\n\ -kU Use keys with URL distribution\n\ -n Number of distinct keys\n\ -d[-] Use specified value size (see -k-)\n\ +-t Perform the tests on an existing database file\n\ -v Be verbose\n\ -s Turn on synchronous mode\n\ -S Turn on supersynchronous mode\n\ @@ -249,17 +253,21 @@ parse_size(int *min, int *max, char *c) *min = *max = atol(c); } +#define PROGRESS(i) if ((verbose > 2) || (verbose > 1 && !(i & 1023))) fprintf(stderr, "%d\r", i) + int main(int argc, char **argv) { int c, i, j, k, l, m; byte kb[2048], vb[2048], vb2[2048]; uns ks, vs, vs2, perc, cnt; char *ch; + int dont_delete = 0; + timestamp_t timer; - initlog("dbtest"); + log_init("dbtest"); setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stderr, NULL, _IONBF, 0); - while ((c = getopt(argc, argv, "c:p:k:n:d:vsSF")) >= 0) + while ((c = getopt(argc, argv, "c:p:k:n:d:vsStF")) >= 0) switch (c) { case 'c': @@ -292,6 +300,9 @@ int main(int argc, char **argv) case 'F': opts.flags |= SDBM_FAST; break; + case 't': + dont_delete = 1; + break; default: help(); } @@ -314,7 +325,8 @@ int main(int argc, char **argv) verb("OPEN(%s, key=%d, val=%d, cache=%d, pgorder=%d)\n", opts.name, opts.key_size, opts.val_size, opts.cache_size, opts.page_order); - unlink(opts.name); + if (!dont_delete) + unlink(opts.name); d = sdbm_open(&opts); if (!d) die("open failed: %m"); @@ -322,14 +334,14 @@ int main(int argc, char **argv) while (optind < argc) { char *o = argv[optind++]; - init_timer(); + init_timer(&timer); switch (*o) { case 'c': printf("create %d: ", num_keys); for(i=0; i= num_keys) die("get_next: %d out of range", i); - verb("^2%d\r", i); + PROGRESS(i); vs2 = keygen(vb2, i); if (ks != vs2 || memcmp(kb, vb2, ks)) die("get_next: key mismatch at %d", i); @@ -448,7 +460,7 @@ int main(int argc, char **argv) help(); } sdbm_sync(d); - printf("%d ms\n", get_timer()); + printf("%d ms\n", get_timer(&timer)); } verb("CLOSE\n");