aboutsummaryrefslogtreecommitdiff
path: root/lib/libc/db/test/run.test
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/db/test/run.test')
-rw-r--r--lib/libc/db/test/run.test315
1 files changed, 199 insertions, 116 deletions
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 $*