📄 crtest.c
字号:
len = sprintf(buf, "%08d", i); if(lob){ if(!(val = crgetlob(curia, buf, len, 0, -1, NULL))){ pdperror(name); err = TRUE; break; } } else { if(!(val = crget(curia, buf, len, 0, -1, NULL))){ pdperror(name); err = TRUE; break; } } free(val); /* print progression */ if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0){ printfflush(" (%08d)\n", i); } } } /* close the database */ if(!crclose(curia)){ 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 dnum, int pnum, int align){ CURIA *curia; int i, err, len; char buf[RECBUFSIZ]; printfflush("<Random Writing Test>\n name=%s rnum=%d bnum=%d dnum=%d pnum=%d align=%d\n\n", name, rnum, bnum, dnum, pnum, align); if(!(curia = cropen(name, CR_OWRITER | CR_OCREAT | CR_OTRUNC, bnum, dnum))){ pdperror(name); return 1; } if(!crsetalign(curia, align)){ pdperror(name); crclose(curia); return 1; } err = FALSE; for(i = 1; i <= rnum; i++){ len = sprintf(buf, "%08d", myrand() % pnum + 1); if(!crput(curia, buf, len, buf, len, CR_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, crfsiz(curia), crrnum(curia)); } } } if(!crclose(curia)){ pdperror(name); return 1; } if(!err) printfflush("ok\n\n"); return err ? 1 : 0;}/* perform combo command */int docombo(const char *name){ CURIA *curia; 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(!(curia = cropen(name, CR_OWRITER | CR_OCREAT | CR_OTRUNC, 3, 3))){ pdperror(name); return 1; } printfflush("ok\n"); printfflush("Setting alignment as 16 ... "); if(!crsetalign(curia, 16)){ pdperror(name); crclose(curia); return 1; } printfflush("ok\n"); printfflush("Adding 20 records ... "); for(i = 1; i <= 20; i++){ len = sprintf(buf, "%08d", i); if(!crput(curia, buf, len, buf, len, CR_DOVER)){ pdperror(name); crclose(curia); return 1; } } printfflush("ok\n"); printfflush("Checking records ... "); for(i = 1; i <= 20; i++){ len = sprintf(buf, "%08d", i); if(!(vbuf = crget(curia, buf, len, 0, -1, &vsiz))){ pdperror(name); crclose(curia); return 1; } free(vbuf); if(vsiz != crvsiz(curia, buf, len)){ fprintf(stderr, "%s: %s: invalid vsiz\n", progname, name); crclose(curia); 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(!crput(curia, buf, len, buf, len, CR_DOVER)){ pdperror(name); crclose(curia); 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(!crput(curia, buf, len, wbuf, wlen, CR_DOVER)){ pdperror(name); crclose(curia); 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(!crput(curia, buf, len, wbuf, wlen, CR_DCAT)){ pdperror(name); crclose(curia); return 1; } } printfflush("ok\n"); printfflush("Checking records ... "); for(i = 1; i <= 20; i++){ len = sprintf(buf, "%08d", i); if(!(vbuf = crget(curia, buf, len, 0, -1, &vsiz))){ pdperror(name); crclose(curia); return 1; } free(vbuf); if(vsiz != crvsiz(curia, buf, len)){ fprintf(stderr, "%s: %s: invalid vsiz\n", progname, name); crclose(curia); return 1; } } printfflush("ok\n"); printfflush("Deleting top 10 records ... "); for(i = 1; i <= 10; i++){ len = sprintf(buf, "%08d", i); if(!crout(curia, buf, len)){ pdperror(name); crclose(curia); return 1; } } printfflush("ok\n"); printfflush("Checking deleted records ... "); for(i = 1; i <= 10; i++){ len = sprintf(buf, "%08d", i); vbuf = crget(curia, buf, len, 0, -1, &vsiz); free(vbuf); if(vbuf || dpecode != DP_ENOITEM){ fprintf(stderr, "%s: %s: deleting failed\n", progname, name); crclose(curia); 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(!crput(curia, buf, len, wbuf, wlen, CR_DCAT)){ pdperror(name); crclose(curia); return 1; } } printfflush("ok\n"); printfflush("Checking records ... "); for(i = 1; i <= 20; i++){ len = sprintf(buf, "%08d", i); if(!(vbuf = crget(curia, buf, len, 0, -1, &vsiz))){ pdperror(name); crclose(curia); return 1; } free(vbuf); if(vsiz != crvsiz(curia, buf, len)){ fprintf(stderr, "%s: %s: invalid vsiz\n", progname, name); crclose(curia); return 1; } } printfflush("ok\n"); printfflush("Optimizing the database ... "); if(!croptimize(curia, -1)){ pdperror(name); crclose(curia); return 1; } printfflush("ok\n"); printfflush("Checking records ... "); for(i = 1; i <= 20; i++){ len = sprintf(buf, "%08d", i); if(!(vbuf = crget(curia, buf, len, 0, -1, &vsiz))){ pdperror(name); crclose(curia); return 1; } free(vbuf); if(vsiz != crvsiz(curia, buf, len)){ fprintf(stderr, "%s: %s: invalid vsiz\n", progname, name); crclose(curia); return 1; } } printfflush("ok\n"); printfflush("Closing database ... "); if(!crclose(curia)){ pdperror(name); return 1; } printfflush("ok\n"); printfflush("all ok\n\n"); return 0;}/* perform wicked command */int dowicked(const char *name, int rnum){ CURIA *curia; int i, len, err; char buf[RECBUFSIZ], *val; printfflush("<Wicked Writing Test>\n name=%s rnum=%d\n\n", name, rnum); err = FALSE; if(!(curia = cropen(name, CR_OWRITER | CR_OCREAT | CR_OTRUNC, rnum / 10, 5))){ pdperror(name); return 1; } if(!crsetalign(curia, 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(!crput(curia, buf, len, buf, len, CR_DOVER)) err = TRUE; break; case 1: putchar('K'); if(!crput(curia, buf, len, buf, len, CR_DKEEP) && dpecode != DP_EKEEP) err = TRUE; break; case 2: putchar('D'); if(!crout(curia, buf, len) && dpecode != DP_ENOITEM) err = TRUE; break; case 3: putchar('V'); if(crvsiz(curia, buf, len) == -1 && dpecode != DP_ENOITEM) err = TRUE; break; default: putchar('C'); if(!crput(curia, buf, len, buf, len, CR_DCAT)) err = TRUE; break; } if(i % 50 == 0) printfflush(" (%08d)\n", i); if(err){ pdperror(name); break; } } if(!croptimize(curia, -1)){ pdperror(name); err = TRUE; } for(i = 1; i <= rnum; i++){ len = sprintf(buf, "%08d", i); if(!crput(curia, buf, len, ":", -1, CR_DCAT)){ pdperror(name); err = TRUE; break; } putchar(':'); if(i % 50 == 0) printfflush(" (%08d)\n", i); } if(!croptimize(curia, -1)){ pdperror(name); err = TRUE; } for(i = 1; i <= rnum; i++){ len = sprintf(buf, "%08d", i); if(!(val = crget(curia, buf, len, 0, -1, NULL))){ pdperror(name); err = TRUE; break; } free(val); putchar('='); if(i % 50 == 0) printfflush(" (%08d)\n", i); } if(!criterinit(curia)){ pdperror(name); err = TRUE; } for(i = 1; i <= rnum; i++){ if(!(val = criternext(curia, NULL))){ pdperror(name); err = TRUE; break; } free(val); putchar('@'); if(i % 50 == 0) printfflush(" (%08d)\n", i); } if(!crclose(curia)){ 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 + -