diff options
| author | Ken Raeburn <raeburn@mit.edu> | 2005-10-04 23:38:37 +0000 |
|---|---|---|
| committer | Ken Raeburn <raeburn@mit.edu> | 2005-10-04 23:38:37 +0000 |
| commit | 745cddfcd791359ff5ae5c2f33db3b196f6df481 (patch) | |
| tree | 4a5081d158f5f0e3ec784b1c2190d9870dceaa41 /src/util/db2/test | |
| parent | a6759444a5cc94637576e92cf425efda13a791ea (diff) | |
| download | krb5-745cddfcd791359ff5ae5c2f33db3b196f6df481.tar.gz krb5-745cddfcd791359ff5ae5c2f33db3b196f6df481.tar.xz krb5-745cddfcd791359ff5ae5c2f33db3b196f6df481.zip | |
Move the db2 library to the site of its one use, the kdb-db2 module.
Update configuration scripts, pathname make variables, etc., accordingly.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17407 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/util/db2/test')
25 files changed, 0 insertions, 4681 deletions
diff --git a/src/util/db2/test/ChangeLog b/src/util/db2/test/ChangeLog deleted file mode 100644 index cfcce7d7f..000000000 --- a/src/util/db2/test/ChangeLog +++ /dev/null @@ -1,74 +0,0 @@ -2004-08-27 Ken Raeburn <raeburn@mit.edu> - - * run.test (getnwords): Run data through "cat -v", because at - least one version of Debian Linux has an English dictionary with - Latin-1 characters and a "rev" that seems to default to some sort - of Unicode. - -2004-08-15 Ken Raeburn <raeburn@mit.edu> - - * run.test (getnwords): Rewrite to drop blank lines before - counting lines, not after. - -2004-08-12 Ken Raeburn <raeburn@mit.edu> - - * run.test (getnwords): New function. Uses sed to get N words - from $DICT as other functions did before, but discards blank - lines. - (test1, test2, test12, test13, test20): Call getnwords. - -2003-01-05 Sam Hartman <hartmans@mit.edu> - - * SEQ_TEST/t.c (main): Remove declaration of errno - -2002-08-29 Ken Raeburn <raeburn@mit.edu> - - * Makefile.in: Revert $(S)=>/ change, for Windows support. - -2002-08-23 Ken Raeburn <raeburn@mit.edu> - - * Makefile: Deleted. - - * Makefile.in: Change $(S)=>/ and $(U)=>.. globally. - -2002-08-23 Tom Yu <tlyu@mit.edu> - - * dbtest.c: Include btree.h if we're compiled with -DSTATISTICS. - - * Makefile.in: Add rules for bttest; also add a clean rule. - -2002-05-08 Ken Raeburn <raeburn@mit.edu> - - * dbtest.c: Test for __STDC__ defined, not nonzero, to decide - whether to use stdarg.h or varargs.h. - (err): Similarly for function signature. - -2002-02-19 Ken Raeburn <raeburn@mit.edu> - - * run.test: Use "/bin/." instead of "/bin" in find commands in - case /bin itself is a symlink. - (test8): Check exit status of dbtest program. - - * dbtest.c (compare): Exit with error indication if comparison of - contents indicates a difference. - (get): Exit with error indication after printing message if key - not found. - -2002-01-04 Ken Raeburn <raeburn@mit.edu> - - * run.test (test8): If test reports an error, exit with error - indication. - - * dbtest.c (compare): Exit with error indication if size - comparison fails. - -2000-06-26 Ken Raeburn <raeburn@mit.edu> - - * dbtest.c (err): Add format attribute to decl, for typechecking - under GNU C. - -1998-05-06 Theodore Ts'o <tytso@rsts-11.mit.edu> - - * dbtest.c (main): POSIX states that getopt returns -1 - when it is done parsing options, not EOF. - diff --git a/src/util/db2/test/Makefile.in b/src/util/db2/test/Makefile.in deleted file mode 100644 index 18d366ca8..000000000 --- a/src/util/db2/test/Makefile.in +++ /dev/null @@ -1,33 +0,0 @@ -thisconfigdir=./.. -myfulldir=util/db2/test -mydir=test -BUILDTOP=$(REL)..$(S)..$(S).. - -FCTSH = @FCTSH@ -TMPDIR=. - -LOCALINCLUDES= -I. -I$(srcdir)/../include -I../include -I$(srcdir)/../mpool \ - -I$(srcdir)/../btree -I$(srcdir)/../hash -I$(srcdir)/../db - -PROG_LIBPATH=-L$(TOPLIBD) -PROG_RPATH=$(KRB5_LIBDIR) - -KRB5_RUN_ENV= @KRB5_RUN_ENV@ - -all:: - -dbtest: dbtest.o $(DB_DEPLIB) - $(CC_LINK) -o $@ dbtest.o $(STRERROR_OBJ) $(DB_LIB) - -check:: dbtest - $(KRB5_RUN_ENV) srcdir=$(srcdir) TMPDIR=$(TMPDIR) $(FCTSH) $(srcdir)/run.test - -bttest.o: $(srcdir)/btree.tests/main.c - $(CC) $(ALL_CFLAGS) -c $(srcdir)/btree.tests/main.c -o $@ - -bttest: bttest.o $(DB_DEPLIB) - $(CC_LINK) -o $@ bttest.o $(STRERROR_OBJ) $(DB_LIB) - -clean-unix:: - $(RM) dbtest.o dbtest __dbtest - $(RM) bttest.o bttest diff --git a/src/util/db2/test/README b/src/util/db2/test/README deleted file mode 100644 index 0c0cd13d8..000000000 --- a/src/util/db2/test/README +++ /dev/null @@ -1,74 +0,0 @@ -# @(#)README 8.8 (Berkeley) 7/31/94 - -To build this portably, try something like: - - make PORTDIR="../PORT/MACH" - -where MACH is the machine, i.e. "sunos.4.1.1". - -To run the tests, enter "sh run.test". If your system dictionary isn't -in /usr/share/dict/words, edit run.test to reflect the correct place. - -Fairly large files (the command files) are built in this directory during -the test runs, and even larger files (the database files) are created in -"/var/tmp". If the latter directory doesn't exist, set the environmental -variable TMPDIR to a directory where the files can be built. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -The script file consists of lines with an initial character which is -the command for that line, or an initial character indicating a key -or data entry for a previous command. - -Legal command characters are as follows: - -c: compare a record - + must be followed by [kK][dD]; the data value in the database - associated with the specified key is compared to the specified - data value. -e: echo a string - + writes out the rest of the line into the output file; if the - last character is not a carriage-return, a newline is appended. -f: set the flags for the next command - + no value zero's the flags -g: do a get command - + must be followed by [kK] - + writes out the retrieved data DBT. -o [r]: dump [reverse] - + dump the database out, if 'r' is set, in reverse order. -p: do a put command - + must be followed by [kK][dD] -r: do a del command - + must be followed by [kK] unless R_CURSOR flag set. -S: sync the database -s: do a seq command - + must be followed by [kK] if R_CURSOR flag set. - + writes out the retrieved data DBT. - -Legal key/data characters are as follows: - -D [file]: data file - + set the current data value to the contents of the file -d [data]: - + set the current key value to the contents of the line. -K [file]: key file - + set the current key value to the contents of the file -k [data]: - + set the current key value to the contents of the line. - -Blank lines, lines with leading white space, and lines with leading -hash marks (#) are ignored. - -Options to dbtest are as follows: - - -d: Set the DB_LOCK flag. - -f: Use the file argument as the database file. - -i: Use the rest of the argument to set elements in the info - structure. If the type is btree, then "-i cachesize=10240" - will set BTREEINFO.cachesize to 10240. - -o: The rest of the argument is the output file instead of - using stdout. - -s: Don't delete the database file before opening it, i.e. - use the database file from a previous run. - -Dbtest requires two arguments, the type of access "hash", "recno" -or "btree", and the script name or "-" to indicate stdin. diff --git a/src/util/db2/test/SEQ_TEST/data b/src/util/db2/test/SEQ_TEST/data deleted file mode 100644 index 37a518537..000000000 --- a/src/util/db2/test/SEQ_TEST/data +++ /dev/null @@ -1,8 +0,0 @@ -A000027875A000135891 -A000059165A000130168 -A000060256A000133490 -A040025906A000136770 -A040027881A000135829 -A040028611A000137873 -A040032413A000056974 -A040050163A000126233 diff --git a/src/util/db2/test/SEQ_TEST/mbox b/src/util/db2/test/SEQ_TEST/mbox deleted file mode 100644 index 9d5d49d07..000000000 --- a/src/util/db2/test/SEQ_TEST/mbox +++ /dev/null @@ -1,399 +0,0 @@ -From wiggans@aipl.arsusda.gov Mon Sep 12 11:05:58 1994 -Received: from vangogh.CS.Berkeley.EDU by python.bostic.com (8.6.9.Beta4/2.6) - id OAA16853; Mon, 12 Sep 1994 14:05:42 -0400 -From: wiggans@aipl.arsusda.gov -Received: from hofmann.CS.Berkeley.EDU (hofmann.CS.Berkeley.EDU [128.32.34.35]) by vangogh.CS.Berkeley.EDU (8.7.Alpha.1/8.6.9.Beta0) with ESMTP id LAA15825 for <bostic@vangogh.CS.Berkeley.EDU>; Mon, 12 Sep 1994 11:05:20 -0700 (PDT) -Received: from uu7.psi.com (uu7.psi.com [38.145.204.6]) by hofmann.CS.Berkeley.EDU (8.6.9/8.6.6.Beta11) with SMTP id LAA25681 for <bostic@cs.berkeley.edu>; Mon, 12 Sep 1994 11:05:44 -0700 -Received: from AIPL.ARSUSDA.GOV by uu7.psi.com (5.65b/4.0.071791-PSI/PSINet) via SMTP; - id AA00699 for bostic@cs.berkeley.edu; Mon, 12 Sep 94 14:06:15 -0400 -Received: by aipl.arsusda.gov (AIX 3.2/UCB 5.64/4.03) - id AA14802; Mon, 12 Sep 1994 14:05:48 -0400 -Message-Id: <9409121805.AA14802@aipl.arsusda.gov> -Subject: db 1.85 problem -To: bostic@cs.berkeley.edu (Keith Bostic) -Date: Mon, 12 Sep 1994 14:05:47 -0400 (EDT) -X-Mailer: ELM [version 2.4 PL22] -Content-Type: text -Content-Length: 2553 -Status: RO - -In using the btree option to sequentially read and then write a file, we -are having a problem with 1.85. When compiled with 1.73 there is no -problem. The problem is that the seq call keeps reading the same record. -The code follows: - -/* chkseq.c Check sequential read and write */ - -#include <stdio.h> -#include <sys/stat.h> -#include <string.h> -#include <stdlib.h> -#include <fcntl.h> /* O_CREAT, O_RDWR */ -#include <errno.h> /* Error numbers */ -#include <db.h> - -extern int errno; -extern char *sys_errlist[]; - -typedef struct idst { - char id1[7]; -} id; - -void cvtid(char *, char *); - -void main() { - char anim10[11], datastor[212],keystor[10], *pc; - int i; - long in = 0L; - DB *dbp, *dbpo; - DBT key, data, keyo, datao; - - if ((dbp = dbopen("bullxrf.db", O_RDWR, 0664 - , DB_BTREE, NULL )) == NULL) { - printf("\n Error on dbopen %d %s\n",errno,strerror(errno)); - exit(61); - } - key.size = 7; - keyo.size = 7; - - while (dbp->seq(dbp, &key, &data,R_NEXT) == 0) { - in++; - if (in > 20) break; -/* pc = (char *) key.data; -for (i=0;i<key.size;i++) printf("%02x",pc[i]); printf("\n"); */ - cvtid(anim10,key.data); printf("%s\n",anim10); - memcpy(keystor,key.data,key.size); -/* for (i=0;i<key.size;i++) printf("%02x",keystor[i]); printf("\n"); */ - memcpy(datastor,data.data,data.size); -/* for (i=0;i<8;i++) printf("%02x",datastor[i]); printf("\n"); */ - keyo.data = keystor; - datao.data = datastor; - datao.size = data.size; -/* - if (in % 1000 == 1) { - cvtid(anim10,key.data); printf("%5d %s\n",in,anim10); */ - if (dbp->put(dbp, &keyo, &datao,0) != 0) { - printf("Write failed at %d\n",in); - exit(85); - } -/* } - */ - } - printf("%d Records copied\n",in); - dbp->close(dbp); -} - -I am running on an RS/6000 AIX 3.2.5. The section of the make file -follows: - -# Make file -all: chkseq - -chkseq: chkseq.c - cc -gO3 -lm -o chkseq\ - -L /data6/hash/include/sys/lib -l db -I /data6/hash/include \ - chkseq.c cvtid.o ascii.o -# -L /data12/db.1.85 -l db -I /data12/db.1.85/include \ - -We would appreciate your help. -Thanks, - --- -George Wiggans I================================================I - |Animal Improvement Programs Laboratory | -Phone: 301-504-8407 |Bldg 263 Beltsville Agricultural Research Center| -FAX: 301-504-8092 |Beltsville, MD 20705-2350 USA | -wiggans@aipl.arsusda.gov | | -=========================I================================================I - -From wiggans@aipl.arsusda.gov Fri Sep 16 20:27:22 1994 -Received: from vangogh.CS.Berkeley.EDU by python.bostic.com (8.6.9.Beta4/2.6) - id XAA09260; Fri, 16 Sep 1994 23:27:09 -0400 -From: wiggans@aipl.arsusda.gov -Received: from hofmann.CS.Berkeley.EDU (hofmann.CS.Berkeley.EDU [128.32.34.35]) by vangogh.CS.Berkeley.EDU (8.7.Alpha.1/8.6.9.Beta0) with ESMTP id UAA25674 for <bostic@vangogh.CS.Berkeley.EDU>; Fri, 16 Sep 1994 20:27:03 -0700 (PDT) -Received: from uu7.psi.com (uu7.psi.com [38.145.204.6]) by hofmann.CS.Berkeley.EDU (8.6.9/8.6.6.Beta11) with SMTP id UAA15043 for <bostic@cs.berkeley.edu>; Fri, 16 Sep 1994 20:27:16 -0700 -Received: from AIPL.ARSUSDA.GOV by uu7.psi.com (5.65b/4.0.071791-PSI/PSINet) via SMTP; - id AA18737 for bostic@cs.berkeley.edu; Fri, 16 Sep 94 23:27:14 -0400 -Received: by aipl.arsusda.gov (AIX 3.2/UCB 5.64/4.03) - id AA10907; Fri, 16 Sep 1994 23:26:18 -0400 -Message-Id: <9409170326.AA10907@aipl.arsusda.gov> -Subject: Test case -To: bostic@cs.berkeley.edu (Keith Bostic) -Date: Fri, 16 Sep 1994 23:26:16 -0400 (EDT) -X-Mailer: ELM [version 2.4 PL22] -Content-Type: text -Content-Length: 3713 -Status: RO - -The following program loads 2 10 character animal ID which are used to -change an animal's ID. After loading, it closes, then opens and -sequentially reads and rewrites the file changing the first character of -the 2nd ID to U. Failure is observed when the update part gets stuck on -the first record, rereading it. The last step displays the updated file. -The name of the data file is a command line argument. - -The data: -A000027875A000135891 -A000059165A000130168 -A000060256A000133490 -A040025906A000136770 -A040027881A000135829 -A040028611A000137873 -A040032413A000056974 -A040050163A000126233 -A040050329A000126177 -A040050411A000119017 -A040050995A000116767 -A040051022A000126669 -A040051276A000127444 -A040051514A000120563 -A040051597A000127287 -A040051627A000127284 -A040051700A000126914 -A040051810A000127286 -A040051964A000118834 -A040052164A000135104 -A040052165A000127688 -A040052186A000126926 -A040052530A000126287 -A040052560A000119160 -A040052892A000125334 -A040053004A000127684 -A040053359A000128628 -A040053378A000137680 -A040053416A000128825 -A040053589A000120369 -A040053620A000128460 -A040053751A000123525 -A040053754A000126736 -A040054191A000126286 -A040054251A000121745 -A040054253A000127848 -A040054596A000130931 -A040054981A000128731 -A040055000A000127689 - -The program: -/* chkseq.c Check sequential read and write */ - -#include <stdio.h> -#include <sys/stat.h> -#include <string.h> -#include <stdlib.h> -#include <fcntl.h> /* O_CREAT, O_RDWR */ -#include <errno.h> /* Error numbers */ -#include <db.h> - -extern int errno; -extern char *sys_errlist[]; - - -void main(int argc, char *argv[]) { - char id1[] = {" "}, id2[] = {" "}; - int i; - long in = 0L, out = 0L; - DB *dbp, *dbpo; - DBT key, data, keyo, datao; - FILE *fopen(), *fin; - - if ((fin = fopen(argv[1],"r")) == NULL) { - printf("Unable to open %s\n",argv[1]); - exit(25); - } - if ((dbp = dbopen("test.db",O_RDWR | O_CREAT, 0664 - , DB_BTREE, NULL )) == NULL) { - printf("\n Open error on test.db %d %s\n",errno,strerror(errno)); - exit(25); - } - - while (fscanf(fin," %10s%10s",id1,id2) > 0) { - key.size = 11; - data.size = 11; - key.data = id1; - data.data = id2; - printf("%10s %10s\n",key.data,data.data); - if (dbp->put(dbp, &key, &data,R_NOOVERWRITE) != 0) { - printf("Error writing output\n"); - } - out++; - } - printf("%d Records in\n",out); - dbp->close(dbp); - - if ((dbp = dbopen("test.db", O_RDWR, 0664 - , DB_BTREE, NULL )) == NULL) { - printf("\n Error on dbopen %d %s\n",errno,strerror(errno)); - exit(61); - } - - while (dbp->seq(dbp, &key, &data,R_NEXT) == 0) { - strcpy(id1,key.data); - keyo.size = 11; - datao.size = 11; - keyo.data = id1; - strcpy(id2,data.data); - id2[0] = 'U'; - datao.data=id2; - printf("%10s %10s\n",key.data,data.data); - in++; - if (in > 50) break; - if (dbp->put(dbp, &keyo, &datao,0) != 0) { - printf("Write failed at %d\n",in); - exit(85); - } - } - printf("%d Records copied\n",in); - in = 0; - dbp->seq(dbp, &key, &data,R_FIRST); - printf("%10s %10s\n",key.data,data.data); - in++; - while (dbp->seq(dbp, &key, &data,R_NEXT) == 0) { - in++; - printf("%10s %10s\n",key.data,data.data); - } - printf("%d Records read\n",in); - dbp->close(dbp); -} - - --- -George Wiggans I================================================I - |Animal Improvement Programs Laboratory | -Phone: 301-504-8407 |Bldg 263 Beltsville Agricultural Research Center| -FAX: 301-504-8092 |Beltsville, MD 20705-2350 USA | -wiggans@aipl.arsusda.gov | | -=========================I================================================I - -From bostic Fri Sep 23 08:44:56 1994 -To: wiggans@aipl.arsusda.gov /usr/src/local/db/test/SEQ_TEST/mbox -Subject: Re: Test case - - -OK, I've attached a tentative patch for the bug, that appears -to fix it on my local system. Please let me know if you have -any further problems with this. - -There are a couple of issues here. The first, is that to some -extent, the btree code is correct. You aren't replacing the -cursor in your test program, you're adding a new key, which -just happens to be where the cursor was. So, the btree code -is doing you a favor by returning the new key as part of the -cursor walk, and it's not its fault. ;-} - -However, because a put to the cursor record is done using a -delete/add pair, doing it the "right" way will result in the -exact same behavior as you saw doing it "wrong". - -Thinking about this further, there's another bug that's going to -hit eventually -- if you have duplicate records, the current -scheme of doing delete/add to replace the cursor record can result -in a record being returned twice, which is tacky at best, if not -actually wrong. - -I think I may have to revisit how duplicate records are stored. -Which does not make me happy. ;-{ - ---keith - -*** db/btree/bt_seq.c.orig Fri Sep 23 08:35:06 1994 ---- db/btree/bt_seq.c Fri Sep 23 08:34:58 1994 -*************** -*** 35,41 **** - */ - - #if defined(LIBC_SCCS) && !defined(lint) -! static char sccsid[] = "@(#)bt_seq.c 8.7 (Berkeley) 7/20/94"; - #endif /* LIBC_SCCS and not lint */ - - #include <sys/types.h> ---- 35,41 ---- - */ - - #if defined(LIBC_SCCS) && !defined(lint) -! static char sccsid[] = "@(#)bt_seq.c 8.8 (Berkeley) 9/23/94"; - #endif /* LIBC_SCCS and not lint */ - - #include <sys/types.h> -*************** -*** 246,252 **** - PAGE *h; - indx_t index; - pgno_t pg; -! int exact; - - /* - * There are a couple of states that we can be in. The cursor has ---- 246,252 ---- - PAGE *h; - indx_t index; - pgno_t pg; -! int exact, rval; - - /* - * There are a couple of states that we can be in. The cursor has -*************** -*** 255,269 **** - c = &t->bt_cursor; - - /* -! * The cursor was deleted where there weren't any duplicate records, -! * so the key was saved. Find out where that key would go in the -! * current tree. It doesn't matter if the returned key is an exact -! * match or not -- if it's an exact match, the record was added after -! * the delete so we can just return it. If not, as long as there's -! * a record there, return it. - */ -! if (F_ISSET(c, CURS_ACQUIRE)) -! return (__bt_first(t, &c->key, ep, &exact)); - - /* Get the page referenced by the cursor. */ - if ((h = mpool_get(t->bt_mp, c->pg.pgno, 0)) == NULL) ---- 255,299 ---- - c = &t->bt_cursor; - - /* -! * The cursor was deleted and there weren't any duplicate records, -! * so the cursor's key was saved. Find out where that key would -! * be in the current tree. If the returned key is an exact match, -! * it means that a key/data pair was inserted into the tree after -! * the delete. We could reasonably return the key, but the problem -! * is that this is the access pattern we'll see if the user is -! * doing seq(..., R_NEXT)/put(..., 0) pairs, i.e. the put deletes -! * the cursor record and then replaces it, so the cursor was saved, -! * and we'll simply return the same "new" record until the user -! * notices and doesn't do a put() of it. Since the key is an exact -! * match, we could as easily put the new record before the cursor, -! * and we've made no guarantee to return it. So, move forward or -! * back a record if it's an exact match. -! * -! * XXX -! * In the current implementation, put's to the cursor are done with -! * delete/add pairs. This has two consequences. First, it means -! * that seq(..., R_NEXT)/put(..., R_CURSOR) pairs are going to exhibit -! * the same behavior as above. Second, you can return the same key -! * twice if you have duplicate records. The scenario is that the -! * cursor record is deleted, moving the cursor forward or backward -! * to a duplicate. The add then inserts the new record at a location -! * ahead of the cursor because duplicates aren't sorted in any way, -! * and the new record is later returned. This has to be fixed at some -! * point. - */ -! if (F_ISSET(c, CURS_ACQUIRE)) { -! if (rval = __bt_first(t, &c->key, ep, &exact)) -! return (RET_ERROR); -! if (!exact) -! return (rval); -! /* -! * XXX -! * Kluge -- get, release, get the page. -! */ -! c->pg.pgno = ep->page->pgno; -! c->pg.index = ep->index; -! mpool_put(t->bt_mp, ep->page, 0); -! } - - /* Get the page referenced by the cursor. */ - if ((h = mpool_get(t->bt_mp, c->pg.pgno, 0)) == NULL) - - - diff --git a/src/util/db2/test/SEQ_TEST/t.c b/src/util/db2/test/SEQ_TEST/t.c deleted file mode 100644 index f77b676f1..000000000 --- a/src/util/db2/test/SEQ_TEST/t.c +++ /dev/null @@ -1,85 +0,0 @@ -/* chkseq.c Check sequential read and write */ - -#include <sys/stat.h> -#include "db-int.h" -#include <errno.h> /* Error numbers */ -#include <fcntl.h> /* O_CREAT, O_RDWR */ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - - -void main(int argc, char *argv[]) { - char id1[] = {" "}, id2[] = {" "}; - int i; - long in = 0L, out = 0L; - DB *dbp, *dbpo; - DBT key, data, keyo, datao; - FILE *fopen(), *fin; - - unlink("test.db"); - if ((fin = fopen("data","r")) == NULL) { - printf("Unable to open %s\n","data"); - exit(25); - } - if ((dbp = dbopen("test.db",O_RDWR | O_CREAT | O_BINARY, 0664 - , DB_BTREE, NULL )) == NULL) { - printf("\n Open error on test.db %d %s\n",errno,strerror(errno)); - exit(25); - } - - while (fscanf(fin," %10s%10s",id1,id2) > 0) { - key.size = 11; - data.size = 11; - key.data = id1; - data.data = id2; - printf("%10s %10s\n",key.data,data.data); - if (dbp->put(dbp, &key, &data,R_NOOVERWRITE) != 0) { - printf("Error writing output\n"); - } - out++; - } - printf("%d Records in\n",out); - dbp->close(dbp); - - if ((dbp = dbopen("test.db", O_RDWR | O_BINARY, 0664 - , DB_BTREE, NULL )) == NULL) { - printf("\n Error on dbopen %d %s\n",errno,strerror(errno)); - exit(61); - } - - while (dbp->seq(dbp, &key, &data,R_NEXT) == 0) { - strcpy(id1,key.data); - keyo.size = 11; - datao.size = 11; - keyo.data = id1; - strcpy(id2,data.data); - id2[0] = 'U'; - datao.data=id2; - printf("%10s %10s\n",key.data,data.data); - in++; - if (in > 10) break; -#ifdef notdef - if (dbp->put(dbp, &keyo, &datao,0) != 0) { - printf("Write failed at %d\n",in); - exit(85); - } -#else - if (dbp->put(dbp, &keyo, &datao,R_CURSOR) != 0) { - printf("Write failed at %d\n",in); - exit(85); - } -#endif - } - printf("%d Records copied\n",in); - in = 0; - dbp->seq(dbp, &key, &data,R_FIRST); - printf("%10s %10s\n",key.data,data.data); - in++; - while (dbp->seq(dbp, &key, &data,R_NEXT) == 0) { - in++; - printf("%10s %10s\n",key.data,data.data); - } - printf("%d Records read\n",in); - dbp->close(dbp); -} diff --git a/src/util/db2/test/btree.tests/ChangeLog b/src/util/db2/test/btree.tests/ChangeLog deleted file mode 100644 index 339db618a..000000000 --- a/src/util/db2/test/btree.tests/ChangeLog +++ /dev/null @@ -1,17 +0,0 @@ -2002-08-23 Tom Yu <tlyu@mit.edu> - - * main.c: Disable append(); we don't have R_APPEND in this release - of DB for some reason. Disable load() due to lack of fgetline(). - Conditionalize lots of things on -DSTATISTICS or -DDEBUG as - appropriate. - (rlist): New function; does recursive listing of principals. - (main): Fix up naming of *_ENDIAN macros. Default to read-only - open, with new "-w" option for opening read/write. Actually call - db->sync with the correct number of arguments. - (show): Update call to __bt_dpage(). - (usage): Update. - -1998-05-06 Theodore Ts'o <tytso@rsts-11.mit.edu> - - * main.c (main): POSIX states that getopt returns -1 - when it is done parsing options, not EOF. diff --git a/src/util/db2/test/btree.tests/main.c b/src/util/db2/test/btree.tests/main.c deleted file mode 100644 index 06f02b3ad..000000000 --- a/src/util/db2/test/btree.tests/main.c +++ /dev/null @@ -1,832 +0,0 @@ -/*- - * Copyright (c) 1990, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Mike Olson. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ - -#include <sys/param.h> -#include <fcntl.h> -#include "db-int.h" -#include <errno.h> -#include <stdio.h> -#include <ctype.h> -#include <stdlib.h> -#include <string.h> -#include "btree.h" - -typedef struct cmd_table { - char *cmd; - int nargs; - int rconv; - void (*func) __P((DB *, char **)); - char *usage, *descrip; -} cmd_table; - -int stopstop; -DB *globaldb; - -#if 0 -void append __P((DB *, char **)); -#endif -#ifdef STATISTICS -void bstat __P((DB *, char **)); -#endif -void cursor __P((DB *, char **)); -void delcur __P((DB *, char **)); -void delete __P((DB *, char **)); -#ifdef DEBUG -void dump __P((DB *, char **)); -#endif -void first __P((DB *, char **)); -void get __P((DB *, char **)); -void help __P((DB *, char **)); -void iafter __P((DB *, char **)); -void ibefore __P((DB *, char **)); -void icursor __P((DB *, char **)); -void insert __P((DB *, char **)); -void keydata __P((DBT *, DBT *)); -void last __P((DB *, char **)); -void list __P((DB *, char **)); -#if 0 -void load __P((DB *, char **)); -#endif -#ifdef STATISTICS -void mstat __P((DB *, char **)); -#endif -void next __P((DB *, char **)); -int parse __P((char *, char **, int)); -void previous __P((DB *, char **)); -#ifdef DEBUG -void show __P((DB *, char **)); -#endif -void rlist __P((DB *, char **)); -void usage __P((void)); -void user __P((DB *)); - -cmd_table commands[] = { - "?", 0, 0, help, "help", NULL, -#if 0 - "a", 2, 1, append, "append key def", "append key with data def", -#endif -#ifdef STATISTICS - "b", 0, 0, bstat, "bstat", "stat btree", -#endif - "c", 1, 1, cursor, "cursor word", "move cursor to word", - "delc", 0, 0, delcur, "delcur", "delete key the cursor references", - "dele", 1, 1, delete, "delete word", "delete word", -#ifdef DEBUG - "d", 0, 0, dump, "dump", "dump database", -#endif - "f", 0, 0, first, "first", "move cursor to first record", - "g", 1, 1, get, "get key", "locate key", - "h", 0, 0, help, "help", "print command summary", - "ia", 2, 1, iafter, "iafter key data", "insert data after key", - "ib", 2, 1, ibefore, "ibefore key data", "insert data before key", - "ic", 2, 1, icursor, "icursor key data", "replace cursor", - "in", 2, 1, insert, "insert key def", "insert key with data def", - "la", 0, 0, last, "last", "move cursor to last record", - "li", 1, 1, list, "list file", "list to a file", -#if 0 - "loa", 1, 0, load, "load file", NULL, -#endif - "loc", 1, 1, get, "get key", NULL, -#ifdef STATISTICS - "m", 0, 0, mstat, "mstat", "stat memory pool", -#endif - "n", 0, 0, next, "next", "move cursor forward one record", - "p", 0, 0, previous, "previous", "move cursor back one record", - "q", 0, 0, NULL, "quit", "quit", - "rli", 1, 1, rlist, "rlist file", "list to a file (recursive)", -#ifdef DEBUG - "sh", 1, 0, show, "show page", "dump a page", -#endif - { NULL }, -}; - -int recno; /* use record numbers */ -char *dict = "words"; /* default dictionary */ -char *progname; - -int -main(argc, argv) - int argc; - char **argv; -{ - int c; - int omode; - DB *db; - BTREEINFO b; - - progname = *argv; - - omode = O_RDONLY; - b.flags = 0; - b.cachesize = 0; - b.maxkeypage = 0; - b.minkeypage = 0; - b.psize = 0; - b.compare = NULL; - b.prefix = NULL; - b.lorder = 0; - - while ((c = getopt(argc, argv, "bc:di:lp:ruw")) != -1) { - switch (c) { - case 'b': - b.lorder = DB_BIG_ENDIAN; - break; - case 'c': - b.cachesize = atoi(optarg); - break; - case 'd': - b.flags |= R_DUP; - break; - case 'i': - dict = optarg; - break; - case 'l': - b.lorder = DB_LITTLE_ENDIAN; - break; - case 'p': - b.psize = atoi(optarg); - break; - case 'r': - recno = 1; - break; - case 'u': - b.flags = 0; - break; - case 'w': - omode = O_RDWR; - break; - default: - usage(); - } - } - argc -= optind; - argv += optind; - - if (recno) - db = dbopen(*argv == NULL ? NULL : *argv, omode|O_BINARY, - 0, DB_RECNO, NULL); - else - db = dbopen(*argv == NULL ? NULL : *argv, O_CREAT|omode|O_BINARY, - 0600, DB_BTREE, &b); - - if (db == NULL) { - (void)fprintf(stderr, "dbopen: %s\n", strerror(errno)); - exit(1); - } - globaldb = db; - user(db); - exit(0); - /* NOTREACHED */ -} - -void -user(db) - DB *db; -{ - FILE *ifp; - int argc, i, last; - char *lbuf, *argv[4], buf[512]; - - if ((ifp = fopen("/dev/tty", "r")) == NULL) { - (void)fprintf(stderr, - "/dev/tty: %s\n", strerror(errno)); - exit(1); - } - for (last = 0;;) { - (void)printf("> "); - (void)fflush(stdout); - if ((lbuf = fgets(&buf[0], 512, ifp)) == NULL) - break; - if (lbuf[0] == '\n') { - i = last; - goto uselast; - } - lbuf[strlen(lbuf) - 1] = '\0'; - - if (lbuf[0] == 'q') - break; - - argc = parse(lbuf, &argv[0], 3); - if (argc == 0) - continue; - - for (i = 0; commands[i].cmd != NULL; i++) - if (strncmp(commands[i].cmd, argv[0], - strlen(commands[i].cmd)) == 0) - break; - - if (commands[i].cmd == NULL) { - (void)fprintf(stderr, - "%s: command unknown ('help' for help)\n", lbuf); - continue; - } - - if (commands[i].nargs != argc - 1) { - (void)fprintf(stderr, "usage: %s\n", commands[i].usage); - continue; - } - - if (recno && commands[i].rconv) { - static recno_t nlong; - nlong = atoi(argv[1]); - argv[1] = (char *)&nlong; - } -uselast: last = i; - (*commands[i].func)(db, argv); - } - if ((db->sync)(db, 0) == RET_ERROR) - perror("dbsync"); - else if ((db->close)(db) == RET_ERROR) - perror("dbclose"); -} - -int -parse(lbuf, argv, maxargc) - char *lbuf, **argv; - int maxargc; -{ - int argc = 0; - char *c; - - c = lbuf; - while (isspace(*c)) - c++; - while (*c != '\0' && argc < maxargc) { - *argv++ = c; - argc++; - while (!isspace(*c) && *c != '\0') { - c++; - } - while (isspace(*c)) - *c++ = '\0'; - } - return (argc); -} - -#if 0 -void -append(db, argv) - DB *db; - char **argv; -{ - DBT key, data; - int status; - - if (!recno) { - (void)fprintf(stderr, - "append only available for recno db's.\n"); - return; - } - key.data = argv[1]; - key.size = sizeof(recno_t); - data.data = argv[2]; - data.size = strlen(data.data); - status = (db->put)(db, &key, &data, R_APPEND); - switch (status) { - case RET_ERROR: - perror("append/put"); - break; - case RET_SPECIAL: - (void)printf("%s (duplicate key)\n", argv[1]); - break; - case RET_SUCCESS: - break; - } -} -#endif - -void -cursor(db, argv) - DB *db; - char **argv; -{ - DBT data, key; - int status; - - key.data = argv[1]; - if (recno) - key.size = sizeof(recno_t); - else - key.size = strlen(argv[1]) + 1; - status = (*db->seq)(db, &key, &data, R_CURSOR); - switch (status) { - case RET_ERROR: - perror("cursor/seq"); - break; - case RET_SPECIAL: - (void)printf("key not found\n"); - break; - case RET_SUCCESS: - keydata(&key, &data); - break; - } -} - -void -delcur(db, argv) - DB *db; - char **argv; -{ - int status; - - status = (*db->del)(db, NULL, R_CURSOR); - - if (status == RET_ERROR) - perror("delcur/del"); -} - -void -delete(db, argv) - DB *db; - char **argv; -{ - DBT key; - int status; - - key.data = argv[1]; - if (recno) - key.size = sizeof(recno_t); - else - key.size = strlen(argv[1]) + 1; - - status = (*db->del)(db, &key, 0); - switch (status) { - case RET_ERROR: - perror("delete/del"); - break; - case RET_SPECIAL: - (void)printf("key not found\n"); - break; - case RET_SUCCESS: - break; - } -} - -#ifdef DEBUG -void -dump(db, argv) - DB *db; - char **argv; -{ - __bt_dump(db); -} -#endif - -void -first(db, argv) - DB *db; - char **argv; -{ - DBT data, key; - int status; - - status = (*db->seq)(db, &key, &data, R_FIRST); - - switch (status) { - case RET_ERROR: - perror("first/seq"); - break; - case RET_SPECIAL: - (void)printf("no more keys\n"); - break; - case RET_SUCCESS: - keydata(&key, &data); - break; - } -} - -void -get(db, argv) - DB *db; - char **argv; -{ - DBT data, key; - int status; - - key.data = argv[1]; - if (recno) - key.size = sizeof(recno_t); - else - key.size = strlen(argv[1]) + 1; - - status = (*db->get)(db, &key, &data, 0); - - switch (status) { - case RET_ERROR: - perror("get/get"); - break; - case RET_SPECIAL: - (void)printf("key not found\n"); - break; - case RET_SUCCESS: - keydata(&key, &data); - break; - } -} - -void -help(db, argv) - DB *db; - char **argv; -{ - int i; - - for (i = 0; commands[i].cmd; i++) - if (commands[i].descrip) - (void)printf("%s: %s\n", - commands[i].usage, commands[i].descrip); -} - -void -iafter(db, argv) - DB *db; - char **argv; -{ - DBT key, data; - int status; - - if (!recno) { - (void)fprintf(stderr, - "iafter only available for recno db's.\n"); - return; - } - key.data = argv[1]; - key.size = sizeof(recno_t); - data.data = argv[2]; - data.size = strlen(data.data); - status = (db->put)(db, &key, &data, R_IAFTER); - switch (status) { - case RET_ERROR: - perror("iafter/put"); - break; - case RET_SPECIAL: - (void)printf("%s (duplicate key)\n", argv[1]); - break; - case RET_SUCCESS: - break; - } -} - -void -ibefore(db, argv) - DB *db; - char **argv; -{ - DBT key, data; - int status; - - if (!recno) { - (void)fprintf(stderr, - "ibefore only available for recno db's.\n"); - return; - } - key.data = argv[1]; - key.size = sizeof(recno_t); - data.data = argv[2]; - data.size = strlen(data.data); - status = (db->put)(db, &key, &data, R_IBEFORE); - switch (status) { - case RET_ERROR: - perror("ibefore/put"); - break; - case RET_SPECIAL: - (void)printf("%s (duplicate key)\n", argv[1]); - break; - case RET_SUCCESS: - break; - } -} - -void -icursor(db, argv) - DB *db; - char **argv; -{ - int status; - DBT data, key; - - key.data = argv[1]; - if (recno) - key.size = sizeof(recno_t); - else - key.size = strlen(argv[1]) + 1; - data.data = argv[2]; - data.size = strlen(argv[2]) + 1; - - status = (*db->put)(db, &key, &data, R_CURSOR); - switch (status) { - case RET_ERROR: - perror("icursor/put"); - break; - case RET_SPECIAL: - (void)printf("%s (duplicate key)\n", argv[1]); - break; - case RET_SUCCESS: - break; - } -} - -void -insert(db, argv) - DB *db; - char **argv; -{ - int status; - DBT data, key; - - key.data = argv[1]; - if (recno) - key.size = sizeof(recno_t); - else - key.size = strlen(argv[1]) + 1; - data.data = argv[2]; - data.size = strlen(argv[2]) + 1; - - status = (*db->put)(db, &key, &data, R_NOOVERWRITE); - switch (status) { - case RET_ERROR: - perror("insert/put"); - break; - case RET_SPECIAL: - (void)printf("%s (duplicate key)\n", argv[1]); - break; - case RET_SUCCESS: - break; - } -} - -void -last(db, argv) - DB *db; - char **argv; -{ - DBT data, key; - int status; - - status = (*db->seq)(db, &key, &data, R_LAST); - - switch (status) { - case RET_ERROR: - perror("last/seq"); - break; - case RET_SPECIAL: - (void)printf("no more keys\n"); - break; - case RET_SUCCESS: - keydata(&key, &data); - break; - } -} - -void -list(db, argv) - DB *db; - char **argv; -{ - DBT data, key; - FILE *fp; - int status; - - if ((fp = fopen(argv[1], "w")) == NULL) { - (void)fprintf(stderr, "%s: %s\n", argv[1], strerror(errno)); - return; - } - status = (*db->seq)(db, &key, &data, R_FIRST); - while (status == RET_SUCCESS) { - (void)fprintf(fp, "%s\n", key.data); - status = (*db->seq)(db, &key, &data, R_NEXT); - } - (void)fclose(fp); - if (status == RET_ERROR) - perror("list/seq"); -} - -void -rlist(db, argv) - DB *db; - char **argv; -{ - DBT data, key; - FILE *fp; - int status; - void *cookie; - - cookie = NULL; - if ((fp = fopen(argv[1], "w")) == NULL) { - (void)fprintf(stderr, "%s: %s\n", argv[1], strerror(errno)); - return; - } - status = bt_rseq(db, &key, &data, &cookie, R_FIRST); - while (status == RET_SUCCESS) { - (void)fprintf(fp, "%s\n", key.data); - status = bt_rseq(db, &key, &data, &cookie, R_NEXT); - } - (void)fclose(fp); - if (status == RET_ERROR) - perror("list/seq"); -} - -#if 0 -DB *BUGdb; -void -load(db, argv) - DB *db; - char **argv; -{ - register char *p, *t; - FILE *fp; - DBT data, key; - recno_t cnt; - size_t len; - int status; - char *lp, buf[16 * 1024]; - - BUGdb = db; - if ((fp = fopen(argv[1], "r")) == NULL) { - (void)fprintf(stderr, "%s: %s\n", argv[1], strerror(errno)); - return; - } - (void)printf("loading %s...\n", argv[1]); - - for (cnt = 1; (lp = fgetline(fp, &len)) != NULL; ++cnt) { - if (recno) { - key.data = &cnt; - key.size = sizeof(recno_t); - data.data = lp; - data.size = len + 1; - } else { - key.data = lp; - key.size = len + 1; - for (p = lp + len - 1, t = buf; p >= lp; *t++ = *p--); - *t = '\0'; - data.data = buf; - data.size = len + 1; - } - - status = (*db->put)(db, &key, &data, R_NOOVERWRITE); - switch (status) { - case RET_ERROR: - perror("load/put"); - exit(1); - case RET_SPECIAL: - if (recno) - (void)fprintf(stderr, - "duplicate: %ld {%s}\n", cnt, data.data); - else - (void)fprintf(stderr, - "duplicate: %ld {%s}\n", cnt, key.data); - exit(1); - case RET_SUCCESS: - break; - } - } - (void)fclose(fp); -} -#endif - -void -next(db, argv) - DB *db; - char **argv; -{ - DBT data, key; - int status; - - status = (*db->seq)(db, &key, &data, R_NEXT); - - switch (status) { - case RET_ERROR: - perror("next/seq"); - break; - case RET_SPECIAL: - (void)printf("no more keys\n"); - break; - case RET_SUCCESS: - keydata(&key, &data); - break; - } -} - -void -previous(db, argv) - DB *db; - char **argv; -{ - DBT data, key; - int status; - - status = (*db->seq)(db, &key, &data, R_PREV); - - switch (status) { - case RET_ERROR: - perror("previous/seq"); - break; - case RET_SPECIAL: - (void)printf("no more keys\n"); - break; - case RET_SUCCESS: - keydata(&key, &data); - break; - } -} - -#ifdef DEBUG -void -show(db, argv) - DB *db; - char **argv; -{ - BTREE *t; - PAGE *h; - db_pgno_t pg; - - pg = atoi(argv[1]); - t = db->internal; - if ((h = mpool_get(t->bt_mp, pg, 0)) == NULL) { - (void)printf("getpage of %ld failed\n", pg); - return; - } - if (pg == 0) - __bt_dmpage(h); - else - __bt_dpage(db, h); - mpool_put(t->bt_mp, h, 0); -} -#endif - -#ifdef STATISTICS -void -bstat(db, argv) - DB *db; - char **argv; -{ - (void)printf("BTREE\n"); - __bt_stat(db); -} - -void -mstat(db, argv) - DB *db; - char **argv; -{ - (void)printf("MPOOL\n"); - mpool_stat(((BTREE *)db->internal)->bt_mp); -} -#endif - -void -keydata(key, data) - DBT *key, *data; -{ - if (!recno && key->size > 0) - (void)printf("%s/", key->data); - if (data->size > 0) - (void)printf("%s", data->data); - (void)printf("\n"); -} - -void -usage() -{ - (void)fprintf(stderr, - "usage: %s [-bdluw] [-c cache] [-i file] [-p page] [file]\n", - progname); - exit (1); -} diff --git a/src/util/db2/test/dbtest.c b/src/util/db2/test/dbtest.c deleted file mode 100644 index 10a89a6fa..000000000 --- a/src/util/db2/test/dbtest.c +++ /dev/null @@ -1,768 +0,0 @@ -/*- - * Copyright (c) 1992, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#if !defined(lint) && defined(LIBC_SCCS) -static char copyright[] = -"@(#) Copyright (c) 1992, 1993, 1994\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#if !defined(lint) && defined(LIBC_SCCS) -static char sccsid[] = "@(#)dbtest.c 8.17 (Berkeley) 9/1/94"; -#endif /* not lint */ - -#include <sys/param.h> -#include <sys/stat.h> - -#include <ctype.h> -#include <errno.h> -#include <fcntl.h> -#include <limits.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#include "db-int.h" -#ifdef STATISTICS -#include "btree.h" -#endif - -enum S { COMMAND, COMPARE, GET, PUT, REMOVE, SEQ, SEQFLAG, KEY, DATA }; - -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) -#define ATTR(x) __attribute__(x) -#else -#define ATTR(x) -#endif - -void compare __P((DBT *, DBT *)); -DBTYPE dbtype __P((char *)); -void dump __P((DB *, int)); -void err __P((const char *, ...)) ATTR ((__format__(__printf__,1,2))) ATTR ((__noreturn__)); -void get __P((DB *, DBT *)); -void getdata __P((DB *, DBT *, DBT *)); -void put __P((DB *, DBT *, DBT *)); -void rem __P((DB *, DBT *)); -char *sflags __P((int)); -void synk __P((DB *)); -void *rfile __P((char *, size_t *)); -void seq __P((DB *, DBT *)); -u_int setflags __P((char *)); -void *setinfo __P((DBTYPE, char *)); -void usage __P((void)); -void *xmalloc __P((char *, size_t)); - -DBTYPE type; /* Database type. */ -void *infop; /* Iflags. */ -u_long lineno; /* Current line in test script. */ -u_int flags; /* Current DB flags. */ -int ofd = STDOUT_FILENO; /* Standard output fd. */ - -DB *XXdbp; /* Global for gdb. */ -int XXlineno; /* Fast breakpoint for gdb. */ - -int -main(argc, argv) - int argc; - char *argv[]; -{ - extern int optind; - extern char *optarg; - enum S command, state; - DB *dbp; - DBT data, key, keydata; - size_t len; - int ch, oflags, sflag; - char *fname, *infoarg, *p, *t, buf[8 * 1024]; - - infoarg = NULL; - fname = NULL; - oflags = O_CREAT | O_RDWR | O_BINARY; - sflag = 0; - while ((ch = getopt(argc, argv, "f:i:lo:s")) != -1) - switch (ch) { - case 'f': - fname = optarg; - break; - case 'i': - infoarg = optarg; - break; - case 'l': - oflags |= DB_LOCK; - break; - case 'o': - if ((ofd = open(optarg, - O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0) - err("%s: %s", optarg, strerror(errno)); - break; - case 's': - sflag = 1; - break; - case '?': - default: - usage(); - } - argc -= optind; - argv += optind; - - if (argc != 2) - usage(); - - /* Set the type. */ - type = dbtype(*argv++); - - /* Open the descriptor file. */ - if (strcmp(*argv, "-") && freopen(*argv, "r", stdin) == NULL) - err("%s: %s", *argv, strerror(errno)); - - /* Set up the db structure as necessary. */ - if (infoarg == NULL) - infop = NULL; - else - for (p = strtok(infoarg, ",\t "); p != NULL; - p = strtok(0, ",\t ")) - if (*p != '\0') - infop = setinfo(type, p); - - /* - * Open the DB. Delete any preexisting copy, you almost never - * want it around, and it often screws up tests. - */ - if (fname == NULL) { - p = getenv("TMPDIR"); - if (p == NULL) - p = "/var/tmp"; - (void)sprintf(buf, "%s/__dbtest", p); - fname = buf; - (void)unlink(buf); - } else if (!sflag) - (void)unlink(fname); - - if ((dbp = dbopen(fname, - oflags, S_IRUSR | S_IWUSR, type, infop)) == NULL) - err("dbopen: %s", strerror(errno)); - XXdbp = dbp; - - state = COMMAND; - for (lineno = 1; - (p = fgets(buf, sizeof(buf), stdin)) != NULL; ++lineno) { - /* Delete the newline, displaying the key/data is easier. */ - if (ofd == STDOUT_FILENO && (t = strchr(p, '\n')) != NULL) - *t = '\0'; - if ((len = strlen(buf)) == 0 || isspace((int) *p) || *p == '#') - continue; - - /* Convenient gdb break point. */ - if (XXlineno == lineno) - XXlineno = 1; - switch (*p) { - case 'c': /* compare */ - if (state != COMMAND) - err("line %lu: not expecting command", lineno); - state = KEY; - command = COMPARE; - break; - case 'e': /* echo */ - if (state != COMMAND) - err("line %lu: not expecting command", lineno); - /* Don't display the newline, if CR at EOL. */ - if (p[len - 2] == '\r') - --len; - if (write(ofd, p + 1, len - 1) != len - 1 || - write(ofd, "\n", 1) != 1) - err("write: %s", strerror(errno)); - break; - case 'g': /* get */ - if (state != COMMAND) - err("line %lu: not expecting command", lineno); - state = KEY; - command = GET; - break; - case 'p': /* put */ - if (state != COMMAND) - err("line %lu: not expecting command", lineno); - state = KEY; - command = PUT; - break; - case 'r': /* remove */ - if (state != COMMAND) - err("line %lu: not expecting command", lineno); - if (flags == R_CURSOR) { - rem(dbp, &key); - state = COMMAND; - } else { - state = KEY; - command = REMOVE; - } - break; - case 'S': /* sync */ - if (state != COMMAND) - err("line %lu: not expecting command", lineno); - synk(dbp); - state = COMMAND; - break; - case 's': /* seq */ - if (state != COMMAND) - err("line %lu: not expecting command", lineno); - if (flags == R_CURSOR) { - state = KEY; - command = SEQ; - } else - seq(dbp, &key); - break; - case 'f': - flags = setflags(p + 1); - break; - case 'D': /* data file */ - if (state != DATA) - err("line %lu: not expecting data", lineno); - data.data = rfile(p + 1, &data.size); - goto ldata; - case 'd': /* data */ - if (state != DATA) - err("line %lu: not expecting data", lineno); - data.data = xmalloc(p + 1, len - 1); - data.size = len - 1; -ldata: switch (command) { - case COMPARE: - compare(&keydata, &data); - break; - case PUT: - put(dbp, &key, &data); - break; - default: - err("line %lu: command doesn't take data", - lineno); - } - if (type != DB_RECNO) - free(key.data); - free(data.data); - state = COMMAND; - break; - case 'K': /* key file */ - if (state != KEY) - err("line %lu: not expecting a key", lineno); - if (type == DB_RECNO) - err("line %lu: 'K' not available for recno", - lineno); - key.data = rfile(p + 1, &key.size); - goto lkey; - case 'k': /* key */ - if (state != KEY) - err("line %lu: not expecting a key", lineno); - if (type == DB_RECNO) { - static recno_t recno; - recno = atoi(p + 1); - key.data = &recno; - key.size = sizeof(recno); - } else { - key.data = xmalloc(p + 1, len - 1); - key.size = len - 1; - } -lkey: switch (command) { - case COMPARE: - getdata(dbp, &key, &keydata); - state = DATA; - break; - case GET: - get(dbp, &key); - if (type != DB_RECNO) - free(key.data); - state = COMMAND; - break; - case PUT: - state = DATA; - break; - case REMOVE: - rem(dbp, &key); - if ((type != DB_RECNO) && (flags != R_CURSOR)) - free(key.data); - state = COMMAND; - break; - case SEQ: - seq(dbp, &key); - if ((type != DB_RECNO) && (flags != R_CURSOR)) - free(key.data); - state = COMMAND; - break; - default: - err("line %lu: command doesn't take a key", - lineno); - } - break; - case 'o': - dump(dbp, p[1] == 'r'); - break; - default: - err("line %lu: %s: unknown command character", - lineno, p); - } - } -#ifdef STATISTICS - /* - * -l must be used (DB_LOCK must be set) for this to be - * used, otherwise a page will be locked and it will fail. - */ - if (type == DB_BTREE && oflags & DB_LOCK) - __bt_stat(dbp); -#endif - if (dbp->close(dbp)) - err("db->close: %s", strerror(errno)); - (void)close(ofd); - exit(0); -} - -#define NOOVERWRITE "put failed, would overwrite key\n" - -void -compare(db1, db2) - DBT *db1, *db2; -{ - register size_t len; - register u_char *p1, *p2; - - if (db1->size != db2->size) { - printf("compare failed: key->data len %lu != data len %lu\n", - (u_long) db1->size, (u_long) db2->size); - exit (1); - } - - len = MIN(db1->size, db2->size); - for (p1 = db1->data, p2 = db2->data; len--;) - if (*p1++ != *p2++) { - err("compare failed at offset %d\n", - p1 - (u_char *)db1->data); - break; - } -} - -void -get(dbp, kp) - DB *dbp; - DBT *kp; -{ - DBT data; - - switch (dbp->get(dbp, kp, &data, flags)) { - case 0: - (void)write(ofd, data.data, data.size); - if (ofd == STDOUT_FILENO) - (void)write(ofd, "\n", 1); - break; - case -1: - err("line %lu: get: %s", lineno, strerror(errno)); - /* NOTREACHED */ - case 1: -#define NOSUCHKEY "get failed, no such key\n" - if (ofd != STDOUT_FILENO) { - (void)write(ofd, NOSUCHKEY, sizeof(NOSUCHKEY) - 1); - exit(1); - } else - (void)fprintf(stderr, "%lu: %.*s: %s", - lineno, (int) MIN(kp->size, 20), (char *) kp->data, - NOSUCHKEY); -#undef NOSUCHKEY - break; - } -} - -void -getdata(dbp, kp, dp) - DB *dbp; - DBT *kp, *dp; -{ - switch (dbp->get(dbp, kp, dp, flags)) { - case 0: - return; - case -1: - err("line %lu: getdata: %s", lineno, strerror(errno)); - /* NOTREACHED */ - case 1: - err("line %lu: getdata failed, no such key", lineno); - /* NOTREACHED */ - } -} - -void -put(dbp, kp, dp) - DB *dbp; - DBT *kp, *dp; -{ - switch (dbp->put(dbp, kp, dp, flags)) { - case 0: - break; - case -1: - err("line %lu: put: %s", lineno, strerror(errno)); - /* NOTREACHED */ - case 1: - (void)write(ofd, NOOVERWRITE, sizeof(NOOVERWRITE) - 1); - break; - } -} - -void -rem(dbp, kp) - DB *dbp; - DBT *kp; -{ - switch (dbp->del(dbp, kp, flags)) { - case 0: - break; - case -1: - err("line %lu: rem: %s", lineno, strerror(errno)); - /* NOTREACHED */ - case 1: -#define NOSUCHKEY "rem failed, no such key\n" - if (ofd != STDOUT_FILENO) - (void)write(ofd, NOSUCHKEY, sizeof(NOSUCHKEY) - 1); - else if (flags != R_CURSOR) - (void)fprintf(stderr, "%lu: %.*s: %s", - lineno, (int) MIN(kp->size, 20), (char *) kp->data, - NOSUCHKEY); - else - (void)fprintf(stderr, - "%lu: rem of cursor failed\n", lineno); -#undef NOSUCHKEY - break; - } -} - -void -synk(dbp) - DB *dbp; -{ - switch (dbp->sync(dbp, flags)) { - case 0: - break; - case -1: - err("line %lu: synk: %s", lineno, strerror(errno)); - /* NOTREACHED */ - } -} - -void -seq(dbp, kp) - DB *dbp; - DBT *kp; -{ - DBT data; - - switch (dbp->seq(dbp, kp, &data, flags)) { - case 0: - (void)write(ofd, data.data, data.size); - if (ofd == STDOUT_FILENO) - (void)write(ofd, "\n", 1); - break; - case -1: - err("line %lu: seq: %s", lineno, strerror(errno)); - /* NOTREACHED */ - case 1: -#define NOSUCHKEY "seq failed, no such key\n" - if (ofd != STDOUT_FILENO) - (void)write(ofd, NOSUCHKEY, sizeof(NOSUCHKEY) - 1); - else if (flags == R_CURSOR) - (void)fprintf(stderr, "%lu: %.*s: %s", - lineno, (int) MIN(kp->size, 20), (char *) kp->data, - NOSUCHKEY); - else - (void)fprintf(stderr, - "%lu: seq (%s) failed\n", lineno, sflags(flags)); -#undef NOSUCHKEY - break; - } -} - -void -dump(dbp, rev) - DB *dbp; - int rev; -{ - DBT key, data; - int lflags, nflags; - - if (rev) { - lflags = R_LAST; - nflags = R_PREV; - } else { - lflags = R_FIRST; - nflags = R_NEXT; - } - for (;; lflags = nflags) - switch (dbp->seq(dbp, &key, &data, lflags)) { - case 0: - (void)write(ofd, data.data, data.size); - if (ofd == STDOUT_FILENO) - (void)write(ofd, "\n", 1); - break; - case 1: - goto done; - case -1: - err("line %lu: (dump) seq: %s", - lineno, strerror(errno)); - /* NOTREACHED */ - } -done: return; -} - -u_int -setflags(s) - char *s; -{ - char *p; - - for (; isspace((int) *s); ++s); - if (*s == '\n' || *s == '\0') - return (0); - if ((p = strchr(s, '\n')) != NULL) - *p = '\0'; - if (!strcmp(s, "R_CURSOR")) return (R_CURSOR); - if (!strcmp(s, "R_FIRST")) return (R_FIRST); - if (!strcmp(s, "R_IAFTER")) return (R_IAFTER); - if (!strcmp(s, "R_IBEFORE")) return (R_IBEFORE); - if (!strcmp(s, "R_LAST")) return (R_LAST); - if (!strcmp(s, "R_NEXT")) return (R_NEXT); - if (!strcmp(s, "R_NOOVERWRITE")) return (R_NOOVERWRITE); - if (!strcmp(s, "R_PREV")) return (R_PREV); - if (!strcmp(s, "R_SETCURSOR")) return (R_SETCURSOR); - - err("line %lu: %s: unknown flag", lineno, s); - /* NOTREACHED */ -} - -char * -sflags(lflags) - int lflags; -{ - switch (lflags) { - case R_CURSOR: return ("R_CURSOR"); - case R_FIRST: return ("R_FIRST"); - case R_IAFTER: return ("R_IAFTER"); - case R_IBEFORE: return ("R_IBEFORE"); - case R_LAST: return ("R_LAST"); - case R_NEXT: return ("R_NEXT"); - case R_NOOVERWRITE: return ("R_NOOVERWRITE"); - case R_PREV: return ("R_PREV"); - case R_SETCURSOR: return ("R_SETCURSOR"); - } - - return ("UNKNOWN!"); -} - -DBTYPE -dbtype(s) - char *s; -{ - if (!strcmp(s, "btree")) - return (DB_BTREE); - if (!strcmp(s, "hash")) - return (DB_HASH); - if (!strcmp(s, "recno")) - return (DB_RECNO); - err("%s: unknown type (use btree, hash or recno)", s); - /* NOTREACHED */ -} - -void * -setinfo(db_type, s) - DBTYPE db_type; - char *s; -{ - static BTREEINFO ib; - static HASHINFO ih; - static RECNOINFO rh; - char *eq; - - if ((eq = strchr(s, '=')) == NULL) - err("%s: illegal structure set statement", s); - *eq++ = '\0'; - if (!isdigit((int) *eq)) - err("%s: structure set statement must be a number", s); - - switch (db_type) { - case DB_BTREE: - if (!strcmp("flags", s)) { - ib.flags = atoi(eq); - return (&ib); - } - if (!strcmp("cachesize", s)) { - ib.cachesize = atoi(eq); - return (&ib); - } - if (!strcmp("maxkeypage", s)) { - ib.maxkeypage = atoi(eq); - return (&ib); - } - if (!strcmp("minkeypage", s)) { - ib.minkeypage = atoi(eq); - return (&ib); - } - if (!strcmp("lorder", s)) { - ib.lorder = atoi(eq); - return (&ib); - } - if (!strcmp("psize", s)) { - ib.psize = atoi(eq); - return (&ib); - } - break; - case DB_HASH: - if (!strcmp("bsize", s)) { - ih.bsize = atoi(eq); - return (&ih); - } - if (!strcmp("ffactor", s)) { - ih.ffactor = atoi(eq); - return (&ih); - } - if (!strcmp("nelem", s)) { - ih.nelem = atoi(eq); - return (&ih); - } - if (!strcmp("cachesize", s)) { - ih.cachesize = atoi(eq); - return (&ih); - } - if (!strcmp("lorder", s)) { - ih.lorder = atoi(eq); - return (&ih); - } - break; - case DB_RECNO: - if (!strcmp("flags", s)) { - rh.flags = atoi(eq); - return (&rh); - } - if (!strcmp("cachesize", s)) { - rh.cachesize = atoi(eq); - return (&rh); - } - if (!strcmp("lorder", s)) { - rh.lorder = atoi(eq); - return (&rh); - } - if (!strcmp("reclen", s)) { - rh.reclen = atoi(eq); - return (&rh); - } - if (!strcmp("bval", s)) { - rh.bval = atoi(eq); - return (&rh); - } - if (!strcmp("psize", s)) { - rh.psize = atoi(eq); - return (&rh); - } - break; - } - err("%s: unknown structure value", s); - /* NOTREACHED */ -} - -void * -rfile(name, lenp) - char *name; - size_t *lenp; -{ - struct stat sb; - void *p; - int fd; - char *np; - - for (; isspace((int) *name); ++name); - if ((np = strchr(name, '\n')) != NULL) - *np = '\0'; - if ((fd = open(name, O_RDONLY, 0)) < 0 || - fstat(fd, &sb)) - err("%s: %s\n", name, strerror(errno)); -#ifdef NOT_PORTABLE - if (sb.st_size > (off_t)SIZE_T_MAX) - err("%s: %s\n", name, strerror(E2BIG)); -#endif - if ((p = (void *)malloc((u_int)sb.st_size)) == NULL) - err("%s", strerror(errno)); - (void)read(fd, p, (int)sb.st_size); - *lenp = sb.st_size; - (void)close(fd); - return (p); -} - -void * -xmalloc(text, len) - char *text; - size_t len; -{ - void *p; - - if ((p = (void *)malloc(len)) == NULL) - err("%s", strerror(errno)); - memmove(p, text, len); - return (p); -} - -void -usage() -{ - (void)fprintf(stderr, - "usage: dbtest [-l] [-f file] [-i info] [-o file] type script\n"); - exit(1); -} - -#ifdef __STDC__ -#include <stdarg.h> -#else -#include <varargs.h> -#endif - -void -#ifdef __STDC__ -err(const char *fmt, ...) -#else -err(fmt, va_alist) - char *fmt; - va_dcl -#endif -{ - va_list ap; -#ifdef __STDC__ - va_start(ap, fmt); -#else - va_start(ap); -#endif - (void)fprintf(stderr, "dbtest: "); - (void)vfprintf(stderr, fmt, ap); - va_end(ap); - (void)fprintf(stderr, "\n"); - exit(1); - /* NOTREACHED */ -} diff --git a/src/util/db2/test/dictionary b/src/util/db2/test/dictionary deleted file mode 100644 index 53640f016..000000000 --- a/src/util/db2/test/dictionary +++ /dev/null @@ -1,308 +0,0 @@ -abintrme -ablatweo -agdbevea -aglamber -aicehayt -alerover -anadanth -ancmirtt -ancthada -angcther -antasikt -arathmsm -arescofa -arthatea -asallyth -asathedl -ascelass -athaneal -atheneri -atheryit -athiopep -athysidc -atyhtiti -auletard -aytthepr -bedthesa -beiofttw -bemofrda -bertedud -bessdide -bestiemb -blllanof -bllssunt -blstther -bttelthh -bulyousi -bupedire -buseatsd -butritat -byeditam -cedvecur -censaith -centhfro -centitar -ceourire -cetheaso -chancora -chavengl -chederas -chemsywh -civadayo -ckedacag -ckstiptr -colither -congchin -corepppl -cronoria -cthilath -cthouthe -ctofowon -cumetbry -dbethere -degeerin -detherai -dingthin -dryslyse -dscesild -ealecerm -edftserh -efosondi -eherrreg -emidesja -ereananm -estersns -etedtili -evermerh -falsuran -faringsi -fawerist -fcedethe -fedhessh -fedlerca -feupbori -ffeedift -fllbasia -foftabll -fomehage -fotsenki -fwisudls -ggeuptha -gswofryt -hedcecou -hereacun -huvedpth -iabengre -ianfovin -iaresice -iasmived -idengedi -ilftisut -ilinefem -imeorran -imsstoft -inararto -indanrei -ingelaly -ingeored -inmotiom -inoatlfr -inoviler -insedihe -intaspan -intowade -inyfeprt -iobloinc -ionepuse -iourofig -ireeingi -irreland -irsfandb -isewhell -isocisad -isriacth -istaverr -ithmblet -itoingri -itongala -itsgrint -ivyttisa -laltthea -lanesmef -lanonepi -lerithay -lllmeris -lysatspa -lysceert -masishio -mathmmat -meastrei -medengny -medwindb -membonam -moronash -mpeotlin -msomirei -msrmstri -mstirtis -nbempeef -ncheckno -nddtthec -ndilymor -nditheiv -ndoncath -nenkingo -ngryasth -nichelnd -nndarrof -nongeatt -noviearc -npecheca -nsttmema -nwiowhan -oalsaldt -obullury -odtenens -offorind -ofoditin -ogarofab -olossofe -olspooth -omajorul -omantrvi -omawevat -onotorit -oorendbe -oosarang -othowong -otinffte -ouatheno -ountshep -ouputope -owhesatu -owiaindh -padisath -pangream -pawicofa -pendamam -pepofond -peroncti -perysege -petotith -plocarov -pomasbor -powholyi -ppllosof -pptinoma -psenesff -puiondit -reestand -rendlabl -rerathsy -rewathat -rirndiff -ritricui -samasome -satameer -sathecur -sbespral -sconbeis -sedfinhe -sharveon -shhoftrd -sianthem -sieaveve -simedera -sinandff -sinulsma -sllobofl -sndfermh -soffatic -soingris -songiorb -sthottsa -suewemat -swicales -tagttisf -tanalatt -tancodbo -tarethal -tbisesia -teftyall -tengstwh -tepeshth -teranand -tevinohi -tgthehal -thansirs -thecequs -thereaco -therimut -therorea -thestiom -theveame -thhastth -thiasatt -thidirve -thingbaa -thithbed -thovires -thswenpe -thublthe -tiamarss -tincthes -tindtofo -tinedave -tisanwex -tlarnste -tleicorb -tnymesie -toftemal -tombeasw -torarsen -totheheo -toudanty -tremywel -treonove -trhandfy -trrhmont -trysnter -tssasofo -ttemaith -ttiserds -ttorissa -tuiabeoi -twirfton -tyhentha -tyngorti -tyoarich -ucatbouc -ungyconh -untinore -uopsaren -upecmuit -ureaidrb -usinittr -ussofedt -usunochp -utbapofo -veveplel -vimathea -walondui -wavairet -waysioft -wceempil -wealttig -wefondio -werdtian -weswevar -whaclthe -wheanler -wheiforv -whisurtr -whrithat -wiesulci -wirofrec -witthile -wtserodr -ybutherr diff --git a/src/util/db2/test/hash1.tests/Makefile b/src/util/db2/test/hash1.tests/Makefile deleted file mode 100644 index 348a8f818..000000000 --- a/src/util/db2/test/hash1.tests/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# @(#)Makefile 8.16 (Berkeley) 11/20/95 - -ALL = driver2 tcreat3 tdel thash4 tread2 tseq tverify -OBJ = driver2.o tcreat3.o tdel.o thash4.o tread2.o tseq.o tverify.o -CC = gcc - -all: ${ALL} - -# Uncomment the STAT line get hash and btree statistical use info. This -# also forces ld to load the btree debug functions for use by gdb, which -# is useful. The db library has to be compiled with -DSTATISTICS as well. -INC= -I${PORTDIR}/include -I${PORTDIR} -OORG= -g -#STAT= -DSTATISTICS -CFLAGS= -D__DBINTERFACE_PRIVATE -DDEBUG ${STAT} ${OORG} ${INC} - -tcreat3: tcreat3.o ${PORTDIR}/libdb.a - ${CC} -o $@ tcreat3.o ${PORTDIR}/libdb.a - -tdel: tdel.o ${PORTDIR}/libdb.a - ${CC} -o $@ tdel.o ${PORTDIR}/libdb.a - -thash4: thash4.o ${PORTDIR}/libdb.a - ${CC} -o $@ thash4.o ${PORTDIR}/libdb.a - -tread2: tread2.o ${PORTDIR}/libdb.a - ${CC} -o $@ tread2.o ${PORTDIR}/libdb.a - -tseq: tseq.o ${PORTDIR}/libdb.a - ${CC} -o $@ tseq.o ${PORTDIR}/libdb.a - -tverify: tverify.o ${PORTDIR}/libdb.a - ${CC} -o $@ tverify.o ${PORTDIR}/libdb.a - -driver2: driver2.o ${PORTDIR}/libdb.a - ${CC} -o $@ driver2.o ${PORTDIR}/libdb.a - -strerror.o: ${PORTDIR}/clib/strerror.c - ${CC} -c ${PORTDIR}/clib/strerror.c - -clean: - rm -f *.core gmon.out ${ALL} ${OBJ} t1 t2 t3 - diff --git a/src/util/db2/test/hash1.tests/driver2.c b/src/util/db2/test/hash1.tests/driver2.c deleted file mode 100644 index 6a3b432cb..000000000 --- a/src/util/db2/test/hash1.tests/driver2.c +++ /dev/null @@ -1,114 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Margo Seltzer. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1991, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)driver2.c 8.1 (Berkeley) 6/4/93"; -#endif /* not lint */ - -/* - * Test driver, to try to tackle the large ugly-split problem. - */ - -#include <sys/file.h> -#include <stdio.h> -#include "ndbm.h" - -int my_hash(key, len) - char *key; - int len; -{ - return(17); /* So I'm cruel... */ -} - -main(argc, argv) - int argc; -{ - DB *db; - DBT key, content; - char keybuf[2049]; - char contentbuf[2049]; - char buf[256]; - int i; - HASHINFO info; - - info.bsize = 1024; - info.ffactor = 5; - info.nelem = 1; - info.cachesize = NULL; -#ifdef HASH_ID_PROGRAM_SPECIFIED - info.hash_id = HASH_ID_PROGRAM_SPECIFIED; - info.hash_func = my_hash; -#else - info.hash = my_hash; -#endif - info.lorder = 0; - if (!(db = dbopen("bigtest", O_RDWR | O_CREAT | O_BINARY, 0644, DB_HASH, &info))) { - sprintf(buf, "dbopen: failed on file bigtest"); - perror(buf); - exit(1); - } - srand(17); - key.data = keybuf; - content.data = contentbuf; - memset(keybuf, '\0', sizeof(keybuf)); - memset(contentbuf, '\0', sizeof(contentbuf)); - for (i=1; i <= 500; i++) { - key.size = 128 + (rand()&1023); - content.size = 128 + (rand()&1023); -/* printf("%d: Key size %d, data size %d\n", i, key.size, - content.size); */ - sprintf(keybuf, "Key #%d", i); - sprintf(contentbuf, "Contents #%d", i); - if ((db->put)(db, &key, &content, R_NOOVERWRITE)) { - sprintf(buf, "dbm_store #%d", i); - perror(buf); - } - } - if ((db->close)(db)) { - perror("closing hash file"); - exit(1); - } - exit(0); -} - - - diff --git a/src/util/db2/test/hash1.tests/makedb.sh b/src/util/db2/test/hash1.tests/makedb.sh deleted file mode 100644 index 15901de19..000000000 --- a/src/util/db2/test/hash1.tests/makedb.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# -# @(#)makedb.sh 8.1 (Berkeley) 6/4/93 - -awk '{i++; print $0; print i;}' /usr/local/lib/dict/words > WORDS -ls /bin /usr/bin /usr/ucb /etc | egrep '^(...|....|.....|......)$' | \ -sort | uniq | \ -awk '{ - printf "%s\n", $0 - for (i = 0; i < 1000; i++) - printf "%s+", $0 - printf "\n" -}' > LONG.DATA diff --git a/src/util/db2/test/hash1.tests/tcreat3.c b/src/util/db2/test/hash1.tests/tcreat3.c deleted file mode 100644 index f11487b32..000000000 --- a/src/util/db2/test/hash1.tests/tcreat3.c +++ /dev/null @@ -1,105 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Margo Seltzer. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1991, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)tcreat3.c 8.1 (Berkeley) 6/4/93"; -#endif /* not lint */ - -#include <sys/types.h> -#include <sys/file.h> -#include <stdio.h> -#include "db-int.h" - -#define INITIAL 25000 -#define MAXWORDS 25000 /* # of elements in search table */ - -char wp1[8192]; -char wp2[8192]; -main(argc, argv) -char **argv; -{ - DBT item, key; - DB *dbp; - HASHINFO ctl; - FILE *fp; - int trash; - - int i = 0; - - argv++; - ctl.hash = NULL; - ctl.bsize = atoi(*argv++); - ctl.ffactor = atoi(*argv++); - ctl.nelem = atoi(*argv++); - ctl.lorder = 0; - if (!(dbp = dbopen( "hashtest", - O_CREAT|O_TRUNC|O_RDWR|O_BINARY, 0600, DB_HASH, &ctl))){ - /* create table */ - fprintf(stderr, "cannot create: hash table (size %d)\n", - INITIAL); - exit(1); - } - - key.data = wp1; - item.data = wp2; - while ( fgets(wp1, 8192, stdin) && - fgets(wp2, 8192, stdin) && - i++ < MAXWORDS) { -/* -* put info in structure, and structure in the item -*/ - key.size = strlen(wp1); - item.size = strlen(wp2); - -/* - * enter key/data pair into the table - */ - if ((dbp->put)(dbp, &key, &item, R_NOOVERWRITE) != NULL) { - fprintf(stderr, "cannot enter: key %s\n", - item.data); - exit(1); - } - } - - (dbp->close)(dbp); - exit(0); -} diff --git a/src/util/db2/test/hash1.tests/tdel.c b/src/util/db2/test/hash1.tests/tdel.c deleted file mode 100644 index 826611486..000000000 --- a/src/util/db2/test/hash1.tests/tdel.c +++ /dev/null @@ -1,122 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Margo Seltzer. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1991, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)tdel.c 8.1 (Berkeley) 6/4/93"; -#endif /* not lint */ - -#include <sys/types.h> -#include <sys/file.h> -#include "db-int.h" -#include <stdio.h> - -#define INITIAL 25000 -#define MAXWORDS 25000 /* # of elements in search table */ - -/* Usage: thash pagesize fillfactor file */ -char wp1[8192]; -char wp2[8192]; -main(argc, argv) -char **argv; -{ - DBT item, key; - DB *dbp; - HASHINFO ctl; - FILE *fp; - int stat; - - int i = 0; - - argv++; - ctl.nelem = INITIAL; - ctl.hash = NULL; - ctl.bsize = atoi(*argv++); - ctl.ffactor = atoi(*argv++); - ctl.cachesize = 1024 * 1024; /* 1 MEG */ - ctl.lorder = 0; - argc -= 2; - if (!(dbp = dbopen( NULL, O_CREAT|O_RDWR|O_BINARY, 0400, DB_HASH, &ctl))) { - /* create table */ - fprintf(stderr, "cannot create: hash table size %d)\n", - INITIAL); - exit(1); - } - - key.data = wp1; - item.data = wp2; - while ( fgets(wp1, 8192, stdin) && - fgets(wp2, 8192, stdin) && - i++ < MAXWORDS) { -/* -* put info in structure, and structure in the item -*/ - key.size = strlen(wp1); - item.size = strlen(wp2); - -/* - * enter key/data pair into the table - */ - if ((dbp->put)(dbp, &key, &item, R_NOOVERWRITE) != NULL) { - fprintf(stderr, "cannot enter: key %s\n", - item.data); - exit(1); - } - } - - if ( --argc ) { - fp = fopen ( argv[0], "r"); - i = 0; - while ( fgets(wp1, 8192, fp) && - fgets(wp2, 8192, fp) && - i++ < MAXWORDS) { - key.size = strlen(wp1); - stat = (dbp->del)(dbp, &key, 0); - if (stat) { - fprintf ( stderr, "Error retrieving %s\n", key.data ); - exit(1); - } - } - fclose(fp); - } - (dbp->close)(dbp); - exit(0); -} diff --git a/src/util/db2/test/hash1.tests/testit b/src/util/db2/test/hash1.tests/testit deleted file mode 100644 index c80dc4e69..000000000 --- a/src/util/db2/test/hash1.tests/testit +++ /dev/null @@ -1,154 +0,0 @@ -#!/bin/csh -f -# -# @(#)testit 8.1 (Berkeley) 6/4/93 -# - -echo "" -echo "PAGE FILL " -set name=WORDS - set i = 256 - foreach j ( 11 14 21 ) - echo "thash4 $i $j" - ./thash4 $i $j 25000 65536 $name < $name - end - set i = 512 - foreach j ( 21 28 43 ) - echo "thash4 $i $j" - ./thash4 $i $j 25000 65536 $name < $name - end - set i = 1024 - foreach j ( 43 57 85 ) - echo "thash4 $i $j" - ./thash4 $i $j 25000 65536 $name < $name - end - set i = 2048 - foreach j ( 85 114 171 ) - echo "thash4 $i $j" - ./thash4 $i $j 25000 65536 $name < $name - end - set i = 4096 - foreach j ( 171 228 341 ) - echo "thash4 $i $j" - ./thash4 $i $j 25000 65536 $name < $name - end - set i = 8192 - foreach j ( 341 455 683 ) - echo "thash4 $i $j" - ./thash4 $i $j 25000 65536 $name < $name - end - echo "PAGE FILL " - set i = 256 - foreach j ( 11 14 21 ) - echo "$i"_"$j" - ./tcreat3 $i $j 25000 $name < $name - ./tread2 65536 < $name - ./tverify $name < $name - ./tseq > /dev/null - ./tdel $i $j $name < $name - end - set i = 512 - foreach j ( 21 28 43 ) - echo "$i"_"$j" - ./tcreat3 $i $j 25000 $name < $name - ./tread2 65536 < $name - ./tverify $name < $name - ./tseq > /dev/null - ./tdel $i $j $name < $name - end - set i = 1024 - foreach j ( 43 57 85 ) - echo "$i"_"$j" - ./tcreat3 $i $j 25000 $name < $name - ./tread2 65536 < $name - ./tverify $name < $name - ./tseq > /dev/null - ./tdel $i $j $name < $name - end - set i = 2048 - foreach j ( 85 114 171 ) - echo "$i"_"$j" - ./tcreat3 $i $j 25000 $name < $name - ./tread2 65536 < $name - ./tverify $name < $name - ./tseq > /dev/null - ./tdel $i $j $name < $name - end - set i = 4096 - foreach j ( 171 228 341 ) - echo "$i"_"$j" - ./tcreat3 $i $j 25000 $name < $name - ./tread2 65536 < $name - ./tverify $name < $name - ./tseq > /dev/null - ./tdel $i $j $name < $name - end - set i = 8192 - foreach j ( 341 455 683 ) - echo "$i"_"$j" - ./tcreat3 $i $j 25000 $name < $name - ./tread2 65536 < $name - ./tverify $name < $name - ./tseq > /dev/null - ./tdel $i $j $name < $name - end -set name=LONG.DATA - set i = 1024 - foreach j ( 1 2 4 ) - echo ./thash4 $i $j 600 65536 $name - ./thash4 $i $j 600 65536 $name < $name - end - - set i = 2048 - foreach j ( 1 2 4 ) - echo ./thash4 $i $j 600 65536 $name - ./thash4 $i $j 600 65536 $name < $name - end - set i = 4096 - foreach j ( 1 2 4 ) - echo ./thash4 $i $j 600 65536 $name - ./thash4 $i $j 600 65536 $name < $name - end - set i = 8192 - foreach j ( 2 4 8 ) - echo ./thash4 $i $j 600 65536 $name - ./thash4 $i $j 600 65536 $name < $name - end - echo "PAGE FILL " - set i = 1024 - foreach j ( 1 2 4 ) - echo "$i"_"$j" - ./tcreat3 $i $j 600 $name < $name - ./tread2 65536 < $name - ./tverify $name < $name - ./tseq > /dev/null - ./tdel $i $j $name < $name - end - set i = 2048 - foreach j ( 1 2 4 ) - echo "$i"_"$j" - ./tcreat3 $i $j 600 $name < $name - ./tread2 65536 < $name - ./tverify $name < $name - ./tseq > /dev/null - ./tdel $i $j $name < $name - end - set i = 4096 - foreach j ( 1 2 4 ) - echo "$i"_"$j" - ./tcreat3 $i $j 600 $name < $name - ./tread2 65536 < $name - ./tverify $name < $name - ./tseq > /dev/null - ./tdel $i $j $name < $name - end - set i = 8192 - foreach j ( 2 4 8 ) - echo "$i"_"$j" - ./tcreat3 $i $j 600 $name < $name - ./tread2 65536 < $name - ./tverify $name < $name - ./tseq > /dev/null - ./tdel $i $j $name < $name - end - -./driver2 diff --git a/src/util/db2/test/hash1.tests/thash4.c b/src/util/db2/test/hash1.tests/thash4.c deleted file mode 100644 index b15b617bc..000000000 --- a/src/util/db2/test/hash1.tests/thash4.c +++ /dev/null @@ -1,131 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Margo Seltzer. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1991, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)thash4.c 8.1 (Berkeley) 6/4/93"; -#endif /* not lint */ - -#include <sys/types.h> -#include <sys/file.h> -#include <stdio.h> -#include <errno.h> -#include "db-int.h" - -#define INITIAL 25000 -#define MAXWORDS 25000 /* # of elements in search table */ - -/* Usage: thash pagesize fillfactor file */ -char wp1[8192]; -char wp2[8192]; -main(argc, argv) -char **argv; -{ - DBT item, key, res; - DB *dbp; - HASHINFO ctl; - FILE *fp; - int stat; - time_t t; - - int i = 0; - - argv++; - ctl.hash = NULL; - ctl.bsize = atoi(*argv++); - ctl.ffactor = atoi(*argv++); - ctl.nelem = atoi(*argv++); - ctl.cachesize = atoi(*argv++); - ctl.lorder = 0; - if (!(dbp = dbopen( NULL, O_CREAT|O_RDWR|O_BINARY, 0400, DB_HASH, &ctl))) { - /* create table */ - fprintf(stderr, "cannot create: hash table size %d)\n", - INITIAL); - fprintf(stderr, "\terrno: %d\n", errno); - exit(1); - } - - key.data = wp1; - item.data = wp2; - while ( fgets(wp1, 8192, stdin) && - fgets(wp2, 8192, stdin) && - i++ < MAXWORDS) { -/* -* put info in structure, and structure in the item -*/ - key.size = strlen(wp1); - item.size = strlen(wp2); - -/* - * enter key/data pair into the table - */ - if ((dbp->put)(dbp, &key, &item, R_NOOVERWRITE) != NULL) { - fprintf(stderr, "cannot enter: key %s\n", - item.data); - fprintf(stderr, "\terrno: %d\n", errno); - exit(1); - } - } - - if ( --argc ) { - fp = fopen ( argv[0], "r"); - i = 0; - while ( fgets(wp1, 256, fp) && - fgets(wp2, 8192, fp) && - i++ < MAXWORDS) { - - key.size = strlen(wp1); - stat = (dbp->get)(dbp, &key, &res, 0); - if (stat < 0 ) { - fprintf ( stderr, "Error retrieving %s\n", key.data ); - fprintf(stderr, "\terrno: %d\n", errno); - exit(1); - } else if ( stat > 0 ) { - fprintf ( stderr, "%s not found\n", key.data ); - fprintf(stderr, "\terrno: %d\n", errno); - exit(1); - } - } - fclose(fp); - } - dbp->close(dbp); - exit(0); -} diff --git a/src/util/db2/test/hash1.tests/tread2.c b/src/util/db2/test/hash1.tests/tread2.c deleted file mode 100644 index 1e2cc4c50..000000000 --- a/src/util/db2/test/hash1.tests/tread2.c +++ /dev/null @@ -1,105 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Margo Seltzer. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1991, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)tread2.c 8.1 (Berkeley) 6/4/93"; -#endif /* not lint */ - -#include <sys/types.h> -#include <sys/file.h> -#include <stdio.h> -#include "db-int.h" - -#define INITIAL 25000 -#define MAXWORDS 25000 /* # of elements in search table */ - -typedef struct { /* info to be stored */ - int num, siz; -} info; - -char wp1[8192]; -char wp2[8192]; -main(argc, argv) -char **argv; -{ - DBT item, key, res; - DB *dbp; - HASHINFO ctl; - int stat; - - int i = 0; - - ctl.nelem = INITIAL; - ctl.hash = NULL; - ctl.bsize = 64; - ctl.ffactor = 1; - ctl.cachesize = atoi(*argv++); - ctl.lorder = 0; - if (!(dbp = dbopen( "hashtest", O_RDONLY|O_BINARY, 0400, DB_HASH, &ctl))) { - /* create table */ - fprintf(stderr, "cannot open: hash table\n" ); - exit(1); - } - - key.data = wp1; - item.data = wp2; - while ( fgets(wp1, 8192, stdin) && - fgets(wp2, 8192, stdin) && - i++ < MAXWORDS) { -/* -* put info in structure, and structure in the item -*/ - key.size = strlen(wp1); - item.size = strlen(wp2); - - stat = (dbp->get)(dbp, &key, &res,0); - if (stat < 0) { - fprintf ( stderr, "Error retrieving %s\n", key.data ); - exit(1); - } else if ( stat > 0 ) { - fprintf ( stderr, "%s not found\n", key.data ); - exit(1); - } - } - (dbp->close)(dbp); - exit(0); -} diff --git a/src/util/db2/test/hash1.tests/tseq.c b/src/util/db2/test/hash1.tests/tseq.c deleted file mode 100644 index d2d36862d..000000000 --- a/src/util/db2/test/hash1.tests/tseq.c +++ /dev/null @@ -1,88 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Margo Seltzer. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1991, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)tseq.c 8.1 (Berkeley) 6/4/93"; -#endif /* not lint */ - -#include <sys/types.h> -#include <sys/file.h> -#include <stdio.h> -#include "db-int.h" - -#define INITIAL 25000 -#define MAXWORDS 25000 /* # of elements in search table */ - - -char wp[8192]; -char cp[8192]; -main(argc, argv) -char **argv; -{ - DBT item, key, res; - DB *dbp; - FILE *fp; - int stat; - - if (!(dbp = dbopen( "hashtest", O_RDONLY|O_BINARY, 0400, DB_HASH, NULL))) { - /* create table */ - fprintf(stderr, "cannot open: hash table\n" ); - exit(1); - } - -/* -* put info in structure, and structure in the item -*/ - for ( stat = (dbp->seq) (dbp, &res, &item, 1 ); - stat == 0; - stat = (dbp->seq) (dbp, &res, &item, 0 ) ) { - - memcpy ( wp, res.data, res.size ); - wp[res.size] = 0; - memcpy ( cp, item.data, item.size ); - cp[item.size] = 0; - - printf ( "%s %s\n", wp, cp ); - } - (dbp->close)(dbp); - exit(0); -} diff --git a/src/util/db2/test/hash1.tests/tverify.c b/src/util/db2/test/hash1.tests/tverify.c deleted file mode 100644 index 4747804f7..000000000 --- a/src/util/db2/test/hash1.tests/tverify.c +++ /dev/null @@ -1,107 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Margo Seltzer. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1991, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)tverify.c 8.1 (Berkeley) 6/4/93"; -#endif /* not lint */ - -#include <sys/types.h> -#include <sys/file.h> -#include <stdio.h> -#include "db-int.h" - -#define INITIAL 25000 -#define MAXWORDS 25000 /* # of elements in search table */ - -typedef struct { /* info to be stored */ - int num, siz; -} info; - -char wp1[8192]; -char wp2[8192]; -main(argc, argv) -char **argv; -{ - DBT key, res; - DB *dbp; - HASHINFO ctl; - int trash; - int stat; - - int i = 0; - - ctl.nelem = INITIAL; - ctl.hash = NULL; - ctl.bsize = 64; - ctl.ffactor = 1; - ctl.cachesize = 1024 * 1024; /* 1 MEG */ - ctl.lorder = 0; - if (!(dbp = dbopen( "hashtest", O_RDONLY|O_BINARY, 0400, DB_HASH, &ctl))) { - /* create table */ - fprintf(stderr, "cannot open: hash table\n" ); - exit(1); - } - - key.data = wp1; - while ( fgets(wp1, 8192, stdin) && - fgets(wp2, 8192, stdin) && - i++ < MAXWORDS) { -/* -* put info in structure, and structure in the item -*/ - key.size = strlen(wp1); - - stat = (dbp->get)(dbp, &key, &res,0); - if (stat < 0) { - fprintf ( stderr, "Error retrieving %s\n", key.data ); - exit(1); - } else if ( stat > 0 ) { - fprintf ( stderr, "%s not found\n", key.data ); - exit(1); - } - if ( memcmp ( res.data, wp2, res.size ) ) { - fprintf ( stderr, "data for %s is incorrect. Data was %s. Should have been %s\n", key.data, res.data, wp2 ); - } - } - (dbp->close)(dbp); - exit(0); -} diff --git a/src/util/db2/test/hash2.tests/README b/src/util/db2/test/hash2.tests/README deleted file mode 100644 index f29ccf7e1..000000000 --- a/src/util/db2/test/hash2.tests/README +++ /dev/null @@ -1,72 +0,0 @@ -# @(#)README 8.1 (Berkeley) 6/4/93 - -This package implements a superset of the hsearch and dbm/ndbm libraries. - -Test Programs: - All test programs which need key/data pairs expect them entered - with key and data on separate lines - - tcreat3.c - Takes - bucketsize (bsize), - fill factor (ffactor), and - initial number of elements (nelem). - Creates a hash table named hashtest containing the - keys/data pairs entered from standard in. - thash4.c - Takes - bucketsize (bsize), - fill factor (ffactor), - initial number of elements (nelem) - bytes of cache (ncached), and - file from which to read data (fname) - Creates a table from the key/data pairs on standard in and - then does a read of each key/data in fname - tdel.c - Takes - bucketsize (bsize), and - fill factor (ffactor). - file from which to read data (fname) - Reads each key/data pair from fname and deletes the - key from the hash table hashtest - tseq.c - Reads the key/data pairs in the file hashtest and writes them - to standard out. - tread2.c - Takes - butes of cache (ncached). - Reads key/data pairs from standard in and looks them up - in the file hashtest. - tverify.c - Reads key/data pairs from standard in, looks them up - in the file hashtest, and verifies that the data is - correct. - -NOTES: - -The file search.h is provided for using the hsearch compatible interface -on BSD systems. On System V derived systems, search.h should appear in -/usr/include. - -The man page ../man/db.3 explains the interface to the hashing system. -The file hash.ps is a postscript copy of a paper explaining -the history, implementation, and performance of the hash package. - -"bugs" or idiosyncracies - -If you have a lot of overflows, it is possible to run out of overflow -pages. Currently, this will cause a message to be printed on stderr. -Eventually, this will be indicated by a return error code. - -If you are using the ndbm interface and exit without flushing or closing the -file, you may lose updates since the package buffers all writes. Also, -the db interface only creates a single database file. To avoid overwriting -the user's original file, the suffix ".db" is appended to the file name -passed to dbm_open. Additionally, if your code "knows" about the historic -.dir and .pag files, it will break. - -There is a fundamental difference between this package and the old hsearch. -Hsearch requires the user to maintain the keys and data in the application's -allocated memory while hash takes care of all storage management. The down -side is that the byte strings passed in the ENTRY structure must be null -terminated (both the keys and the data). diff --git a/src/util/db2/test/hash2.tests/bigtest.c b/src/util/db2/test/hash2.tests/bigtest.c deleted file mode 100644 index 81c559ad2..000000000 --- a/src/util/db2/test/hash2.tests/bigtest.c +++ /dev/null @@ -1,76 +0,0 @@ -#include "db-int.h" -#include <stdio.h> -#include <fcntl.h> -#include <assert.h> -#include <stdlib.h> - -int -main(void) -{ - HASHINFO info; - DB *db; - DBT key, value, returned; - int *data; - int n, i; - - info.bsize = 512; - info.cachesize = 500; - info.lorder = 0; - info.ffactor = 4; - info.nelem = 0; - info.hash = NULL; - - db = dbopen("big2.db", O_RDWR|O_CREAT|O_TRUNC|O_BINARY, 0664, DB_HASH, &info); - data = malloc(800 * sizeof(int)); - for (n = 0; n < 800; n++) - data[n] = 0xDEADBEEF; - key.size = sizeof(int); - key.data = &n; - value.size = 800 * sizeof(int); - value.data = (void *)data; - - for (n = 0; n < 200000; n++) { - returned.data = NULL; - if (n == 4627) - printf(""); - if (n % 50 == 0) - printf("put n = %d\n", n); - if (db->put(db, &key, &value, 0) != 0) - printf("put error, n = %d\n", n); - if (db->get(db, &key, &returned, 0) != 0) - printf("Immediate get error, n = %d\n", n); - assert (returned.size == 3200); - for (i = 0; i < 800; i++) - if (((int *)returned.data)[i] != 0xDEADBEEF) - printf("ERRORRRRRR!!!\n"); - - } - - for (n = 0; n < 200000; n++) { - if (n % 50 == 0) - printf("seq n = %d\n", n); - if ((db->seq(db, &key, &returned, 0)) != 0) - printf("Seq error, n = %d\n", n); - - assert(returned.size == 3200); - - for (i = 0; i < 800; i++) - if (((int *)returned.data)[i] != 0xDEADBEEF) - printf("ERRORRRRRR!!! seq %d\n", n); - } - - for (n = 0; n < 2000; n++) { - if (n % 50 == 0) - printf("get n = %d\n", n); - if (db->get(db, &key, &returned, 0) != 0) - printf("Late get error, n = %d\n", n); - assert(returned.size == 1200); - for (i = 0; i < 300; i++) - if (((int *)returned.data)[i] != 0xDEADBEEF) - printf("ERRORRRRRR!!!, get %d\n", n); - } - db->close(db); - free(value.data); - return(0); -} - diff --git a/src/util/db2/test/hash2.tests/passtest.c b/src/util/db2/test/hash2.tests/passtest.c deleted file mode 100644 index adb72c004..000000000 --- a/src/util/db2/test/hash2.tests/passtest.c +++ /dev/null @@ -1,184 +0,0 @@ -#include "db-int.h" -#include <fcntl.h> -#include <stdio.h> -#include <string.h> - -extern int hash_expansions; - -int -main(void) -{ - FILE *keys, *vals; - DB *db; - DBT key, val; - char *key_line, *val_line, *get_key, *get_val, *old, *key2; - HASHINFO passwd; - int n = 0, i = 0, expected; - - key_line = (char *)malloc(100); - val_line = (char *)malloc(300); - old = (char *)malloc(300); - - keys = fopen("yp.keys", "rt"); - vals = fopen("yp.total", "rt"); - - passwd.bsize = 1024; - passwd.cachesize = 1024 * 1024; - passwd.ffactor = 10; - passwd.hash = NULL; - passwd.nelem = 0; - passwd.lorder = 4321; - - - db = dbopen("/usr/tmp/passwd.db", O_RDWR|O_CREAT|O_TRUNC|O_BINARY, 0664, DB_HASH, - &passwd); - if (!db) { - fprintf(stderr, "create_db: couldn't create database file\n"); - exit(1); - } - - while ((key_line = fgets(key_line, 100, keys)) != NULL) { - if (n % 1000 == 0) - fprintf(stderr, "Putting #%d.\n", n); - n++; - fgets(val_line, 300, vals); - key.size = strlen(key_line); - key.data = (void *)key_line; - val.size = strlen(val_line); - val.data = (void *)val_line; - if (db->put(db, &key, &val, 0) != 0) - fprintf(stderr, "Put error, n = %d\n", n); - if (db->get(db, &key, &val, 0) != 0) - fprintf(stderr, "Immediate get error, n = %d\n", n); - } - fprintf(stderr, "Done with put!\n"); - free(key_line); - free(val_line); - fclose(keys); - fclose(vals); - db->close(db); - - - - - keys = fopen("yp.keys", "rt"); - vals = fopen("yp.total", "rt"); - get_key = (char *)malloc(100); - get_val = (char *)malloc(300); - - db = dbopen("/usr/tmp/passwd.db", O_RDWR|O_BINARY, 0664, DB_HASH, &passwd); - if (!db) - fprintf(stderr, "Could not open db!\n"); - n = 0; - while ((get_key = fgets(get_key, 100, keys)) != NULL) { - n++; - if (n % 1000 == 0) - fprintf(stderr, "Getting #%d.\n", n); - key.size = strlen(get_key); - key.data = (void *)get_key; - if (db->get(db, &key, &val, 0) != 0) - fprintf(stderr, "Retrieval error on %s\n", get_key); - fgets(get_val, 300, vals); - if (memcmp(val.data, (void *)get_val, val.size)) { - fprintf(stderr, "Unmatched get on %s.\n", get_key); - fprintf(stderr, "Input = %s\nOutput = %s\n", get_val, - (char *)val.data); - } - } - expected = n; - fclose(vals); - fclose(keys); - free(get_key); - free(get_val); - db->close(db); - - - - - get_key = (char *)malloc(100); - get_val = (char *)malloc(300); - - db = dbopen("/usr/tmp/passwd.db", O_RDWR, 0664, DB_HASH, &passwd); - if (!db) - fprintf(stderr, "Could not open db!\n"); - n = 0; - for (;;) { - n++; - if (n % 1000 == 0) - fprintf(stderr, "Sequence getting #%d.\n", n); - if (db->seq(db, &key, &val, 0) != 0) { - fprintf(stderr, - "Exiting sequence retrieve; n = %d, expected = %d\n", - n - 1 , expected); - break; - } - } - free(get_key); - free(get_val); - db->close(db); - - get_key = (char *)malloc(100); - key2 = (char *)malloc(100); - - keys = fopen("yp.keys", "rt"); - vals = fopen("yp.total", "rt"); - - db = dbopen("/usr/tmp/passwd.db", O_RDWR|O_BINARY, 0664, DB_HASH, &passwd); - n = 0; - while ((get_key = fgets(get_key, 100, keys)) != NULL) { - if (n % 1000 == 0) - fprintf(stderr, "Deleting #%d.\n", n); - n+=2; - key2 = fgets(get_key, 100, keys); - if (!key2) - break; - key.data = (void *)key2; - key.size = strlen(key2); - if (db->del(db, &key, 0) != 0) - fprintf(stderr, "Delete error on %d", n); - } - - db->close(db); - free(get_key); - free(key2); - fclose(keys); - fclose(vals); - - get_key = (char *)malloc(100); - key2 = (char *)malloc(100); - get_val = (char *)malloc(300); - - keys = fopen("yp.keys", "rt"); - vals = fopen("yp.total", "rt"); - - db = dbopen("/usr/tmp/passwd.db", O_RDWR|O_BINARY, 0664, DB_HASH, &passwd); - n = 0; - while ((get_key = fgets(get_key, 100, keys)) != NULL) { - n += 2; - if (n % 1000 == 0) - fprintf(stderr, "Re-retrieving #%d.\n", n); - key2 = fgets(key2, 100, keys); - if (!key2) - break; - key.data = (void *)get_key; - key.size = strlen(get_key); - if (db->get(db, &key, &val, 0) != 0) - fprintf(stderr, "Retrieval after delete error on %d\n", n); - fgets(get_val, 300, vals); - if (memcmp(val.data, (void *)get_val, val.size)) { - fprintf(stderr, "Unmatched get after delete on %s.\n", get_key); - fprintf(stderr, "Input = %s\nOutput = %s\n", get_val, - (char *)val.data); - } - fgets(get_val, 300, vals); - } - - db->close(db); - free(get_key); - free(key2); - free(get_val); - fclose(keys); - fclose(vals); - - exit(0); -} diff --git a/src/util/db2/test/hash2.tests/passwd/genpass.c b/src/util/db2/test/hash2.tests/passwd/genpass.c deleted file mode 100644 index da3767687..000000000 --- a/src/util/db2/test/hash2.tests/passwd/genpass.c +++ /dev/null @@ -1,23 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -void -main(int argc, char **argv) -{ - int i,j,n; - char *pass[8], r; - - n = atoi(argv[1]); - - srandom(101173); - for (i = 0; i < n; i++) { - for (j = 0; j < 8; j++) { - r = random() % 122; - while (r < 48) - r += random() % (122 - r); - printf("%c", r); - } - printf("\n"); - } -} - diff --git a/src/util/db2/test/run.test b/src/util/db2/test/run.test deleted file mode 100644 index 48c3a63d0..000000000 --- a/src/util/db2/test/run.test +++ /dev/null @@ -1,746 +0,0 @@ -#!/bin/sh - -# -# @(#)run.test 8.13 (Berkeley) 11/2/95 -# - -# db regression tests -main() -{ - - PROG=./dbtest - TMP1=${TMPDIR-.}/t1 - TMP2=${TMPDIR-.}/t2 - TMP3=${TMPDIR-.}/t3 - - if [ \! -z "$WORDLIST" -a -f "$WORDLIST" ]; then - DICT=$WORDLIST - elif [ -f /usr/local/lib/dict/words ]; then - DICT=/usr/local/lib/dict/words - elif [ -f /usr/share/dict/words ]; then - DICT=/usr/share/dict/words - elif [ -f /usr/dict/words ]; then - DICT=/usr/dict/words - elif [ -f /usr/share/lib/dict/words ]; then - DICT=/usr/share/lib/dict/words - elif [ -f $srcdir/../test/dictionary ]; then - DICT=`cd $srcdir/../test && pwd`/dictionary - else - echo 'run.test: no dictionary' - exit 1 - fi - - dictsize=`wc -l < $DICT` - - bindir=/bin/. - - if [ $# -eq 0 ]; then - for t in 1 2 3 4 5 6 7 8 9 10 11 12 13 20; do - test$t - done - else - while [ $# -gt 0 ] - do case "$1" in - test*) - $1;; - [0-9]*) - test$1;; - btree) - for t in 1 2 3 7 8 9 10 12 13; do - test$t - done;; - hash) - for t in 1 2 3 8 13 20; do - test$t - done;; - recno) - for t in 1 2 3 4 5 6 7 10 11; do - test$t - done;; - *) - echo "run.test: unknown test $1" - echo "usage: run.test test# | type" - exit 1 - esac - shift - done - fi - rm -f $TMP1 $TMP2 $TMP3 - exit 0 -} - -getnwords() { - # Delete blank lines because the db code appears not to - # like empty keys. On Debian Linux, $DICT appears to contain - # some non-ASCII characters, and "rev" chokes on them. - sed -e '/^$/d' < $DICT | cat -v | sed -e ${1}q -} - -# Take the first hundred entries in the dictionary, and make them -# be key/data pairs. -test1() -{ - echo "Test 1: btree, hash: small key, small data pairs" - getnwords 200 > $TMP1 - for type in btree hash; do - rm -f $TMP2 $TMP3 - for i in `cat $TMP1`; do - echo p - echo k$i - echo d$i - echo g - echo k$i - done > $TMP2 - $PROG -o $TMP3 $type $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test1: type $type: failed" - exit 1 - fi - done - echo "Test 1: recno: small key, small data pairs" - rm -f $TMP2 $TMP3 - awk '{ - ++i; - printf("p\nk%d\nd%s\ng\nk%d\n", i, $0, i); - }' < $TMP1 > $TMP2 - $PROG -o $TMP3 recno $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test1: type recno: failed" - exit 1 - fi -} - -# Take the first 200 entries in the dictionary, and give them -# each a medium size data entry. -test2() -{ - echo "Test 2: btree, hash: small key, medium data pairs" - mdata=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz - echo $mdata | - awk '{ for (i = 1; i < 201; ++i) print $0 }' > $TMP1 - for type in hash btree; do - rm -f $TMP2 $TMP3 - for i in `getnwords 200`; do - echo p - echo k$i - echo d$mdata - echo g - echo k$i - done > $TMP2 - $PROG -o $TMP3 $type $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test2: type $type: failed" - exit 1 - fi - done - echo "Test 2: recno: small key, medium data pairs" - rm -f $TMP2 $TMP3 - echo $mdata | - awk '{ for (i = 1; i < 201; ++i) - printf("p\nk%d\nd%s\ng\nk%d\n", i, $0, i); - }' > $TMP2 - $PROG -o $TMP3 recno $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test2: type recno: failed" - exit 1 - fi -} - -# Insert the programs in $bindir with their paths as their keys. -test3() -{ - echo "Test 3: hash: small key, big data pairs" - rm -f $TMP1 - (find $bindir -type f -exec test -r {} \; -print | xargs cat) > $TMP1 - for type in hash; do - rm -f $TMP2 $TMP3 - for i in `find $bindir -type f -exec test -r {} \; -print`; do - echo p - echo k$i - echo D$i - echo g - echo k$i - done > $TMP2 - $PROG -o $TMP3 $type $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test3: $type: failed" - exit 1 - fi - done - echo "Test 3: btree: small key, big data pairs" - for psize in 512 16384 65536; do - echo " page size $psize" - for type in btree; do - rm -f $TMP2 $TMP3 - for i in `find $bindir -type f -exec test -r {} \; -print`; do - echo p - echo k$i - echo D$i - echo g - echo k$i - done > $TMP2 - $PROG -i psize=$psize -o $TMP3 $type $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test3: $type: page size $psize: failed" - exit 1 - fi - done - done - echo "Test 3: recno: big data pairs" - rm -f $TMP2 $TMP3 - find $bindir -type f -exec test -r {} \; -print | - awk '{ - ++i; - printf("p\nk%d\nD%s\ng\nk%d\n", i, $0, i); - }' > $TMP2 - for psize in 512 16384 65536; do - echo " page size $psize" - $PROG -i psize=$psize -o $TMP3 recno $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test3: recno: page size $psize: failed" - exit 1 - fi - done -} - -# Do random recno entries. -test4() -{ - echo "Test 4: recno: random entries" - echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" | - awk '{ - for (i = 37; i <= 37 + 88 * 17; i += 17) { - if (i % 41) - s = substr($0, 1, i % 41); - else - s = substr($0, 1); - printf("input key %d: %s\n", i, s); - } - for (i = 1; i <= 15; ++i) { - if (i % 41) - s = substr($0, 1, i % 41); - else - s = substr($0, 1); - printf("input key %d: %s\n", i, s); - } - for (i = 19234; i <= 19234 + 61 * 27; i += 27) { - if (i % 41) - s = substr($0, 1, i % 41); - else - s = substr($0, 1); - printf("input key %d: %s\n", i, s); - } - exit - }' > $TMP1 - rm -f $TMP2 $TMP3 - cat $TMP1 | - awk 'BEGIN { - i = 37; - incr = 17; - } - { - printf("p\nk%d\nd%s\n", i, $0); - if (i == 19234 + 61 * 27) - exit; - if (i == 37 + 88 * 17) { - i = 1; - incr = 1; - } else if (i == 15) { - i = 19234; - incr = 27; - } else - i += incr; - } - END { - for (i = 37; i <= 37 + 88 * 17; i += 17) - printf("g\nk%d\n", i); - for (i = 1; i <= 15; ++i) - printf("g\nk%d\n", i); - for (i = 19234; i <= 19234 + 61 * 27; i += 27) - printf("g\nk%d\n", i); - }' > $TMP2 - $PROG -o $TMP3 recno $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test4: type recno: failed" - exit 1 - fi -} - -# Do reverse order recno entries. -test5() -{ - echo "Test 5: recno: reverse order entries" - echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" | - awk ' { - for (i = 1500; i; --i) { - if (i % 34) - s = substr($0, 1, i % 34); - else - s = substr($0, 1); - printf("input key %d: %s\n", i, s); - } - exit; - }' > $TMP1 - rm -f $TMP2 $TMP3 - cat $TMP1 | - awk 'BEGIN { - i = 1500; - } - { - printf("p\nk%d\nd%s\n", i, $0); - --i; - } - END { - for (i = 1500; i; --i) - printf("g\nk%d\n", i); - }' > $TMP2 - $PROG -o $TMP3 recno $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test5: type recno: failed" - exit 1 - fi -} - -# Do alternating order recno entries. -test6() -{ - echo "Test 6: recno: alternating order entries" - echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" | - awk ' { - for (i = 1; i < 1200; i += 2) { - if (i % 34) - s = substr($0, 1, i % 34); - else - s = substr($0, 1); - printf("input key %d: %s\n", i, s); - } - for (i = 2; i < 1200; i += 2) { - if (i % 34) - s = substr($0, 1, i % 34); - else - s = substr($0, 1); - printf("input key %d: %s\n", i, s); - } - exit; - }' > $TMP1 - rm -f $TMP2 $TMP3 - cat $TMP1 | - awk 'BEGIN { - i = 1; - even = 0; - } - { - printf("p\nk%d\nd%s\n", i, $0); - i += 2; - if (i >= 1200) { - if (even == 1) - exit; - even = 1; - i = 2; - } - } - END { - for (i = 1; i < 1200; ++i) - printf("g\nk%d\n", i); - }' > $TMP2 - $PROG -o $TMP3 recno $TMP2 - sort -o $TMP1 $TMP1 - sort -o $TMP3 $TMP3 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test6: type recno: failed" - exit 1 - fi -} - -# Delete cursor record -test7() -{ - echo "Test 7: btree, recno: delete cursor record" - echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" | - awk '{ - for (i = 1; i <= 120; ++i) - printf("%05d: input key %d: %s\n", i, i, $0); - printf("%05d: input key %d: %s\n", 120, 120, $0); - printf("seq failed, no such key\n"); - printf("%05d: input key %d: %s\n", 1, 1, $0); - printf("%05d: input key %d: %s\n", 2, 2, $0); - exit; - }' > $TMP1 - rm -f $TMP2 $TMP3 - - for type in btree recno; do - cat $TMP1 | - awk '{ - if (i == 120) - exit; - printf("p\nk%d\nd%s\n", ++i, $0); - } - END { - printf("fR_NEXT\n"); - for (i = 1; i <= 120; ++i) - printf("s\n"); - printf("fR_CURSOR\ns\nk120\n"); - printf("r\n"); - printf("fR_NEXT\ns\n"); - printf("fR_CURSOR\ns\nk1\n"); - printf("r\n"); - printf("fR_FIRST\ns\n"); - }' > $TMP2 - $PROG -o $TMP3 recno $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test7: type $type: failed" - exit 1 - fi - done -} - -# Make sure that overflow pages are reused. -test8() -{ - echo "Test 8: btree: repeated small key, big data pairs" - rm -f $TMP1 - echo "" | - awk 'BEGIN { - for (i = 1; i <= 10; ++i) { - printf("p\nkkey1\nD/bin/sh\n"); - printf("p\nkkey2\nD/bin/csh\n"); - if (i % 8 == 0) { - printf("c\nkkey2\nD/bin/csh\n"); - printf("c\nkkey1\nD/bin/sh\n"); - printf("e\t%d of 10 (comparison)\n", i); - } else - printf("e\t%d of 10 \n", i); - printf("r\nkkey1\nr\nkkey2\n"); - } - }' > $TMP1 - if $PROG btree $TMP1 ; then - true - else - echo "test8: btree tests failed" - exit 1 - fi -# $PROG hash $TMP1 - # No explicit test for success. -} - -# Test btree duplicate keys -test9() -{ - echo "Test 9: btree: duplicate keys" - echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" | - awk '{ - for (i = 1; i <= 543; ++i) - printf("%05d: input key %d: %s\n", i, i, $0); - exit; - }' > $TMP1 - rm -f $TMP2 $TMP3 - - for type in btree; do - cat $TMP1 | - awk '{ - if (i++ % 2) - printf("p\nkduplicatekey\nd%s\n", $0); - else - printf("p\nkunique%dkey\nd%s\n", i, $0); - } - END { - printf("o\n"); - }' > $TMP2 - $PROG -iflags=1 -o $TMP3 $type $TMP2 - sort -o $TMP3 $TMP3 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test9: type $type: failed" - exit 1 - fi - done -} - -# Test use of cursor flags without initialization -test10() -{ - echo "Test 10: btree, recno: test cursor flag use" - echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" | - awk '{ - for (i = 1; i <= 20; ++i) - printf("%05d: input key %d: %s\n", i, i, $0); - exit; - }' > $TMP1 - rm -f $TMP2 $TMP3 - - # Test that R_CURSOR doesn't succeed before cursor initialized - for type in btree recno; do - cat $TMP1 | - awk '{ - if (i == 10) - exit; - printf("p\nk%d\nd%s\n", ++i, $0); - } - END { - printf("fR_CURSOR\nr\n"); - printf("eR_CURSOR SHOULD HAVE FAILED\n"); - }' > $TMP2 - $PROG -o $TMP3 $type $TMP2 > /dev/null 2>&1 - if [ -s $TMP3 ] ; then - echo "Test 10: delete: R_CURSOR SHOULD HAVE FAILED" - exit 1 - fi - done - for type in btree recno; do - cat $TMP1 | - awk '{ - if (i == 10) - exit; - printf("p\nk%d\nd%s\n", ++i, $0); - } - END { - printf("fR_CURSOR\np\nk1\ndsome data\n"); - printf("eR_CURSOR SHOULD HAVE FAILED\n"); - }' > $TMP2 - $PROG -o $TMP3 $type $TMP2 > /dev/null 2>&1 - if [ -s $TMP3 ] ; then - echo "Test 10: put: R_CURSOR SHOULD HAVE FAILED" - exit 1 - fi - done -} - -# Test insert in reverse order. -test11() -{ - echo "Test 11: recno: reverse order insert" - echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" | - awk '{ - for (i = 1; i <= 779; ++i) - printf("%05d: input key %d: %s\n", i, i, $0); - exit; - }' > $TMP1 - rm -f $TMP2 $TMP3 - - for type in recno; do - cat $TMP1 | - awk '{ - if (i == 0) { - i = 1; - printf("p\nk1\nd%s\n", $0); - printf("%s\n", "fR_IBEFORE"); - } else - printf("p\nk1\nd%s\n", $0); - } - END { - printf("or\n"); - }' > $TMP2 - $PROG -o $TMP3 $type $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test11: type $type: failed" - exit 1 - fi - done -} - -# Take the first 20000 entries in the dictionary, reverse them, and give -# them each a small size data entry. Use a small page size to make sure -# the btree split code gets hammered. -test12() -{ - if ( rev < /dev/null ) > /dev/null 2>&1 ; then - : - else - echo "Test 12: skipped, rev not found" - return - fi - if test $dictsize -lt 20001 ; then - echo "Test 12: skipped, dictionary too small" - return - else - : - fi - echo "Test 12: btree: lots of keys, small page size" - mdata=abcdefghijklmnopqrstuvwxy - echo $mdata | - awk '{ for (i = 1; i < 20001; ++i) print $0 }' > $TMP1 - for type in btree; do - rm -f $TMP2 $TMP3 - for i in `getnwords 20000 | rev`; do - echo p - echo k$i - echo d$mdata - echo g - echo k$i - done > $TMP2 - $PROG -i psize=512 -o $TMP3 $type $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test12: type $type: failed" - exit 1 - fi - done -} - -# Test different byte orders. -test13() -{ - echo "Test 13: btree, hash: differing byte orders" - getnwords 50 > $TMP1 - for order in 1234 4321; do - for type in btree hash; do - rm -f byte.file $TMP2 $TMP3 - for i in `cat $TMP1`; do - echo p - echo k$i - echo d$i - echo g - echo k$i - done > $TMP2 - $PROG -ilorder=$order -f byte.file -o $TMP3 $type $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test13: $type/$order put failed" - exit 1 - fi - for i in `cat $TMP1`; do - echo g - echo k$i - done > $TMP2 - $PROG -s \ - -ilorder=$order -f byte.file -o $TMP3 $type $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test13: $type/$order get failed" - exit 1 - fi - done - done - rm -f byte.file -} - -# Try a variety of bucketsizes and fill factors for hashing -test20() -{ - if test $dictsize -lt 10001 ; then - echo "Test 20: skipped, dictionary too small" - return - else - : - fi - echo\ - "Test 20: hash: bucketsize, fill factor; nelem 25000 cachesize 65536" - echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" | - awk '{ - for (i = 1; i <= 10000; ++i) { - if (i % 34) - s = substr($0, 1, i % 34); - else - s = substr($0, 1); - printf("%s\n", s); - } - exit; - }' > $TMP1 - getnwords 10000 | - awk 'BEGIN { - ds="abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" - } - { - if (++i % 34) - s = substr(ds, 1, i % 34); - else - s = substr(ds, 1); - printf("p\nk%s\nd%s\n", $0, s); - }' > $TMP2 - getnwords 10000 | - awk '{ - ++i; - printf("g\nk%s\n", $0); - }' >> $TMP2 - bsize=256 - for ffactor in 11 14 21; do - echo " bucketsize $bsize, fill factor $ffactor" - $PROG -o$TMP3 \ - -ibsize=$bsize,ffactor=$ffactor,nelem=25000,cachesize=65536\ - hash $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test20: type hash:\ -bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed" - exit 1 - fi - done - bsize=512 - for ffactor in 21 28 43; do - echo " bucketsize $bsize, fill factor $ffactor" - $PROG -o$TMP3 \ - -ibsize=$bsize,ffactor=$ffactor,nelem=25000,cachesize=65536\ - hash $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test20: type hash:\ -bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed" - exit 1 - fi - done - bsize=1024 - for ffactor in 43 57 85; do - echo " bucketsize $bsize, fill factor $ffactor" - $PROG -o$TMP3 \ - -ibsize=$bsize,ffactor=$ffactor,nelem=25000,cachesize=65536\ - hash $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test20: type hash:\ -bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed" - exit 1 - fi - done - bsize=2048 - for ffactor in 85 114 171; do - echo " bucketsize $bsize, fill factor $ffactor" - $PROG -o$TMP3 \ - -ibsize=$bsize,ffactor=$ffactor,nelem=25000,cachesize=65536\ - hash $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test20: type hash:\ -bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed" - exit 1 - fi - done - bsize=4096 - for ffactor in 171 228 341; do - echo " bucketsize $bsize, fill factor $ffactor" - $PROG -o$TMP3 \ - -ibsize=$bsize,ffactor=$ffactor,nelem=25000,cachesize=65536\ - hash $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test20: type hash:\ -bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed" - exit 1 - fi - done - bsize=8192 - for ffactor in 341 455 683; do - echo " bucketsize $bsize, fill factor $ffactor" - $PROG -o$TMP3 \ - -ibsize=$bsize,ffactor=$ffactor,nelem=25000,cachesize=65536\ - hash $TMP2 - if (cmp -s $TMP1 $TMP3) ; then : - else - echo "test20: type hash:\ -bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed" - exit 1 - fi - done -} - -main $* |
