xref: /csrg-svn/lib/libc/db/test/run.test (revision 56038)
1#!/bin/sh -
2#
3# Copyright (c) 1992 The Regents of the University of California.
4# All rights reserved.
5#
6# %sccs.include.redist.sh%
7#
8#	@(#)run.test	5.1 (Berkeley) 08/26/92
9#
10
11# db regression tests
12
13main()
14{
15	DICT=/usr/share/dict/words
16	TMP1=t1
17	TMP2=t2
18	TMP3=t3
19
20	test1
21	test2
22	test3
23	test4
24	rm -f $TMP1 $TMP2 $TMP3
25}
26
27# Take the first hundred entries in the dictionary, and make them
28# be key/data pairs.
29test1()
30{
31	printf "Test1: btree, hash: small key, small data pairs\n"
32	for i in `sed 200q $DICT`; do
33		printf "%s\n" $i
34	done > $TMP1
35	for type in btree hash; do
36		rm -f $TMP2 $TMP3
37		for i in `sed 200q $DICT`; do
38			printf "p\nk%s\nd%s\ng\nk%s\n" $i $i $i
39		done > $TMP2
40		./dbtest -o $TMP3 $type $TMP2
41		if (cmp -s $TMP1 $TMP3) ; then
42		else
43			printf "test1: type %s: failed\n" $type
44			exit 1
45		fi
46	done
47	printf "Test1: recno: small key, small data pairs\n"
48	rm -f $TMP2 $TMP3
49	sed 200q $DICT |
50		awk '{
51			++i;
52	    		printf("p\nk%d\nd%s\ng\nk%d\n", i, $0, i);
53		}' > $TMP2
54	./dbtest -o $TMP3 recno $TMP2
55	if (cmp -s $TMP1 $TMP3) ; then
56	else
57		printf "test1: type recno: failed\n"
58		exit 1
59	fi
60}
61
62# Take the first hundred entries in the dictionary, and give them
63# each a medium size data entry.
64test2()
65{
66	printf "Test2: btree, hash: small key, medium data pairs\n"
67	mdata=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
68	echo $mdata |
69	    awk '{ for (i = 1; i < 201; ++i) print $0 }' > $TMP1
70	for type in hash btree; do
71		rm -f $TMP2 $TMP3
72		for i in `sed 200q $DICT`; do
73			printf "p\nk%s\nd%s\ng\nk%s\n" $i $mdata $i
74		done > $TMP2
75		./dbtest -o $TMP3 $type $TMP2
76		if (cmp -s $TMP1 $TMP3) ; then
77		else
78			printf "test2: type %s: failed\n" $type
79			exit 1
80		fi
81	done
82	printf "Test2: recno: small key, medium data pairs\n"
83	rm -f $TMP2 $TMP3
84	echo $mdata |
85		awk '{  for (i = 1; i < 201; ++i)
86	    		printf("p\nk%d\nd%s\ng\nk%d\n", i, $0, i);
87		}' > $TMP2
88	./dbtest -o $TMP3 recno $TMP2
89	if (cmp -s $TMP1 $TMP3) ; then
90	else
91		printf "test2: type recno: failed\n"
92		exit 1
93	fi
94}
95
96# Insert the programs in /bin with their paths as their keys.
97test3()
98{
99	printf "Test3: btree, hash: small key, big data pairs\n"
100	rm -f $TMP1
101	(find /bin -type f -print | xargs cat) > $TMP1
102	for type in hash btree; do
103		rm -f $TMP2 $TMP3
104		for i in `find /bin -type f -print`; do
105			printf "p\nk%s\nD%s\ng\nk%s\n" $i $i $i
106		done > $TMP2
107		./dbtest -o $TMP3 $type $TMP2
108		if (cmp -s $TMP1 $TMP3) ; then
109		else
110			printf "test2: type %s: failed\n" $type
111			exit 1
112		fi
113	done
114	printf "Test3: recno: big data pairs\n"
115	rm -f $TMP2 $TMP3
116	find /bin -type f -print |
117		awk '{
118			++i;
119			printf("p\nk%d\nD%s\ng\nk%d\n", i, $0, i);
120		}' > $TMP2
121	./dbtest -o $TMP3 recno $TMP2
122	if (cmp -s $TMP1 $TMP3) ; then
123	else
124		printf "test3: type recno: failed\n"
125		exit 1
126	fi
127}
128
129# Do random recno entries.
130test4()
131{
132	printf "Test4: recno: random entries\n"
133	echo "abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg" |
134		awk '{
135			for (i = 37; i <= 37 + 88 * 17; i += 17)
136				printf("input key %d: %s\n", i, $0);
137			for (i = 1; i <= 15; ++i)
138				printf("input key %d: %s\n", i, $0);
139			for (i = 19234; i <= 19234 + 61 * 27; i += 27)
140				printf("input key %d: %s\n", i, $0);
141			exit
142		}' > $TMP1
143	rm -f TMP2 $TMP3
144	cat $TMP1 | awk 'BEGIN {
145				i = 37;
146				incr = 17;
147			}
148			{
149				printf("p\nk%d\nd%s\n", i, $0);
150				if (i == 19234 + 61 * 27)
151					exit;
152				if (i == 37 + 88 * 17) {
153					i = 1;
154					incr = 1;
155				} else if (i == 15) {
156					i = 19234;
157					incr = 27;
158				} else
159					i += incr;
160			}
161			END {
162				for (i = 37; i <= 37 + 88 * 17; i += 17)
163					printf("g\nk%d\n", i);
164				for (i = 1; i <= 15; ++i)
165					printf("g\nk%d\n", i);
166				for (i = 19234; i <= 19234 + 61 * 27; i += 27)
167					printf("g\nk%d\n", i);
168			}' > $TMP2
169	./dbtest -o $TMP3 recno $TMP2
170	if (cmp -s $TMP1 $TMP3) ; then
171	else
172		printf "test4: type recno: failed\n"
173		exit 1
174	fi
175}
176
177main
178