📄 dptest.c
字号:
} } } /* close the database */ if(!dpclose(depot)){ pdperror(name); return 1; } if(!err) printfflush("ok\n\n"); return err ? 1 : 0;}/* perform rcat command */int dorcat(const char *name, int rnum, int bnum, int pnum, int align){ DEPOT *depot; int i, err, len; char buf[RECBUFSIZ]; printfflush("<Random Writing Test>\n name=%s rnum=%d bnum=%d pnum=%d align=%d\n\n", name, rnum, bnum, pnum, align); if(!(depot = dpopen(name, DP_OWRITER | DP_OCREAT | DP_OTRUNC, bnum))){ pdperror(name); return 1; } if(!dpsetalign(depot, align)){ pdperror(name); dpclose(depot); return 1; } err = FALSE; for(i = 1; i <= rnum; i++){ len = sprintf(buf, "%08d", myrand() % pnum + 1); if(!dpput(depot, buf, len, buf, len, DP_DCAT)){ pdperror(name); err = TRUE; break; } if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0){ printfflush(" (%08d: fsiz=%d rnum=%d)\n", i, dpfsiz(depot), dprnum(depot)); } } } if(!dpclose(depot)){ pdperror(name); return 1; } if(!err) printfflush("ok\n\n"); return err ? 1 : 0;}/* perform combo command */int docombo(const char *name){ DEPOT *depot; char buf[RECBUFSIZ], wbuf[RECBUFSIZ], *vbuf; int i, len, wlen, vsiz; printfflush("<Combination Test>\n name=%s\n\n", name); printfflush("Creating a database with bnum 3 ... "); if(!(depot = dpopen(name, DP_OWRITER | DP_OCREAT | DP_OTRUNC, 3))){ pdperror(name); return 1; } printfflush("ok\n"); printfflush("Setting alignment as 16 ... "); if(!dpsetalign(depot, 16)){ pdperror(name); dpclose(depot); return 1; } printfflush("ok\n"); printfflush("Adding 20 records ... "); for(i = 1; i <= 20; i++){ len = sprintf(buf, "%08d", i); if(!dpput(depot, buf, len, buf, len, DP_DOVER)){ pdperror(name); dpclose(depot); return 1; } } printfflush("ok\n"); printfflush("Checking records ... "); for(i = 1; i <= 20; i++){ len = sprintf(buf, "%08d", i); if(!(vbuf = dpget(depot, buf, len, 0, -1, &vsiz))){ pdperror(name); dpclose(depot); return 1; } free(vbuf); if(vsiz != dpvsiz(depot, buf, len)){ fprintf(stderr, "%s: %s: invalid vsiz\n", progname, name); dpclose(depot); return 1; } } printfflush("ok\n"); printfflush("Overwriting top 10 records without moving rooms ... "); for(i = 1; i <= 10; i++){ len = sprintf(buf, "%08d", i); if(!dpput(depot, buf, len, buf, len, DP_DOVER)){ pdperror(name); dpclose(depot); return 1; } } printfflush("ok\n"); printfflush("Overwriting top 5 records with moving rooms ... "); for(i = 1; i <= 5; i++){ len = sprintf(buf, "%08d", i); wlen = sprintf(wbuf, "%024d", i); if(!dpput(depot, buf, len, wbuf, wlen, DP_DOVER)){ pdperror(name); dpclose(depot); return 1; } } printfflush("ok\n"); printfflush("Overwriting top 15 records in concatenation with moving rooms ... "); for(i = 1; i <= 15; i++){ len = sprintf(buf, "%08d", i); wlen = sprintf(wbuf, "========================"); if(!dpput(depot, buf, len, wbuf, wlen, DP_DCAT)){ pdperror(name); dpclose(depot); return 1; } } printfflush("ok\n"); printfflush("Checking records ... "); for(i = 1; i <= 20; i++){ len = sprintf(buf, "%08d", i); if(!(vbuf = dpget(depot, buf, len, 0, -1, &vsiz))){ pdperror(name); dpclose(depot); return 1; } free(vbuf); if(vsiz != dpvsiz(depot, buf, len)){ fprintf(stderr, "%s: %s: invalid vsiz\n", progname, name); dpclose(depot); return 1; } } printfflush("ok\n"); printfflush("Deleting top 10 records ... "); for(i = 1; i <= 10; i++){ len = sprintf(buf, "%08d", i); if(!dpout(depot, buf, len)){ pdperror(name); dpclose(depot); return 1; } } printfflush("ok\n"); printfflush("Checking deleted records ... "); for(i = 1; i <= 10; i++){ len = sprintf(buf, "%08d", i); vbuf = dpget(depot, buf, len, 0, -1, &vsiz); free(vbuf); if(vbuf || dpecode != DP_ENOITEM){ fprintf(stderr, "%s: %s: deleting failed\n", progname, name); dpclose(depot); return 1; } } printfflush("ok\n"); printfflush("Overwriting top 15 records in concatenation with moving rooms ... "); for(i = 1; i <= 15; i++){ len = sprintf(buf, "%08d", i); wlen = sprintf(wbuf, "========================"); if(!dpput(depot, buf, len, wbuf, wlen, DP_DCAT)){ pdperror(name); dpclose(depot); return 1; } } printfflush("ok\n"); printfflush("Checking records ... "); for(i = 1; i <= 20; i++){ len = sprintf(buf, "%08d", i); if(!(vbuf = dpget(depot, buf, len, 0, -1, &vsiz))){ pdperror(name); dpclose(depot); return 1; } free(vbuf); if(vsiz != dpvsiz(depot, buf, len)){ fprintf(stderr, "%s: %s: invalid vsiz\n", progname, name); dpclose(depot); return 1; } } printfflush("ok\n"); printfflush("Optimizing the database ... "); if(!dpoptimize(depot, -1)){ pdperror(name); dpclose(depot); return 1; } printfflush("ok\n"); printfflush("Checking records ... "); for(i = 1; i <= 20; i++){ len = sprintf(buf, "%08d", i); if(!(vbuf = dpget(depot, buf, len, 0, -1, &vsiz))){ pdperror(name); dpclose(depot); return 1; } free(vbuf); if(vsiz != dpvsiz(depot, buf, len)){ fprintf(stderr, "%s: %s: invalid vsiz\n", progname, name); dpclose(depot); return 1; } } printfflush("ok\n"); printfflush("Closing the database ... "); if(!dpclose(depot)){ pdperror(name); return 1; } printfflush("ok\n"); printfflush("all ok\n\n"); return 0;}/* perform wicked command */int dowicked(const char *name, int rnum){ DEPOT *depot; int i, len, err; char buf[RECBUFSIZ], *val; printfflush("<Wicked Writing Test>\n name=%s rnum=%d\n\n", name, rnum); err = FALSE; if(!(depot = dpopen(name, DP_OWRITER | DP_OCREAT | DP_OTRUNC, rnum / 10))){ pdperror(name); return 1; } if(!dpsetalign(depot, 16)){ pdperror(name); err = TRUE; } for(i = 1; i <= rnum; i++){ len = sprintf(buf, "%08d", myrand() % rnum + 1); switch(myrand() % 16){ case 0: putchar('O'); if(!dpput(depot, buf, len, buf, len, DP_DOVER)) err = TRUE; break; case 1: putchar('K'); if(!dpput(depot, buf, len, buf, len, DP_DKEEP) && dpecode != DP_EKEEP) err = TRUE; break; case 2: putchar('D'); if(!dpout(depot, buf, len) && dpecode != DP_ENOITEM) err = TRUE; break; case 3: putchar('V'); if(dpvsiz(depot, buf, len) == -1 && dpecode != DP_ENOITEM) err = TRUE; break; default: putchar('C'); if(!dpput(depot, buf, len, buf, len, DP_DCAT)) err = TRUE; break; } if(i % 50 == 0) printfflush(" (%08d)\n", i); if(err){ pdperror(name); break; } } if(!dpoptimize(depot, -1)){ pdperror(name); err = TRUE; } for(i = 1; i <= rnum; i++){ len = sprintf(buf, "%08d", i); if(!dpput(depot, buf, len, ":", -1, DP_DCAT)){ pdperror(name); err = TRUE; break; } putchar(':'); if(i % 50 == 0) printfflush(" (%08d)\n", i); } if(!dpoptimize(depot, -1)){ pdperror(name); err = TRUE; } for(i = 1; i <= rnum; i++){ len = sprintf(buf, "%08d", i); if(!(val = dpget(depot, buf, len, 0, -1, NULL))){ pdperror(name); err = TRUE; break; } free(val); putchar('='); if(i % 50 == 0) printfflush(" (%08d)\n", i); } if(!dpiterinit(depot)){ pdperror(name); err = TRUE; } for(i = 1; i <= rnum; i++){ if(!(val = dpiternext(depot, NULL))){ pdperror(name); err = TRUE; break; } free(val); putchar('@'); if(i % 50 == 0) printfflush(" (%08d)\n", i); } if(!dpclose(depot)){ pdperror(name); return 1; } if(!err) printfflush("ok\n\n"); return err ? 1 : 0;}/* END OF FILE */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -