Path: | tcatest.rb |
Last Update: | Sun Sep 19 11:46:52 +0200 2010 |
print error message of abstract database
# File tcatest.rb, line 57 57: def eprint(adb, func) 58: path = adb.path 59: STDERR.printf("%s: %s: %s: error\n", $progname, path ? path : "-", func) 60: end
main routine
# File tcatest.rb, line 24 24: def main 25: ARGV.length >= 1 || usage 26: if ARGV[0] == "write" 27: rv = runwrite 28: elsif ARGV[0] == "read" 29: rv = runread 30: elsif ARGV[0] == "remove" 31: rv = runremove 32: elsif ARGV[0] == "misc" 33: rv = runmisc 34: else 35: usage 36: end 37: GC.start 38: return rv 39: end
perform misc command
# File tcatest.rb, line 260 260: def procmisc(name, rnum) 261: printf("<Miscellaneous Test>\n name=%s rnum=%d\n\n", name, rnum) 262: err = false 263: stime = Time.now 264: adb = ADB::new 265: if !adb.open(name) 266: eprint(adb, "open") 267: err = true 268: end 269: printf("writing:\n") 270: for i in 1..rnum 271: buf = sprintf("%08d", i) 272: if !adb.put(buf, buf) 273: eprint(adb, "put") 274: err = true 275: break 276: end 277: if rnum > 250 && i % (rnum / 250) == 0 278: print('.') 279: if i == rnum || i % (rnum / 10) == 0 280: printf(" (%08d)\n", i) 281: end 282: end 283: end 284: printf("reading:\n") 285: for i in 1..rnum 286: buf = sprintf("%08d", i) 287: if !adb.get(buf) 288: eprint(adb, "get") 289: err = true 290: break 291: end 292: if rnum > 250 && i % (rnum / 250) == 0 293: print('.') 294: if i == rnum || i % (rnum / 10) == 0 295: printf(" (%08d)\n", i) 296: end 297: end 298: end 299: printf("removing:\n") 300: for i in 1..rnum 301: buf = sprintf("%08d", i) 302: if rand(2) == 0 && !adb.out(buf) 303: eprint(adb, "out") 304: err = true 305: break 306: end 307: if rnum > 250 && i % (rnum / 250) == 0 308: print('.') 309: if i == rnum || i % (rnum / 10) == 0 310: printf(" (%08d)\n", i) 311: end 312: end 313: end 314: printf("checking iterator:\n") 315: if !adb.iterinit 316: eprint(adb, "iterinit") 317: err = true 318: end 319: inum = 0 320: while key = adb.iternext 321: value = adb.get(key) 322: if !value 323: eprint(adb, "get") 324: err = true 325: end 326: if inum > 0 && rnum > 250 && inum % (rnum / 250) == 0 327: print('.') 328: if inum == rnum || inum % (rnum / 10) == 0 329: printf(" (%08d)\n", inum) 330: end 331: end 332: inum += 1 333: end 334: printf(" (%08d)\n", inum) if rnum > 250 335: if inum != adb.rnum 336: eprint(adb, "(validation)") 337: err = true 338: end 339: keys = adb.fwmkeys("0", 10) 340: if adb.rnum >= 10 && keys.size != 10 341: eprint(adb, "fwmkeys") 342: err = true 343: end 344: printf("checking counting:\n") 345: for i in 1..rnum 346: buf = sprintf("[%d]", rand(rnum)) 347: if rand(2) == 0 348: adb.addint(buf, 1) 349: else 350: adb.adddouble(buf, 1) 351: end 352: if i > 0 && rnum > 250 && i % (rnum / 250) == 0 353: print('.') 354: if i == rnum || i % (rnum / 10) == 0 355: printf(" (%08d)\n", i) 356: end 357: end 358: end 359: printf("checking versatile functions:\n") 360: for i in 1..rnum 361: rnd = rand(3) 362: if rnd == 0 363: name = "putlist" 364: elsif rnd == 1 365: name = "outlist" 366: else 367: name = "getlist" 368: end 369: if !adb.misc(name, [rand(rnum), rand(rnum)]) 370: eprint(adb, "(validation)") 371: err = true 372: end 373: if i > 0 && rnum > 250 && i % (rnum / 250) == 0 374: print('.') 375: if i == rnum || i % (rnum / 10) == 0 376: printf(" (%08d)\n", i) 377: end 378: end 379: end 380: if !adb.sync 381: eprint(adb, "sync") 382: err = true 383: end 384: if !adb.optimize 385: eprint(adb, "optimize") 386: err = true 387: end 388: npath = adb.path + "-tmp" 389: if !adb.copy(npath) 390: eprint(adb, "copy") 391: err = true 392: end 393: File::unlink(npath) 394: if !adb.vanish 395: eprint(adb, "vanish") 396: err = true 397: end 398: printf("checking transaction commit:\n") 399: if !adb.tranbegin 400: eprint(adb, "tranbegin") 401: err = true 402: end 403: for i in 1..rnum 404: buf = sprintf("%d", rand(rnum)) 405: if rand(2) == 0 406: if !adb.putcat(buf, buf) 407: eprint(adb, "putcat") 408: err = true 409: break 410: end 411: else 412: adb.out(buf) 413: end 414: if rnum > 250 && i % (rnum / 250) == 0 415: print('.') 416: if i == rnum || i % (rnum / 10) == 0 417: printf(" (%08d)\n", i) 418: end 419: end 420: end 421: if !adb.trancommit 422: eprint(adb, "trancommit") 423: err = true 424: end 425: printf("checking transaction abort:\n") 426: ornum = adb.rnum 427: osize = adb.size 428: if !adb.tranbegin 429: eprint(adb, "tranbegin") 430: err = true 431: end 432: for i in 1..rnum 433: buf = sprintf("%d", rand(rnum)) 434: if rand(2) == 0 435: if !adb.putcat(buf, buf) 436: eprint(adb, "putcat") 437: err = true 438: break 439: end 440: else 441: adb.out(buf) 442: end 443: if rnum > 250 && i % (rnum / 250) == 0 444: print('.') 445: if i == rnum || i % (rnum / 10) == 0 446: printf(" (%08d)\n", i) 447: end 448: end 449: end 450: if !adb.tranabort 451: eprint(adb, "trancommit") 452: err = true 453: end 454: if adb.rnum != ornum || adb.size != osize 455: eprint(adb, "(validation)") 456: err = true 457: end 458: printf("checking hash-like updating:\n") 459: for i in 1..rnum 460: buf = sprintf("[%d]", rand(rnum)) 461: rnd = rand(4) 462: if rnd == 0 463: adb[buf] = buf 464: elsif rnd == 1 465: value = adb[buf] 466: elsif rnd == 2 467: res = adb.key?(buf) 468: elsif rnd == 3 469: adb.delete(buf) 470: end 471: if rnum > 250 && i % (rnum / 250) == 0 472: print('.') 473: if i == rnum || i % (rnum / 10) == 0 474: printf(" (%08d)\n", i) 475: end 476: end 477: end 478: printf("checking hash-like iterator:\n") 479: inum = 0 480: adb.each do |tkey, tvalue| 481: if inum > 0 && rnum > 250 && inum % (rnum / 250) == 0 482: print('.') 483: if inum == rnum || inum % (rnum / 10) == 0 484: printf(" (%08d)\n", inum) 485: end 486: end 487: inum += 1 488: end 489: printf(" (%08d)\n", inum) if rnum > 250 490: adb.clear 491: printf("record number: %d\n", adb.rnum) 492: printf("size: %d\n", adb.size) 493: if !adb.close 494: eprint(adb, "close") 495: err = true 496: end 497: printf("time: %.3f\n", Time.now - stime) 498: printf("%s\n\n", err ? "error" : "ok") 499: return err ? 1 : 0 500: end
perform read command
# File tcatest.rb, line 186 186: def procread(name) 187: printf("<Reading Test>\n name=%s\n\n", name) 188: err = false 189: stime = Time.now 190: adb = ADB::new 191: if !adb.open(name) 192: eprint(adb, "open") 193: err = true 194: end 195: rnum = adb.rnum 196: for i in 1..rnum 197: buf = sprintf("%08d", i) 198: if !adb.get(buf) 199: eprint(adb, "get") 200: err = true 201: break 202: end 203: if rnum > 250 && i % (rnum / 250) == 0 204: print('.') 205: if i == rnum || i % (rnum / 10) == 0 206: printf(" (%08d)\n", i) 207: end 208: end 209: end 210: printf("record number: %d\n", adb.rnum) 211: printf("size: %d\n", adb.size) 212: if !adb.close 213: eprint(adb, "close") 214: err = true 215: end 216: printf("time: %.3f\n", Time.now - stime) 217: printf("%s\n\n", err ? "error" : "ok") 218: return err ? 1 : 0 219: end
perform remove command
# File tcatest.rb, line 223 223: def procremove(name) 224: printf("<Removing Test>\n name=%s\n\n", name) 225: err = false 226: stime = Time.now 227: adb = ADB::new 228: if !adb.open(name) 229: eprint(adb, "open") 230: err = true 231: end 232: rnum = adb.rnum 233: for i in 1..rnum 234: buf = sprintf("%08d", i) 235: if !adb.out(buf) 236: eprint(adb, "out") 237: err = true 238: break 239: end 240: if rnum > 250 && i % (rnum / 250) == 0 241: print('.') 242: if i == rnum || i % (rnum / 10) == 0 243: printf(" (%08d)\n", i) 244: end 245: end 246: end 247: printf("record number: %d\n", adb.rnum) 248: printf("size: %d\n", adb.size) 249: if !adb.close 250: eprint(adb, "close") 251: err = true 252: end 253: printf("time: %.3f\n", Time.now - stime) 254: printf("%s\n\n", err ? "error" : "ok") 255: return err ? 1 : 0 256: end
perform write command
# File tcatest.rb, line 150 150: def procwrite(name, rnum) 151: printf("<Writing Test>\n name=%s rnum=%d\n\n", name, rnum) 152: err = false 153: stime = Time.now 154: adb = ADB::new 155: if !adb.open(name) 156: eprint(adb, "open") 157: err = true 158: end 159: for i in 1..rnum 160: buf = sprintf("%08d", i) 161: if !adb.put(buf, buf) 162: eprint(adb, "put") 163: err = true 164: break 165: end 166: if rnum > 250 && i % (rnum / 250) == 0 167: print('.') 168: if i == rnum || i % (rnum / 10) == 0 169: printf(" (%08d)\n", i) 170: end 171: end 172: end 173: printf("record number: %d\n", adb.rnum) 174: printf("size: %d\n", adb.size) 175: if !adb.close 176: eprint(adb, "close") 177: err = true 178: end 179: printf("time: %.3f\n", Time.now - stime) 180: printf("%s\n\n", err ? "error" : "ok") 181: return err ? 1 : 0 182: end
parse arguments of misc command
# File tcatest.rb, line 127 127: def runmisc 128: name = nil 129: rnum = nil 130: i = 1 131: while i < ARGV.length 132: if !name && ARGV[i] =~ /^-/ 133: usage 134: elsif !name 135: name = ARGV[i] 136: elsif !rnum 137: rnum = ARGV[i].to_i 138: else 139: usage 140: end 141: i += 1 142: end 143: usage if !name || !rnum || rnum < 1 144: rv = procmisc(name, rnum) 145: return rv 146: end
parse arguments of read command
# File tcatest.rb, line 87 87: def runread 88: name = nil 89: i = 1 90: while i < ARGV.length 91: if !name && ARGV[i] =~ /^-/ 92: usage 93: elsif !name 94: name = ARGV[i] 95: else 96: usage 97: end 98: i += 1 99: end 100: usage if !name 101: rv = procread(name) 102: return rv 103: end
parse arguments of remove command
# File tcatest.rb, line 107 107: def runremove 108: name = nil 109: i = 1 110: while i < ARGV.length 111: if !name && ARGV[i] =~ /^-/ 112: usage 113: elsif !name 114: name = ARGV[i] 115: else 116: usage 117: end 118: i += 1 119: end 120: usage if !name 121: rv = procremove(name) 122: return rv 123: end
parse arguments of write command
# File tcatest.rb, line 64 64: def runwrite 65: name = nil 66: rnum = nil 67: i = 1 68: while i < ARGV.length 69: if !name && ARGV[i] =~ /^-/ 70: usage 71: elsif !name 72: name = ARGV[i] 73: elsif !rnum 74: rnum = ARGV[i].to_i 75: else 76: usage 77: end 78: i += 1 79: end 80: usage if !name || !rnum || rnum < 1 81: rv = procwrite(name, rnum) 82: return rv 83: end
print the usage and exit
# File tcatest.rb, line 43 43: def usage 44: STDERR.printf("%s: test cases of the abstract database API\n", $progname) 45: STDERR.printf("\n") 46: STDERR.printf("usage:\n") 47: STDERR.printf(" %s write name rnum\n", $progname) 48: STDERR.printf(" %s read name\n", $progname) 49: STDERR.printf(" %s remove name\n", $progname) 50: STDERR.printf(" %s misc name rnum\n", $progname) 51: STDERR.printf("\n") 52: exit(1) 53: end