Add debug and size options to memtest
[tedtools.git] / tbtreetest.c
index a6e96db..cb5456e 100644 (file)
@@ -41,7 +41,23 @@ static void
 usage() {
        puts(
        "Usage:\n"
-       "tbtreetest [ -c CACHESIZE ] [-r] [-k] [-f FILE] [-D | -L | -b | -i KEY -v VALUE [ -S strategynumber ] | -d KEY | -s KEY ] [-V]\n"
+       "tbtreetest [ -c CACHESIZE ] [-r] [-k] [-f FILE] [-D | -L | -b | -i KEY -v VALUE [ -S strategynumber ] | -d KEY | -s KEY ] [-V] [-q]\n"
+       "\t-c CACHESIZE    - cache size in pages (default 0)\n"
+       "\t-r              - readonly mode\n"
+       "\t-k              - fixed size key (integer)\n"
+       "\t-f FILE         - db-file (default ./BTREE)");
+       puts(
+       "\t-D              - dump data base\n"
+        "\t-L              - list all pairs (in bulk format)\n"
+       "\t-b              - bulk operations from stdin in format (insert/delete/search):\n"
+       "\t                   I KEY VALUE\n"
+       "\t                   D KEY\n"
+       "\t                   S KEY\n"
+       "\t-i KEY -v VALUE - insert KEY/VALUE\n"
+       "\t-d KEY          - delete key\n"
+       "\t-s KEY          - search key\n"
+       "\t-V              - print page read/writes at the end\n"
+       "\t-q              - do not print results of searches\n"
        );
        exit(1);
 }
@@ -49,6 +65,7 @@ usage() {
 extern char *optarg;
 extern int opterr;
 
+#define MODE_NO        0
 #define MODE_SEARCH    1
 #define MODE_INSERT    2
 #define MODE_DELETE    3
@@ -104,14 +121,17 @@ main(int argn, char *argv[]) {
        int rc=0;
        char *file="BTREE";
        char *key=NULL, *val=NULL;
-       int mode=0, verbose=0;
+       int mode=MODE_NO, verbose=0, quietout=0;
 
        opentlog(TL_OPEN_STDERR,TL_DEBUG, NULL);
 
        memset(&db, 0, sizeof(TBTree));
 
-       while((i=getopt(argn,argv,"VbS:Dc:hrkf:i:v:d:s:L")) != EOF) {
+       while((i=getopt(argn,argv,"qVbS:Dc:hrkf:i:v:d:s:L")) != EOF) {
                switch(i) {
+                       case 'q':
+                               quietout=1;
+                               break;
                        case 'V':
                                verbose=1;
                                break;
@@ -164,8 +184,11 @@ main(int argn, char *argv[]) {
                }
        }
        
-       db.cmpkey = (db.keylen) ? cmpINT : cmpSTR;
+       if ( mode==MODE_NO )
+               usage();
                        
+       db.cmpkey = (db.keylen) ? cmpINT : cmpSTR;
+       
        if ( (rc=TBTOpen(&db, file))!= TBT_OK )
                exit(1);
 
@@ -251,7 +274,7 @@ main(int argn, char *argv[]) {
                                }
                                if ( *buf == 'D' ) {
                                        rc=TBTDelete(&db, &key);
-                               } else if ( (rc=TBTFind(&db, &key, &value))==TBT_OK ) {
+                               } else if ( (rc=TBTFind(&db, &key, &value))==TBT_OK && quietout==0) {
                                        if ( db.keylen )
                                                printf("%d", *(int*)(key.value));
                                        else