aboutsummaryrefslogtreecommitdiff
path: root/lib/libc/db/test
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/db/test')
-rw-r--r--lib/libc/db/test/Makefile16
-rw-r--r--lib/libc/db/test/dbtest.c56
-rw-r--r--lib/libc/db/test/run.test315
-rw-r--r--lib/libc/db/test/strerror.c67
4 files changed, 309 insertions, 145 deletions
diff --git a/lib/libc/db/test/Makefile b/lib/libc/db/test/Makefile
index f04a780c74dc..a070941f8f2d 100644
--- a/lib/libc/db/test/Makefile
+++ b/lib/libc/db/test/Makefile
@@ -1,10 +1,14 @@
-# @(#)Makefile 8.1 (Berkeley) 6/4/93
+# @(#)Makefile 8.7 (Berkeley) 1/2/94
PROG= dbtest
-SRCS= dbtest.c
+OBJS= dbtest.o
-CFLAGS+= -g -DDEBUG -DSTATISTICS
-NOMAN= noman
+# Add -DSTATISTICS to CFLAGS to get btree statistical use info.
+# Note, the db library has to be compiled for statistics as well.
+CFLAGS= -O -DDEBUG
-NOINCLUDE=1
-.include <bsd.prog.mk>
+dbtest: ${OBJS} ${LIB}
+ ${CC} -o $@ ${OBJS} ${LIB}
+
+clean:
+ rm -f gmon.out ${OBJS} ${PROG} t1 t2 t3
diff --git a/lib/libc/db/test/dbtest.c b/lib/libc/db/test/dbtest.c
index 823223088dd1..41a115e9b602 100644
--- a/lib/libc/db/test/dbtest.c
+++ b/lib/libc/db/test/dbtest.c
@@ -38,7 +38,7 @@ static char copyright[] =
#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)dbtest.c 8.1 (Berkeley) 6/4/93";
+static char sccsid[] = "@(#)dbtest.c 8.7 (Berkeley) 1/2/94";
#endif /* not lint */
#include <sys/param.h>
@@ -91,12 +91,13 @@ main(argc, argv)
DB *dbp;
DBT data, key, keydata;
size_t len;
- int ch;
+ int ch, oflags;
char *fname, *infoarg, *p, buf[8 * 1024];
infoarg = NULL;
fname = NULL;
- while ((ch = getopt(argc, argv, "f:i:o:")) != EOF)
+ oflags = O_CREAT | O_RDWR;
+ while ((ch = getopt(argc, argv, "f:i:lo:")) != EOF)
switch(ch) {
case 'f':
fname = optarg;
@@ -104,6 +105,9 @@ main(argc, argv)
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)
@@ -145,7 +149,7 @@ main(argc, argv)
(void)unlink(buf);
}
if ((dbp = dbopen(fname,
- O_CREAT | O_RDWR, S_IRUSR | S_IWUSR, type, infop)) == NULL)
+ oflags, S_IRUSR | S_IWUSR, type, infop)) == NULL)
err("dbopen: %s", strerror(errno));
XXdbp = dbp;
@@ -238,7 +242,7 @@ ldata: switch(command) {
err("line %lu: not expecting a key", lineno);
if (type == DB_RECNO) {
static recno_t recno;
- recno = strtol(p + 1, NULL, 0);
+ recno = atoi(p + 1);
key.data = &recno;
key.size = sizeof(recno);
} else {
@@ -284,6 +288,10 @@ lkey: switch(command) {
p, lineno);
}
}
+#ifdef STATISTICS
+ if (type == DB_BTREE)
+ __bt_stat(dbp);
+#endif
if (dbp->close(dbp))
err("db->close: %s", strerror(errno));
(void)close(ofd);
@@ -502,75 +510,75 @@ setinfo(type, s)
switch(type) {
case DB_BTREE:
if (!strcmp("flags", s)) {
- ib.flags = strtoul(eq, NULL, 0);
+ ib.flags = atoi(eq);
return (&ib);
}
if (!strcmp("cachesize", s)) {
- ib.cachesize = strtoul(eq, NULL, 0);
+ ib.cachesize = atoi(eq);
return (&ib);
}
if (!strcmp("maxkeypage", s)) {
- ib.maxkeypage = strtoul(eq, NULL, 0);
+ ib.maxkeypage = atoi(eq);
return (&ib);
}
if (!strcmp("minkeypage", s)) {
- ib.minkeypage = strtoul(eq, NULL, 0);
+ ib.minkeypage = atoi(eq);
return (&ib);
}
if (!strcmp("lorder", s)) {
- ib.lorder = strtoul(eq, NULL, 0);
+ ib.lorder = atoi(eq);
return (&ib);
}
if (!strcmp("psize", s)) {
- ib.psize = strtoul(eq, NULL, 0);
+ ib.psize = atoi(eq);
return (&ib);
}
break;
case DB_HASH:
if (!strcmp("bsize", s)) {
- ih.bsize = strtoul(eq, NULL, 0);
+ ih.bsize = atoi(eq);
return (&ih);
}
if (!strcmp("ffactor", s)) {
- ih.ffactor = strtoul(eq, NULL, 0);
+ ih.ffactor = atoi(eq);
return (&ih);
}
if (!strcmp("nelem", s)) {
- ih.nelem = strtoul(eq, NULL, 0);
+ ih.nelem = atoi(eq);
return (&ih);
}
if (!strcmp("cachesize", s)) {
- ih.cachesize = strtoul(eq, NULL, 0);
+ ih.cachesize = atoi(eq);
return (&ih);
}
if (!strcmp("lorder", s)) {
- ih.lorder = strtoul(eq, NULL, 0);
+ ih.lorder = atoi(eq);
return (&ih);
}
break;
case DB_RECNO:
if (!strcmp("flags", s)) {
- rh.flags = strtoul(eq, NULL, 0);
+ rh.flags = atoi(eq);
return (&rh);
}
if (!strcmp("cachesize", s)) {
- rh.cachesize = strtoul(eq, NULL, 0);
+ rh.cachesize = atoi(eq);
return (&rh);
}
if (!strcmp("lorder", s)) {
- rh.lorder = strtoul(eq, NULL, 0);
+ rh.lorder = atoi(eq);
return (&rh);
}
if (!strcmp("reclen", s)) {
- rh.reclen = strtoul(eq, NULL, 0);
+ rh.reclen = atoi(eq);
return (&rh);
}
if (!strcmp("bval", s)) {
- rh.bval = strtoul(eq, NULL, 0);
+ rh.bval = atoi(eq);
return (&rh);
}
if (!strcmp("psize", s)) {
- rh.psize = strtoul(eq, NULL, 0);
+ rh.psize = atoi(eq);
return (&rh);
}
break;
@@ -595,8 +603,10 @@ rfile(name, lenp)
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 = malloc((u_int)sb.st_size)) == NULL)
err("%s", strerror(errno));
(void)read(fd, p, (int)sb.st_size);
@@ -622,7 +632,7 @@ void
usage()
{
(void)fprintf(stderr,
- "usage: dbtest [-f file] [-i info] [-o file] type script\n");
+ "usage: dbtest [-l] [-f file] [-i info] [-o file] type script\n");
exit(1);
}
diff --git a/lib/libc/db/test/run.test b/lib/libc/db/test/run.test
index 2e0bd8d196ff..5eeaf743dd68 100644
--- a/lib/libc/db/test/run.test
+++ b/lib/libc/db/test/run.test
@@ -1,32 +1,50 @@
#!/bin/sh -
#
-# @(#)run.test 8.1 (Berkeley) 6/4/93
+# @(#)run.test 8.7 (Berkeley) 9/16/93
#
# db regression tests
-
main()
{
- DICT=/usr/share/dict/words
- PROG=obj/dbtest
- TMP1=t1
- TMP2=t2
- TMP3=t3
- test1
- test2
- test3
- test4
- test5
- test6
- test7
- test8
- test9
- test10
- test11
- test12
- test13
- test20
+DICT=/usr/share/dict/words
+#DICT=/usr/dict/words
+PROG=./dbtest
+TMP1=t1
+TMP2=t2
+TMP3=t3
+
+ 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
}
@@ -35,21 +53,25 @@ main()
# be key/data pairs.
test1()
{
- printf "Test 1: btree, hash: small key, small data pairs\n"
+ echo "Test 1: btree, hash: small key, small data pairs"
sed 200q $DICT > $TMP1
for type in btree hash; do
rm -f $TMP2 $TMP3
for i in `sed 200q $DICT`; do
- printf "p\nk%s\nd%s\ng\nk%s\n" $i $i $i
+ 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
- printf "test1: type %s: failed\n" $type
+ echo "test1: type $type: failed"
exit 1
fi
done
- printf "Test 1: recno: small key, small data pairs\n"
+ echo "Test 1: recno: small key, small data pairs"
rm -f $TMP2 $TMP3
sed 200q $DICT |
awk '{
@@ -59,7 +81,7 @@ test1()
$PROG -o $TMP3 recno $TMP2
if (cmp -s $TMP1 $TMP3) ; then :
else
- printf "test1: type recno: failed\n"
+ echo "test1: type recno: failed"
exit 1
fi
}
@@ -68,23 +90,27 @@ test1()
# each a medium size data entry.
test2()
{
- printf "Test 2: btree, hash: small key, medium data pairs\n"
+ 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 `sed 200q $DICT`; do
- printf "p\nk%s\nd%s\ng\nk%s\n" $i $mdata $i
+ 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
- printf "test2: type %s: failed\n" $type
+ echo "test2: type $type: failed"
exit 1
fi
done
- printf "Test 2: recno: small key, medium data pairs\n"
+ echo "Test 2: recno: small key, medium data pairs"
rm -f $TMP2 $TMP3
echo $mdata |
awk '{ for (i = 1; i < 201; ++i)
@@ -93,7 +119,7 @@ test2()
$PROG -o $TMP3 recno $TMP2
if (cmp -s $TMP1 $TMP3) ; then :
else
- printf "test2: type recno: failed\n"
+ echo "test2: type recno: failed"
exit 1
fi
}
@@ -101,40 +127,46 @@ test2()
# Insert the programs in /bin with their paths as their keys.
test3()
{
- printf "Test 3: hash: small key, big data pairs\n"
+ echo "Test 3: hash: small key, big data pairs"
rm -f $TMP1
(find /bin -type f -print | xargs cat) > $TMP1
for type in hash; do
rm -f $TMP2 $TMP3
for i in `find /bin -type f -print`; do
- printf "p\nk%s\nD%s\ng\nk%s\n" $i $i $i
+ 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
- printf "test3: %s: page size %d: failed\n" \
- $type $psize
+ echo "test3: $type: failed"
exit 1
fi
done
- printf "Test 3: btree: small key, big data pairs\n"
+ echo "Test 3: btree: small key, big data pairs"
for psize in 512 16384 65536; do
- printf "\tpage size %d\n" $psize
+ echo " page size $psize"
for type in btree; do
rm -f $TMP2 $TMP3
for i in `find /bin -type f -print`; do
- printf "p\nk%s\nD%s\ng\nk%s\n" $i $i $i
+ 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
- printf "test3: %s: page size %d: failed\n" \
- $type $psize
+ echo "test3: $type: page size $psize: failed"
exit 1
fi
done
done
- printf "Test 3: recno: big data pairs\n"
+ echo "Test 3: recno: big data pairs"
rm -f $TMP2 $TMP3
find /bin -type f -print |
awk '{
@@ -142,11 +174,11 @@ test3()
printf("p\nk%d\nD%s\ng\nk%d\n", i, $0, i);
}' > $TMP2
for psize in 512 16384 65536; do
- printf "\tpage size %d\n" $psize
+ echo " page size $psize"
$PROG -i psize=$psize -o $TMP3 recno $TMP2
if (cmp -s $TMP1 $TMP3) ; then :
else
- printf "test3: recno: page size %d: failed\n" $psize
+ echo "test3: recno: page size $psize: failed"
exit 1
fi
done
@@ -155,18 +187,33 @@ test3()
# Do random recno entries.
test4()
{
- printf "Test 4: recno: random entries\n"
+ echo "Test 4: recno: random entries"
echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" |
awk '{
- for (i = 37; i <= 37 + 88 * 17; i += 17)
- printf("input key %d: %.*s\n", i, i % 41, $0);
- for (i = 1; i <= 15; ++i)
- printf("input key %d: %.*s\n", i, i % 41, $0);
- for (i = 19234; i <= 19234 + 61 * 27; i += 27)
- printf("input key %d: %.*s\n", i, i % 41, $0);
+ 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
+ rm -f $TMP2 $TMP3
cat $TMP1 |
awk 'BEGIN {
i = 37;
@@ -196,7 +243,7 @@ test4()
$PROG -o $TMP3 recno $TMP2
if (cmp -s $TMP1 $TMP3) ; then :
else
- printf "test4: type recno: failed\n"
+ echo "test4: type recno: failed"
exit 1
fi
}
@@ -204,14 +251,19 @@ test4()
# Do reverse order recno entries.
test5()
{
- printf "Test 5: recno: reverse order entries\n"
+ echo "Test 5: recno: reverse order entries"
echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" |
awk ' {
- for (i = 1500; i; --i)
- printf("input key %d: %.*s\n", i, i % 34, $0);
+ 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
+ rm -f $TMP2 $TMP3
cat $TMP1 |
awk 'BEGIN {
i = 1500;
@@ -227,7 +279,7 @@ test5()
$PROG -o $TMP3 recno $TMP2
if (cmp -s $TMP1 $TMP3) ; then :
else
- printf "test5: type recno: failed\n"
+ echo "test5: type recno: failed"
exit 1
fi
}
@@ -235,16 +287,26 @@ test5()
# Do alternating order recno entries.
test6()
{
- printf "Test 6: recno: alternating order entries\n"
+ echo "Test 6: recno: alternating order entries"
echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" |
awk ' {
- for (i = 1; i < 1200; i += 2)
- printf("input key %d: %.*s\n", i, i % 34, $0);
- for (i = 2; i < 1200; i += 2)
- printf("input key %d: %.*s\n", i, i % 34, $0);
+ 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
+ rm -f $TMP2 $TMP3
cat $TMP1 |
awk 'BEGIN {
i = 1;
@@ -269,7 +331,7 @@ test6()
sort -o $TMP3 $TMP3
if (cmp -s $TMP1 $TMP3) ; then :
else
- printf "test6: type recno: failed\n"
+ echo "test6: type recno: failed"
exit 1
fi
}
@@ -277,7 +339,7 @@ test6()
# Delete cursor record
test7()
{
- printf "Test 7: btree, recno: delete cursor record\n"
+ echo "Test 7: btree, recno: delete cursor record"
echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" |
awk '{
for (i = 1; i <= 120; ++i)
@@ -288,7 +350,7 @@ test7()
printf("%05d: input key %d: %s\n", 2, 2, $0);
exit;
}' > $TMP1
- rm -f TMP2 $TMP3
+ rm -f $TMP2 $TMP3
for type in btree recno; do
cat $TMP1 |
@@ -311,7 +373,7 @@ test7()
$PROG -o $TMP3 recno $TMP2
if (cmp -s $TMP1 $TMP3) ; then :
else
- printf "test7: type $type: failed\n"
+ echo "test7: type $type: failed"
exit 1
fi
done
@@ -320,8 +382,9 @@ test7()
# Make sure that overflow pages are reused.
test8()
{
- printf "Test 8: btree, hash: repeated small key, big data pairs\n"
+ echo "Test 8: btree, hash: 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");
@@ -338,21 +401,21 @@ test8()
printf("eend of test8 run\n");
}' > $TMP1
$PROG btree $TMP1
- $PROG hash $TMP1
+# $PROG hash $TMP1
# No explicit test for success.
}
# Test btree duplicate keys
test9()
{
- printf "Test 9: btree: duplicate keys\n"
+ 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
+ rm -f $TMP2 $TMP3
for type in btree; do
cat $TMP1 |
@@ -369,7 +432,7 @@ test9()
sort -o $TMP3 $TMP3
if (cmp -s $TMP1 $TMP3) ; then :
else
- printf "test9: type $type: failed\n"
+ echo "test9: type $type: failed"
exit 1
fi
done
@@ -378,14 +441,14 @@ test9()
# Test use of cursor flags without initialization
test10()
{
- printf "Test 10: btree, recno: test cursor flag use\n"
+ 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
+ rm -f $TMP2 $TMP3
# Test that R_CURSOR doesn't succeed before cursor initialized
for type in btree recno; do
@@ -401,7 +464,7 @@ test10()
}' > $TMP2
$PROG -o $TMP3 $type $TMP2 > /dev/null 2>&1
if [ -s $TMP3 ] ; then
- printf "Test 10: delete: R_CURSOR SHOULD HAVE FAILED\n"
+ echo "Test 10: delete: R_CURSOR SHOULD HAVE FAILED"
exit 1
fi
done
@@ -418,7 +481,7 @@ test10()
}' > $TMP2
$PROG -o $TMP3 $type $TMP2 > /dev/null 2>&1
if [ -s $TMP3 ] ; then
- printf "Test 10: put: R_CURSOR SHOULD HAVE FAILED\n"
+ echo "Test 10: put: R_CURSOR SHOULD HAVE FAILED"
exit 1
fi
done
@@ -427,14 +490,14 @@ test10()
# Test insert in reverse order.
test11()
{
- printf "Test 11: recno: reverse order insert\n"
+ 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
+ rm -f $TMP2 $TMP3
for type in recno; do
cat $TMP1 |
@@ -452,7 +515,7 @@ test11()
$PROG -o $TMP3 $type $TMP2
if (cmp -s $TMP1 $TMP3) ; then :
else
- printf "test11: type $type: failed\n"
+ echo "test11: type $type: failed"
exit 1
fi
done
@@ -463,19 +526,23 @@ test11()
# the btree split code gets hammered.
test12()
{
- printf "Test 12: btree: lots of keys, small page size\n"
+ 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 `sed 20000q $DICT | rev`; do
- printf "p\nk%s\nd%s\ng\nk%s\n" $i $mdata $i
+ 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
- printf "test12: type %s: failed\n" $type
+ echo "test12: type $type: failed"
exit 1
fi
done
@@ -484,27 +551,32 @@ test12()
# Test different byte orders.
test13()
{
- printf "Test 13: btree, hash: differing byte orders\n"
+ echo "Test 13: btree, hash: differing byte orders"
sed 50q $DICT > $TMP1
for order in 1234 4321; do
for type in btree hash; do
rm -f byte.file $TMP2 $TMP3
for i in `sed 50q $DICT`; do
- printf "p\nk%s\nd%s\ng\nk%s\n" $i $i $i
+ 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
- printf "test13: %s/%s put failed\n" $type $order
+ echo "test13: $type/$order put failed"
exit 1
fi
for i in `sed 50q $DICT`; do
- printf "g\nk%s\n" $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
- printf "test13: %s/%s get failed\n" $type $order
+ echo "test13: $type/$order get failed"
exit 1
fi
done
@@ -515,18 +587,29 @@ test13()
# Try a variety of bucketsizes and fill factors for hashing
test20()
{
- printf\
- "Test 20: hash: bucketsize, fill factor; nelem 25000 cachesize 65536\n"
- awk 'BEGIN {
- for (i = 1; i <= 10000; ++i)
- printf("%.*s\n", i % 34,
- "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg");
+ 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
sed 10000q $DICT |
- awk '{
- ++i;
- printf("p\nk%s\nd%.*s\n", $0, i % 34,
- "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg");
+ 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
sed 10000q $DICT |
awk '{
@@ -535,82 +618,82 @@ test20()
}' >> $TMP2
bsize=256
for ffactor in 11 14 21; do
- printf "\tbucketsize %d, fill factor %d\n" $bsize $ffactor
+ 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
- printf "test20: type hash:\
-bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed\n"
+ 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
- printf "\tbucketsize %d, fill factor %d\n" $bsize $ffactor
+ 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
- printf "test20: type hash:\
-bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed\n"
+ 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
- printf "\tbucketsize %d, fill factor %d\n" $bsize $ffactor
+ 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
- printf "test20: type hash:\
-bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed\n"
+ 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
- printf "\tbucketsize %d, fill factor %d\n" $bsize $ffactor
+ 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
- printf "test20: type hash:\
-bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed\n"
+ 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
- printf "\tbucketsize %d, fill factor %d\n" $bsize $ffactor
+ 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
- printf "test20: type hash:\
-bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed\n"
+ 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
- printf "\tbucketsize %d, fill factor %d\n" $bsize $ffactor
+ 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
- printf "test20: type hash:\
-bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed\n"
+ echo "test20: type hash:\
+bsize=$bsize ffactor=$ffactor nelem=25000 cachesize=65536 failed"
exit 1
fi
done
}
-main
+main $*
diff --git a/lib/libc/db/test/strerror.c b/lib/libc/db/test/strerror.c
new file mode 100644
index 000000000000..53f374bdf796
--- /dev/null
+++ b/lib/libc/db/test/strerror.c
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 1988, 1993
+ * 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(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)strerror.c 8.1 (Berkeley) 6/4/93";
+#endif /* LIBC_SCCS and not lint */
+
+#include <string.h>
+
+char *
+strerror(num)
+ int num;
+{
+ extern int sys_nerr;
+ extern char *sys_errlist[];
+#define UPREFIX "Unknown error: "
+ static char ebuf[40] = UPREFIX; /* 64-bit number + slop */
+ register unsigned int errnum;
+ register char *p, *t;
+ char tmp[40];
+
+ errnum = num; /* convert to unsigned */
+ if (errnum < sys_nerr)
+ return(sys_errlist[errnum]);
+
+ /* Do this by hand, so we don't include stdio(3). */
+ t = tmp;
+ do {
+ *t++ = "0123456789"[errnum % 10];
+ } while (errnum /= 10);
+ for (p = ebuf + sizeof(UPREFIX) - 1;;) {
+ *p++ = *--t;
+ if (t <= tmp)
+ break;
+ }
+ return(ebuf);
+}