Home | History | Annotate | Line # | Download | only in db
t_db.sh revision 1.2
      1  1.2  pgoyette # $NetBSD: t_db.sh,v 1.2 2011/01/08 05:33:34 pgoyette Exp $
      2  1.1  pgoyette #
      3  1.1  pgoyette # Copyright (c) 2008 The NetBSD Foundation, Inc.
      4  1.1  pgoyette # All rights reserved.
      5  1.1  pgoyette #
      6  1.1  pgoyette # Redistribution and use in source and binary forms, with or without
      7  1.1  pgoyette # modification, are permitted provided that the following conditions
      8  1.1  pgoyette # are met:
      9  1.1  pgoyette # 1. Redistributions of source code must retain the above copyright
     10  1.1  pgoyette #    notice, this list of conditions and the following disclaimer.
     11  1.1  pgoyette # 2. Redistributions in binary form must reproduce the above copyright
     12  1.1  pgoyette #    notice, this list of conditions and the following disclaimer in the
     13  1.1  pgoyette #    documentation and/or other materials provided with the distribution.
     14  1.1  pgoyette #
     15  1.1  pgoyette # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     16  1.1  pgoyette # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     17  1.1  pgoyette # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18  1.1  pgoyette # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     19  1.1  pgoyette # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     20  1.1  pgoyette # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     21  1.1  pgoyette # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     22  1.1  pgoyette # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     23  1.1  pgoyette # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     24  1.1  pgoyette # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25  1.1  pgoyette # POSSIBILITY OF SUCH DAMAGE.
     26  1.1  pgoyette #
     27  1.1  pgoyette 
     28  1.1  pgoyette prog()
     29  1.1  pgoyette {
     30  1.1  pgoyette 	echo $(atf_get_srcdir)/h_db
     31  1.1  pgoyette }
     32  1.1  pgoyette 
     33  1.1  pgoyette dict()
     34  1.1  pgoyette {
     35  1.1  pgoyette 	if [ -f /usr/share/dict/words ]; then
     36  1.1  pgoyette 		echo /usr/share/dict/words
     37  1.1  pgoyette 	elif [ -f /usr/dict/words ]; then
     38  1.1  pgoyette 		echo /usr/dict/words
     39  1.1  pgoyette 	else
     40  1.1  pgoyette 		atf_fail "no dictionary found"
     41  1.1  pgoyette 	fi
     42  1.1  pgoyette }
     43  1.1  pgoyette 
     44  1.1  pgoyette SEVEN_SEVEN="abcdefg|abcdefg|abcdefg|abcdefg|abcdefg|abcdefg|abcdefg"
     45  1.1  pgoyette 
     46  1.1  pgoyette atf_test_case small_btree
     47  1.1  pgoyette small_btree_head()
     48  1.1  pgoyette {
     49  1.1  pgoyette 	atf_set "descr" \
     50  1.1  pgoyette 		"Checks btree database using small keys and small data" \
     51  1.1  pgoyette 		"pairs: takes the first hundred entries in the dictionary," \
     52  1.1  pgoyette 		"and makes them be key/data pairs."
     53  1.1  pgoyette }
     54  1.1  pgoyette small_btree_body()
     55  1.1  pgoyette {
     56  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
     57  1.1  pgoyette 	mkdir ${TMPDIR}
     58  1.1  pgoyette 
     59  1.1  pgoyette 	sed 200q $(dict) >exp
     60  1.1  pgoyette 
     61  1.1  pgoyette 	for i in `sed 200q $(dict)`; do
     62  1.1  pgoyette 		echo p
     63  1.1  pgoyette 		echo k$i
     64  1.1  pgoyette 		echo d$i
     65  1.1  pgoyette 		echo g
     66  1.1  pgoyette 		echo k$i
     67  1.1  pgoyette 	done >in
     68  1.1  pgoyette 
     69  1.1  pgoyette 	atf_check -o file:exp "$(prog)" btree in
     70  1.1  pgoyette }
     71  1.1  pgoyette 
     72  1.1  pgoyette atf_test_case small_hash
     73  1.1  pgoyette small_hash_head()
     74  1.1  pgoyette {
     75  1.1  pgoyette 	atf_set "descr" \
     76  1.1  pgoyette 		"Checks hash database using small keys and small data" \
     77  1.1  pgoyette 		"pairs: takes the first hundred entries in the dictionary," \
     78  1.1  pgoyette 		"and makes them be key/data pairs."
     79  1.1  pgoyette }
     80  1.1  pgoyette small_hash_body()
     81  1.1  pgoyette {
     82  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
     83  1.1  pgoyette 	mkdir ${TMPDIR}
     84  1.1  pgoyette 
     85  1.1  pgoyette 	sed 200q $(dict) >exp
     86  1.1  pgoyette 
     87  1.1  pgoyette 	for i in `sed 200q $(dict)`; do
     88  1.1  pgoyette 		echo p
     89  1.1  pgoyette 		echo k$i
     90  1.1  pgoyette 		echo d$i
     91  1.1  pgoyette 		echo g
     92  1.1  pgoyette 		echo k$i
     93  1.1  pgoyette 	done >in
     94  1.1  pgoyette 
     95  1.1  pgoyette 	atf_check -o file:exp "$(prog)" hash in
     96  1.1  pgoyette }
     97  1.1  pgoyette 
     98  1.1  pgoyette atf_test_case small_recno
     99  1.1  pgoyette small_recno_head()
    100  1.1  pgoyette {
    101  1.1  pgoyette 	atf_set "descr" \
    102  1.1  pgoyette 		"Checks recno database using small keys and small data" \
    103  1.1  pgoyette 		"pairs: takes the first hundred entries in the dictionary," \
    104  1.1  pgoyette 		"and makes them be key/data pairs."
    105  1.1  pgoyette }
    106  1.1  pgoyette small_recno_body()
    107  1.1  pgoyette {
    108  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    109  1.1  pgoyette 	mkdir ${TMPDIR}
    110  1.1  pgoyette 
    111  1.1  pgoyette 	sed 200q $(dict) >exp
    112  1.1  pgoyette 
    113  1.1  pgoyette 	sed 200q $(dict) |
    114  1.1  pgoyette 	awk '{ 
    115  1.1  pgoyette 		++i;
    116  1.1  pgoyette 		printf("p\nk%d\nd%s\ng\nk%d\n", i, $0, i);
    117  1.1  pgoyette 	}' >in
    118  1.1  pgoyette 
    119  1.1  pgoyette 	atf_check -o file:exp "$(prog)" recno in
    120  1.1  pgoyette }
    121  1.1  pgoyette 
    122  1.1  pgoyette atf_test_case medium_btree
    123  1.1  pgoyette medium_btree_head()
    124  1.1  pgoyette {
    125  1.1  pgoyette 	atf_set "descr" \
    126  1.1  pgoyette 		"Checks btree database using small keys and medium" \
    127  1.1  pgoyette 		"data pairs: takes the first 200 entries in the" \
    128  1.1  pgoyette 		"dictionary, and gives them each a medium size data entry."
    129  1.1  pgoyette }
    130  1.1  pgoyette medium_btree_body()
    131  1.1  pgoyette {
    132  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    133  1.1  pgoyette 	mkdir ${TMPDIR}
    134  1.1  pgoyette 
    135  1.1  pgoyette 	mdata=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
    136  1.1  pgoyette 	echo $mdata |
    137  1.1  pgoyette 	awk '{ for (i = 1; i < 201; ++i) print $0 }' >exp
    138  1.1  pgoyette 
    139  1.1  pgoyette 	for i in $(sed 200q $(dict)); do
    140  1.1  pgoyette 		echo p
    141  1.1  pgoyette 		echo k$i
    142  1.1  pgoyette 		echo d$mdata
    143  1.1  pgoyette 		echo g
    144  1.1  pgoyette 		echo k$i
    145  1.1  pgoyette 	done >in
    146  1.1  pgoyette 
    147  1.1  pgoyette 	atf_check -o file:exp "$(prog)" btree in
    148  1.1  pgoyette }
    149  1.1  pgoyette 
    150  1.1  pgoyette atf_test_case medium_hash
    151  1.1  pgoyette medium_hash_head()
    152  1.1  pgoyette {
    153  1.1  pgoyette 	atf_set "descr" \
    154  1.1  pgoyette 		"Checks hash database using small keys and medium" \
    155  1.1  pgoyette 		"data pairs: takes the first 200 entries in the" \
    156  1.1  pgoyette 		"dictionary, and gives them each a medium size data entry."
    157  1.1  pgoyette }
    158  1.1  pgoyette medium_hash_body()
    159  1.1  pgoyette {
    160  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    161  1.1  pgoyette 	mkdir ${TMPDIR}
    162  1.1  pgoyette 
    163  1.1  pgoyette 	mdata=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
    164  1.1  pgoyette 	echo $mdata |
    165  1.1  pgoyette 	awk '{ for (i = 1; i < 201; ++i) print $0 }' >exp
    166  1.1  pgoyette 
    167  1.1  pgoyette 	for i in $(sed 200q $(dict)); do
    168  1.1  pgoyette 		echo p
    169  1.1  pgoyette 		echo k$i
    170  1.1  pgoyette 		echo d$mdata
    171  1.1  pgoyette 		echo g
    172  1.1  pgoyette 		echo k$i
    173  1.1  pgoyette 	done >in
    174  1.1  pgoyette 
    175  1.1  pgoyette 	atf_check -o file:exp "$(prog)" hash in
    176  1.1  pgoyette }
    177  1.1  pgoyette 
    178  1.1  pgoyette atf_test_case medium_recno
    179  1.1  pgoyette medium_recno_head()
    180  1.1  pgoyette {
    181  1.1  pgoyette 	atf_set "descr" \
    182  1.1  pgoyette 		"Checks recno database using small keys and medium" \
    183  1.1  pgoyette 		"data pairs: takes the first 200 entries in the" \
    184  1.1  pgoyette 		"dictionary, and gives them each a medium size data entry."
    185  1.1  pgoyette }
    186  1.1  pgoyette medium_recno_body()
    187  1.1  pgoyette {
    188  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    189  1.1  pgoyette 	mkdir ${TMPDIR}
    190  1.1  pgoyette 
    191  1.1  pgoyette 	mdata=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
    192  1.1  pgoyette 	echo $mdata |
    193  1.1  pgoyette 	awk '{ for (i = 1; i < 201; ++i) print $0 }' >exp
    194  1.1  pgoyette 
    195  1.1  pgoyette 	echo $mdata | 
    196  1.1  pgoyette 	awk '{  for (i = 1; i < 201; ++i)
    197  1.1  pgoyette 		printf("p\nk%d\nd%s\ng\nk%d\n", i, $0, i);
    198  1.1  pgoyette 	}' >in
    199  1.1  pgoyette 
    200  1.1  pgoyette 	atf_check -o file:exp "$(prog)" recno in
    201  1.1  pgoyette }
    202  1.1  pgoyette 
    203  1.1  pgoyette atf_test_case big_btree
    204  1.1  pgoyette big_btree_head()
    205  1.1  pgoyette {
    206  1.1  pgoyette 	atf_set "descr" \
    207  1.1  pgoyette 		"Checks btree database using small keys and big data" \
    208  1.1  pgoyette 		"pairs: inserts the programs in /bin with their paths" \
    209  1.1  pgoyette 		"as their keys."
    210  1.1  pgoyette }
    211  1.1  pgoyette big_btree_body()
    212  1.1  pgoyette {
    213  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    214  1.1  pgoyette 	mkdir ${TMPDIR}
    215  1.1  pgoyette 
    216  1.1  pgoyette 	(find /bin -type f -print | xargs cat) >exp
    217  1.1  pgoyette 
    218  1.1  pgoyette 	for psize in 512 16384 65536; do
    219  1.1  pgoyette 		echo "checking page size: $psize"
    220  1.1  pgoyette 
    221  1.1  pgoyette 		for i in `find /bin -type f -print`; do
    222  1.1  pgoyette 			echo p
    223  1.1  pgoyette 			echo k$i
    224  1.1  pgoyette 			echo D$i
    225  1.1  pgoyette 			echo g
    226  1.1  pgoyette 			echo k$i
    227  1.1  pgoyette 		done >in
    228  1.1  pgoyette 
    229  1.1  pgoyette 		atf_check "$(prog)" -o out btree in
    230  1.1  pgoyette 		cmp -s exp out || atf_fail "test failed for page size: $psize"
    231  1.1  pgoyette 	done
    232  1.1  pgoyette }
    233  1.1  pgoyette 
    234  1.1  pgoyette atf_test_case big_hash
    235  1.1  pgoyette big_hash_head()
    236  1.1  pgoyette {
    237  1.1  pgoyette 	atf_set "descr" \
    238  1.1  pgoyette 		"Checks hash database using small keys and big data" \
    239  1.1  pgoyette 		"pairs: inserts the programs in /bin with their paths" \
    240  1.1  pgoyette 		"as their keys."
    241  1.1  pgoyette }
    242  1.1  pgoyette big_hash_body()
    243  1.1  pgoyette {
    244  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    245  1.1  pgoyette 	mkdir ${TMPDIR}
    246  1.1  pgoyette 
    247  1.1  pgoyette 	(find /bin -type f -print | xargs cat) >exp
    248  1.1  pgoyette 
    249  1.1  pgoyette 	for i in `find /bin -type f -print`; do
    250  1.1  pgoyette 		echo p
    251  1.1  pgoyette 		echo k$i
    252  1.1  pgoyette 		echo D$i
    253  1.1  pgoyette 		echo g
    254  1.1  pgoyette 		echo k$i
    255  1.1  pgoyette 	done >in
    256  1.1  pgoyette 
    257  1.1  pgoyette 	atf_check "$(prog)" -o out hash in
    258  1.1  pgoyette 	cmp -s exp out || atf_fail "test failed"
    259  1.1  pgoyette }
    260  1.1  pgoyette 
    261  1.1  pgoyette atf_test_case big_recno
    262  1.1  pgoyette big_recno_head()
    263  1.1  pgoyette {
    264  1.1  pgoyette 	atf_set "descr" \
    265  1.1  pgoyette 		"Checks recno database using small keys and big data" \
    266  1.1  pgoyette 		"pairs: inserts the programs in /bin with their paths" \
    267  1.1  pgoyette 		"as their keys."
    268  1.1  pgoyette }
    269  1.1  pgoyette big_recno_body()
    270  1.1  pgoyette {
    271  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    272  1.1  pgoyette 	mkdir ${TMPDIR}
    273  1.1  pgoyette 
    274  1.1  pgoyette 	(find /bin -type f -print | xargs cat) >exp
    275  1.1  pgoyette 
    276  1.1  pgoyette 	find /bin -type f -print | 
    277  1.1  pgoyette 	awk '{
    278  1.1  pgoyette 		++i;
    279  1.1  pgoyette 		printf("p\nk%d\nD%s\ng\nk%d\n", i, $0, i);
    280  1.1  pgoyette 	}' >in
    281  1.1  pgoyette 
    282  1.1  pgoyette 	for psize in 512 16384 65536; do
    283  1.1  pgoyette 		echo "checking page size: $psize"
    284  1.1  pgoyette 
    285  1.1  pgoyette 		atf_check "$(prog)" -o out recno in
    286  1.1  pgoyette 		cmp -s exp out || atf_fail "test failed for page size: $psize"
    287  1.1  pgoyette 	done
    288  1.1  pgoyette }
    289  1.1  pgoyette 
    290  1.1  pgoyette atf_test_case random_recno
    291  1.1  pgoyette random_recno_head()
    292  1.1  pgoyette {
    293  1.1  pgoyette 	atf_set "descr" "Checks recno database using random entries"
    294  1.1  pgoyette }
    295  1.1  pgoyette random_recno_body()
    296  1.1  pgoyette {
    297  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    298  1.1  pgoyette 	mkdir ${TMPDIR}
    299  1.1  pgoyette 
    300  1.1  pgoyette 	echo $SEVEN_SEVEN |
    301  1.1  pgoyette 	awk '{
    302  1.1  pgoyette 		for (i = 37; i <= 37 + 88 * 17; i += 17) {
    303  1.1  pgoyette 			if (i % 41)
    304  1.1  pgoyette 				s = substr($0, 1, i % 41);
    305  1.1  pgoyette 			else
    306  1.1  pgoyette 				s = substr($0, 1);
    307  1.1  pgoyette 			printf("input key %d: %s\n", i, s);
    308  1.1  pgoyette 		}
    309  1.1  pgoyette 		for (i = 1; i <= 15; ++i) {
    310  1.1  pgoyette 			if (i % 41)
    311  1.1  pgoyette 				s = substr($0, 1, i % 41);
    312  1.1  pgoyette 			else
    313  1.1  pgoyette 				s = substr($0, 1);
    314  1.1  pgoyette 			printf("input key %d: %s\n", i, s);
    315  1.1  pgoyette 		}
    316  1.1  pgoyette 		for (i = 19234; i <= 19234 + 61 * 27; i += 27) {
    317  1.1  pgoyette 			if (i % 41)
    318  1.1  pgoyette 				s = substr($0, 1, i % 41);
    319  1.1  pgoyette 			else
    320  1.1  pgoyette 				s = substr($0, 1);
    321  1.1  pgoyette 			printf("input key %d: %s\n", i, s);
    322  1.1  pgoyette 		}
    323  1.1  pgoyette 		exit
    324  1.1  pgoyette 	}' >exp
    325  1.1  pgoyette 
    326  1.1  pgoyette 	cat exp |
    327  1.1  pgoyette 	awk 'BEGIN {
    328  1.1  pgoyette 			i = 37;
    329  1.1  pgoyette 			incr = 17;
    330  1.1  pgoyette 		}
    331  1.1  pgoyette 		{
    332  1.1  pgoyette 			printf("p\nk%d\nd%s\n", i, $0);
    333  1.1  pgoyette 			if (i == 19234 + 61 * 27)
    334  1.1  pgoyette 				exit;
    335  1.1  pgoyette 			if (i == 37 + 88 * 17) {
    336  1.1  pgoyette 				i = 1;
    337  1.1  pgoyette 				incr = 1;
    338  1.1  pgoyette 			} else if (i == 15) {
    339  1.1  pgoyette 				i = 19234;
    340  1.1  pgoyette 				incr = 27;
    341  1.1  pgoyette 			} else
    342  1.1  pgoyette 				i += incr;
    343  1.1  pgoyette 		}
    344  1.1  pgoyette 		END {
    345  1.1  pgoyette 			for (i = 37; i <= 37 + 88 * 17; i += 17)
    346  1.1  pgoyette 				printf("g\nk%d\n", i);
    347  1.1  pgoyette 			for (i = 1; i <= 15; ++i)
    348  1.1  pgoyette 				printf("g\nk%d\n", i);
    349  1.1  pgoyette 			for (i = 19234; i <= 19234 + 61 * 27; i += 27)
    350  1.1  pgoyette 				printf("g\nk%d\n", i);
    351  1.1  pgoyette 		}' >in
    352  1.1  pgoyette 
    353  1.1  pgoyette 	atf_check -o file:exp "$(prog)" recno in
    354  1.1  pgoyette }
    355  1.1  pgoyette 
    356  1.1  pgoyette atf_test_case reverse_recno
    357  1.1  pgoyette reverse_recno_head()
    358  1.1  pgoyette {
    359  1.1  pgoyette 	atf_set "descr" "Checks recno database using reverse order entries"
    360  1.1  pgoyette }
    361  1.1  pgoyette reverse_recno_body()
    362  1.1  pgoyette {
    363  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    364  1.1  pgoyette 	mkdir ${TMPDIR}
    365  1.1  pgoyette 
    366  1.1  pgoyette 	echo $SEVEN_SEVEN |
    367  1.1  pgoyette 	awk ' {
    368  1.1  pgoyette 		for (i = 1500; i; --i) {
    369  1.1  pgoyette 			if (i % 34)
    370  1.1  pgoyette 				s = substr($0, 1, i % 34);
    371  1.1  pgoyette 			else
    372  1.1  pgoyette 				s = substr($0, 1);
    373  1.1  pgoyette 			printf("input key %d: %s\n", i, s);
    374  1.1  pgoyette 		}
    375  1.1  pgoyette 		exit;
    376  1.1  pgoyette 	}' >exp
    377  1.1  pgoyette 
    378  1.1  pgoyette 	cat exp |
    379  1.1  pgoyette 	awk 'BEGIN {
    380  1.1  pgoyette 			i = 1500;
    381  1.1  pgoyette 		}
    382  1.1  pgoyette 		{
    383  1.1  pgoyette 			printf("p\nk%d\nd%s\n", i, $0);
    384  1.1  pgoyette 			--i;
    385  1.1  pgoyette 		}
    386  1.1  pgoyette 		END {
    387  1.1  pgoyette 			for (i = 1500; i; --i) 
    388  1.1  pgoyette 				printf("g\nk%d\n", i);
    389  1.1  pgoyette 		}' >in
    390  1.1  pgoyette 
    391  1.1  pgoyette 	atf_check -o file:exp "$(prog)" recno in
    392  1.1  pgoyette }
    393  1.1  pgoyette 		
    394  1.1  pgoyette atf_test_case alternate_recno
    395  1.1  pgoyette alternate_recno_head()
    396  1.1  pgoyette {
    397  1.1  pgoyette 	atf_set "descr" "Checks recno database using alternating order entries"
    398  1.1  pgoyette }
    399  1.1  pgoyette alternate_recno_body()
    400  1.1  pgoyette {
    401  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    402  1.1  pgoyette 	mkdir ${TMPDIR}
    403  1.1  pgoyette 
    404  1.1  pgoyette 	echo $SEVEN_SEVEN |
    405  1.1  pgoyette 	awk ' {
    406  1.1  pgoyette 		for (i = 1; i < 1200; i += 2) {
    407  1.1  pgoyette 			if (i % 34)
    408  1.1  pgoyette 				s = substr($0, 1, i % 34);
    409  1.1  pgoyette 			else
    410  1.1  pgoyette 				s = substr($0, 1);
    411  1.1  pgoyette 			printf("input key %d: %s\n", i, s);
    412  1.1  pgoyette 		}
    413  1.1  pgoyette 		for (i = 2; i < 1200; i += 2) {
    414  1.1  pgoyette 			if (i % 34)
    415  1.1  pgoyette 				s = substr($0, 1, i % 34);
    416  1.1  pgoyette 			else
    417  1.1  pgoyette 				s = substr($0, 1);
    418  1.1  pgoyette 			printf("input key %d: %s\n", i, s);
    419  1.1  pgoyette 		}
    420  1.1  pgoyette 		exit;
    421  1.1  pgoyette 	}' >exp
    422  1.1  pgoyette 
    423  1.1  pgoyette 	cat exp |
    424  1.1  pgoyette 	awk 'BEGIN {
    425  1.1  pgoyette 			i = 1;
    426  1.1  pgoyette 			even = 0;
    427  1.1  pgoyette 		}
    428  1.1  pgoyette 		{
    429  1.1  pgoyette 			printf("p\nk%d\nd%s\n", i, $0);
    430  1.1  pgoyette 			i += 2;
    431  1.1  pgoyette 			if (i >= 1200) {
    432  1.1  pgoyette 				if (even == 1)
    433  1.1  pgoyette 					exit;
    434  1.1  pgoyette 				even = 1;
    435  1.1  pgoyette 				i = 2;
    436  1.1  pgoyette 			}
    437  1.1  pgoyette 		}
    438  1.1  pgoyette 		END {
    439  1.1  pgoyette 			for (i = 1; i < 1200; ++i) 
    440  1.1  pgoyette 				printf("g\nk%d\n", i);
    441  1.1  pgoyette 		}' >in
    442  1.1  pgoyette 
    443  1.1  pgoyette 	atf_check "$(prog)" -o out recno in
    444  1.1  pgoyette 	
    445  1.1  pgoyette 	sort -o exp exp
    446  1.1  pgoyette 	sort -o out out
    447  1.1  pgoyette 
    448  1.1  pgoyette 	cmp -s exp out || atf_fail "test failed"
    449  1.1  pgoyette }
    450  1.1  pgoyette 
    451  1.1  pgoyette h_delete()
    452  1.1  pgoyette {
    453  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    454  1.1  pgoyette 	mkdir ${TMPDIR}
    455  1.1  pgoyette 
    456  1.1  pgoyette 	type=$1
    457  1.1  pgoyette 
    458  1.1  pgoyette 	echo $SEVEN_SEVEN |
    459  1.1  pgoyette 	awk '{
    460  1.1  pgoyette 		for (i = 1; i <= 120; ++i)
    461  1.1  pgoyette 			printf("%05d: input key %d: %s\n", i, i, $0);
    462  1.1  pgoyette 	}' >exp
    463  1.1  pgoyette 
    464  1.1  pgoyette 	cat exp |
    465  1.1  pgoyette 	awk '{
    466  1.1  pgoyette 		printf("p\nk%d\nd%s\n", ++i, $0);
    467  1.1  pgoyette 	}
    468  1.1  pgoyette 	END {
    469  1.1  pgoyette 		printf("fR_NEXT\n");
    470  1.1  pgoyette 		for (i = 1; i <= 120; ++i)
    471  1.1  pgoyette 			printf("s\n");
    472  1.2  pgoyette 		printf("fR_CURSOR\ns\nkXX\n");
    473  1.1  pgoyette 		printf("r\n");
    474  1.1  pgoyette 		printf("fR_NEXT\ns\n");
    475  1.1  pgoyette 		printf("fR_CURSOR\ns\nk1\n");
    476  1.1  pgoyette 		printf("r\n");
    477  1.1  pgoyette 		printf("fR_FIRST\ns\n");
    478  1.1  pgoyette 	}' >in
    479  1.1  pgoyette 
    480  1.2  pgoyette 	# For btree, the records are ordered by the string representation
    481  1.2  pgoyette 	# of the key value.  So sort the expected output file accordingly,
    482  1.2  pgoyette 	# and set the seek_last key to the last expected key value.
    483  1.2  pgoyette 
    484  1.2  pgoyette 	if [ "$type" = "btree" ] ; then
    485  1.2  pgoyette 		sed -e 's/kXX/k99/' < in > tmp
    486  1.2  pgoyette 		mv tmp in
    487  1.2  pgoyette 		sort -d -k4 < exp > tmp
    488  1.2  pgoyette 		mv tmp exp
    489  1.2  pgoyette 		echo $SEVEN_SEVEN |
    490  1.2  pgoyette 		awk '{
    491  1.2  pgoyette 			printf("%05d: input key %d: %s\n", 99, 99, $0);
    492  1.2  pgoyette 			printf("seq failed, no such key\n");
    493  1.2  pgoyette 			printf("%05d: input key %d: %s\n", 1, 1, $0);
    494  1.2  pgoyette 			printf("%05d: input key %d: %s\n", 10, 10, $0);
    495  1.2  pgoyette 			exit;
    496  1.2  pgoyette 		}' >> exp
    497  1.2  pgoyette 	else
    498  1.2  pgoyette 	# For recno, records are ordered by numerical key value.  No sort
    499  1.2  pgoyette 	# is needed, but still need to set proper seek_last key value.
    500  1.2  pgoyette 		sed -e 's/kXX/k120/' < in > tmp
    501  1.2  pgoyette 		mv tmp in
    502  1.2  pgoyette 		echo $SEVEN_SEVEN |
    503  1.2  pgoyette 		awk '{
    504  1.2  pgoyette 			printf("%05d: input key %d: %s\n", 120, 120, $0);
    505  1.2  pgoyette 			printf("seq failed, no such key\n");
    506  1.2  pgoyette 			printf("%05d: input key %d: %s\n", 1, 1, $0);
    507  1.2  pgoyette 			printf("%05d: input key %d: %s\n", 2, 2, $0);
    508  1.2  pgoyette 			exit;
    509  1.2  pgoyette 		}' >> exp
    510  1.2  pgoyette 	fi
    511  1.2  pgoyette 
    512  1.1  pgoyette 	atf_check "$(prog)" -o out $type in
    513  1.1  pgoyette 	atf_check -o file:exp cat out
    514  1.1  pgoyette }
    515  1.1  pgoyette 
    516  1.1  pgoyette atf_test_case delete_btree
    517  1.1  pgoyette delete_btree_head()
    518  1.1  pgoyette {
    519  1.1  pgoyette 	atf_set "descr" "Checks removing records in btree database"
    520  1.1  pgoyette }
    521  1.1  pgoyette delete_btree_body()
    522  1.1  pgoyette {
    523  1.1  pgoyette 	h_delete btree
    524  1.1  pgoyette }
    525  1.1  pgoyette 
    526  1.1  pgoyette atf_test_case delete_recno
    527  1.1  pgoyette delete_recno_head()
    528  1.1  pgoyette {
    529  1.1  pgoyette 	atf_set "descr" "Checks removing records in recno database"
    530  1.1  pgoyette }
    531  1.1  pgoyette delete_recno_body()
    532  1.1  pgoyette {
    533  1.1  pgoyette 	h_delete recno
    534  1.1  pgoyette }
    535  1.1  pgoyette 
    536  1.1  pgoyette h_repeated()
    537  1.1  pgoyette {
    538  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    539  1.1  pgoyette 	mkdir ${TMPDIR}
    540  1.1  pgoyette 
    541  1.1  pgoyette 	echo "" | 
    542  1.1  pgoyette 	awk 'BEGIN {
    543  1.1  pgoyette 		for (i = 1; i <= 10; ++i) {
    544  1.1  pgoyette 			printf("p\nkkey1\nD/bin/sh\n");
    545  1.1  pgoyette 			printf("p\nkkey2\nD/bin/csh\n");
    546  1.1  pgoyette 			if (i % 8 == 0) {
    547  1.1  pgoyette 				printf("c\nkkey2\nD/bin/csh\n");
    548  1.1  pgoyette 				printf("c\nkkey1\nD/bin/sh\n");
    549  1.1  pgoyette 				printf("e\t%d of 10 (comparison)\n", i);
    550  1.1  pgoyette 			} else
    551  1.1  pgoyette 				printf("e\t%d of 10             \n", i);
    552  1.1  pgoyette 			printf("r\nkkey1\nr\nkkey2\n");
    553  1.1  pgoyette 		}
    554  1.1  pgoyette 	}' >in
    555  1.1  pgoyette 
    556  1.1  pgoyette 	$(prog) btree in
    557  1.1  pgoyette }
    558  1.1  pgoyette 
    559  1.1  pgoyette atf_test_case repeated_btree
    560  1.1  pgoyette repeated_btree_head()
    561  1.1  pgoyette {
    562  1.1  pgoyette 	atf_set "descr" \
    563  1.1  pgoyette 		"Checks btree database with repeated small keys and" \
    564  1.1  pgoyette 		"big data pairs. Makes sure that overflow pages are reused"
    565  1.1  pgoyette }
    566  1.1  pgoyette repeated_btree_body()
    567  1.1  pgoyette {
    568  1.1  pgoyette 	h_repeated btree
    569  1.1  pgoyette }
    570  1.1  pgoyette 
    571  1.1  pgoyette atf_test_case repeated_hash
    572  1.1  pgoyette repeated_hash_head()
    573  1.1  pgoyette {
    574  1.1  pgoyette 	atf_set "descr" \
    575  1.1  pgoyette 		"Checks hash database with repeated small keys and" \
    576  1.1  pgoyette 		"big data pairs. Makes sure that overflow pages are reused"
    577  1.1  pgoyette }
    578  1.1  pgoyette repeated_hash_body()
    579  1.1  pgoyette {
    580  1.1  pgoyette 	h_repeated hash
    581  1.1  pgoyette }
    582  1.1  pgoyette 
    583  1.1  pgoyette atf_test_case duplicate_btree
    584  1.1  pgoyette duplicate_btree_head()
    585  1.1  pgoyette {
    586  1.1  pgoyette 	atf_set "descr" "Checks btree database with duplicate keys"
    587  1.1  pgoyette }
    588  1.1  pgoyette duplicate_btree_body()
    589  1.1  pgoyette {
    590  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    591  1.1  pgoyette 	mkdir ${TMPDIR}
    592  1.1  pgoyette 
    593  1.1  pgoyette 	echo $SEVEN_SEVEN |
    594  1.1  pgoyette 	awk '{
    595  1.1  pgoyette 		for (i = 1; i <= 543; ++i)
    596  1.1  pgoyette 			printf("%05d: input key %d: %s\n", i, i, $0);
    597  1.1  pgoyette 		exit;
    598  1.1  pgoyette 	}' >exp
    599  1.1  pgoyette 
    600  1.1  pgoyette 	cat exp | 
    601  1.1  pgoyette 	awk '{
    602  1.1  pgoyette 		if (i++ % 2)
    603  1.1  pgoyette 			printf("p\nkduplicatekey\nd%s\n", $0);
    604  1.1  pgoyette 		else
    605  1.1  pgoyette 			printf("p\nkunique%dkey\nd%s\n", i, $0);
    606  1.1  pgoyette 	}
    607  1.1  pgoyette 	END {
    608  1.1  pgoyette 			printf("o\n");
    609  1.1  pgoyette 	}' >in
    610  1.1  pgoyette 
    611  1.1  pgoyette 	atf_check -o file:exp -x "$(prog) -iflags=1 btree in | sort"
    612  1.1  pgoyette }
    613  1.1  pgoyette 
    614  1.1  pgoyette h_cursor_flags()
    615  1.1  pgoyette {
    616  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    617  1.1  pgoyette 	mkdir ${TMPDIR}
    618  1.1  pgoyette 
    619  1.1  pgoyette 	type=$1
    620  1.1  pgoyette 
    621  1.1  pgoyette 	echo $SEVEN_SEVEN |
    622  1.1  pgoyette 	awk '{
    623  1.1  pgoyette 		for (i = 1; i <= 20; ++i)
    624  1.1  pgoyette 			printf("%05d: input key %d: %s\n", i, i, $0);
    625  1.1  pgoyette 		exit;
    626  1.1  pgoyette 	}' >exp
    627  1.1  pgoyette 
    628  1.1  pgoyette 	# Test that R_CURSOR doesn't succeed before cursor initialized
    629  1.1  pgoyette 	cat exp |
    630  1.1  pgoyette 	awk '{
    631  1.1  pgoyette 		if (i == 10)
    632  1.1  pgoyette 			exit;
    633  1.1  pgoyette 		printf("p\nk%d\nd%s\n", ++i, $0);
    634  1.1  pgoyette 	}
    635  1.1  pgoyette 	END {
    636  1.1  pgoyette 		printf("fR_CURSOR\nr\n");
    637  1.1  pgoyette 		printf("eR_CURSOR SHOULD HAVE FAILED\n");
    638  1.1  pgoyette 	}' >in
    639  1.1  pgoyette 
    640  1.1  pgoyette 	atf_check -o ignore -e ignore -s ne:0 "$(prog)" -o out $type in
    641  1.1  pgoyette 	atf_check -s ne:0 test -s out
    642  1.1  pgoyette 
    643  1.1  pgoyette 	cat exp |
    644  1.1  pgoyette 	awk '{
    645  1.1  pgoyette 		if (i == 10)
    646  1.1  pgoyette 			exit;
    647  1.1  pgoyette 		printf("p\nk%d\nd%s\n", ++i, $0);
    648  1.1  pgoyette 	}
    649  1.1  pgoyette 	END {
    650  1.1  pgoyette 		printf("fR_CURSOR\np\nk1\ndsome data\n");
    651  1.1  pgoyette 		printf("eR_CURSOR SHOULD HAVE FAILED\n");
    652  1.1  pgoyette 	}' >in
    653  1.1  pgoyette 
    654  1.1  pgoyette 	atf_check -o ignore -e ignore -s ne:0 "$(prog)" -o out $type in
    655  1.1  pgoyette 	atf_check -s ne:0 test -s out
    656  1.1  pgoyette }
    657  1.1  pgoyette 
    658  1.1  pgoyette atf_test_case cursor_flags_btree
    659  1.1  pgoyette cursor_flags_btree_head()
    660  1.1  pgoyette {
    661  1.1  pgoyette 	atf_set "descr" \
    662  1.1  pgoyette 		"Checks use of cursor flags without initialization in btree database"
    663  1.1  pgoyette }
    664  1.1  pgoyette cursor_flags_btree_body()
    665  1.1  pgoyette {
    666  1.1  pgoyette 	h_cursor_flags btree
    667  1.1  pgoyette }
    668  1.1  pgoyette 
    669  1.1  pgoyette atf_test_case cursor_flags_recno
    670  1.1  pgoyette cursor_flags_recno_head()
    671  1.1  pgoyette {
    672  1.1  pgoyette 	atf_set "descr" \
    673  1.1  pgoyette 		"Checks use of cursor flags without initialization in recno database"
    674  1.1  pgoyette }
    675  1.1  pgoyette cursor_flags_recno_body()
    676  1.1  pgoyette {
    677  1.1  pgoyette 	h_cursor_flags recno
    678  1.1  pgoyette }
    679  1.1  pgoyette 
    680  1.1  pgoyette atf_test_case reverse_order_recno
    681  1.1  pgoyette reverse_order_recno_head()
    682  1.1  pgoyette {
    683  1.1  pgoyette 	atf_set "descr" "Checks reverse order inserts in recno database"
    684  1.1  pgoyette }
    685  1.1  pgoyette reverse_order_recno_body()
    686  1.1  pgoyette {
    687  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    688  1.1  pgoyette 	mkdir ${TMPDIR}
    689  1.1  pgoyette 
    690  1.1  pgoyette 	echo $SEVEN_SEVEN |
    691  1.1  pgoyette 	awk '{
    692  1.1  pgoyette 		for (i = 1; i <= 779; ++i)
    693  1.1  pgoyette 			printf("%05d: input key %d: %s\n", i, i, $0);
    694  1.1  pgoyette 		exit;
    695  1.1  pgoyette 	}' >exp
    696  1.1  pgoyette 
    697  1.1  pgoyette 	cat exp |
    698  1.1  pgoyette 	awk '{
    699  1.1  pgoyette 		if (i == 0) {
    700  1.1  pgoyette 			i = 1;
    701  1.1  pgoyette 			printf("p\nk1\nd%s\n", $0);
    702  1.1  pgoyette 			printf("%s\n", "fR_IBEFORE");
    703  1.1  pgoyette 		} else
    704  1.1  pgoyette 			printf("p\nk1\nd%s\n", $0);
    705  1.1  pgoyette 	}
    706  1.1  pgoyette 	END {
    707  1.1  pgoyette 			printf("or\n");
    708  1.1  pgoyette 	}' >in
    709  1.1  pgoyette 
    710  1.1  pgoyette 	atf_check -o file:exp "$(prog)" recno in
    711  1.1  pgoyette }
    712  1.1  pgoyette 
    713  1.1  pgoyette atf_test_case small_page_btree
    714  1.1  pgoyette small_page_btree_head()
    715  1.1  pgoyette {
    716  1.1  pgoyette 	atf_set "descr" \
    717  1.1  pgoyette 		"Checks btree database with lots of keys and small page" \
    718  1.1  pgoyette 		"size: takes the first 20000 entries in the dictionary," \
    719  1.1  pgoyette 		"reverses them, and gives them each a small size data" \
    720  1.1  pgoyette 		"entry. Uses a small page size to make sure the btree" \
    721  1.1  pgoyette 		"split code gets hammered."
    722  1.1  pgoyette }
    723  1.1  pgoyette small_page_btree_body()
    724  1.1  pgoyette {
    725  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    726  1.1  pgoyette 	mkdir ${TMPDIR}
    727  1.1  pgoyette 
    728  1.1  pgoyette 	mdata=abcdefghijklmnopqrstuvwxy
    729  1.1  pgoyette 	echo $mdata |
    730  1.1  pgoyette 	awk '{ for (i = 1; i < 20001; ++i) print $0 }' >exp
    731  1.1  pgoyette 
    732  1.1  pgoyette 	for i in `sed 20000q $(dict) | rev`; do
    733  1.1  pgoyette 		echo p
    734  1.1  pgoyette 		echo k$i
    735  1.1  pgoyette 		echo d$mdata
    736  1.1  pgoyette 		echo g
    737  1.1  pgoyette 		echo k$i
    738  1.1  pgoyette 	done >in
    739  1.1  pgoyette 
    740  1.1  pgoyette 	atf_check -o file:exp "$(prog)" -i psize=512 btree in
    741  1.1  pgoyette }
    742  1.1  pgoyette 
    743  1.1  pgoyette h_byte_orders()
    744  1.1  pgoyette {
    745  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    746  1.1  pgoyette 	mkdir ${TMPDIR}
    747  1.1  pgoyette 
    748  1.1  pgoyette 	type=$1
    749  1.1  pgoyette 
    750  1.1  pgoyette 	sed 50q $(dict) >exp
    751  1.1  pgoyette 	for order in 1234 4321; do
    752  1.1  pgoyette 		for i in `sed 50q $(dict)`; do
    753  1.1  pgoyette 			echo p
    754  1.1  pgoyette 			echo k$i
    755  1.1  pgoyette 			echo d$i
    756  1.1  pgoyette 			echo g
    757  1.1  pgoyette 			echo k$i
    758  1.1  pgoyette 		done >in
    759  1.1  pgoyette 
    760  1.1  pgoyette 		atf_check -o file:exp "$(prog)" -ilorder=$order -f byte.file $type in
    761  1.1  pgoyette 
    762  1.1  pgoyette 		for i in `sed 50q $(dict)`; do
    763  1.1  pgoyette 			echo g
    764  1.1  pgoyette 			echo k$i
    765  1.1  pgoyette 		done >in
    766  1.1  pgoyette 
    767  1.1  pgoyette 		atf_check -o file:exp "$(prog)" -s -ilorder=$order -f byte.file $type in
    768  1.1  pgoyette 	done
    769  1.1  pgoyette }
    770  1.1  pgoyette 
    771  1.1  pgoyette atf_test_case byte_orders_btree
    772  1.1  pgoyette byte_orders_btree_head()
    773  1.1  pgoyette {
    774  1.1  pgoyette 	atf_set "descr" "Checks btree database using differing byte orders"
    775  1.1  pgoyette }
    776  1.1  pgoyette byte_orders_btree_body()
    777  1.1  pgoyette {
    778  1.1  pgoyette 	h_byte_orders btree
    779  1.1  pgoyette }
    780  1.1  pgoyette 
    781  1.1  pgoyette atf_test_case byte_orders_hash
    782  1.1  pgoyette byte_orders_hash_head()
    783  1.1  pgoyette {
    784  1.1  pgoyette 	atf_set "descr" "Checks hash database using differing byte orders"
    785  1.1  pgoyette }
    786  1.1  pgoyette byte_orders_hash_body()
    787  1.1  pgoyette {
    788  1.1  pgoyette 	h_byte_orders hash
    789  1.1  pgoyette }
    790  1.1  pgoyette 
    791  1.1  pgoyette h_bsize_ffactor()
    792  1.1  pgoyette {
    793  1.1  pgoyette 	bsize=$1
    794  1.1  pgoyette 	ffactor=$2
    795  1.1  pgoyette 
    796  1.1  pgoyette 	echo "bucketsize $bsize, fill factor $ffactor"
    797  1.1  pgoyette 	atf_check -o file:exp "$(prog)" "-ibsize=$bsize,\
    798  1.1  pgoyette ffactor=$ffactor,nelem=25000,cachesize=65536" hash in
    799  1.1  pgoyette }
    800  1.1  pgoyette 
    801  1.1  pgoyette atf_test_case bsize_ffactor
    802  1.1  pgoyette bsize_ffactor_head()
    803  1.1  pgoyette {
    804  1.1  pgoyette 	atf_set "descr" "Checks hash database with various" \
    805  1.1  pgoyette 					"bucketsizes and fill factors"
    806  1.1  pgoyette }
    807  1.1  pgoyette bsize_ffactor_body()
    808  1.1  pgoyette {
    809  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    810  1.1  pgoyette 	mkdir ${TMPDIR}
    811  1.1  pgoyette 
    812  1.1  pgoyette 	echo $SEVEN_SEVEN |
    813  1.1  pgoyette 	awk '{
    814  1.1  pgoyette 		for (i = 1; i <= 10000; ++i) {
    815  1.1  pgoyette 			if (i % 34)
    816  1.1  pgoyette 				s = substr($0, 1, i % 34);
    817  1.1  pgoyette 			else
    818  1.1  pgoyette 				s = substr($0, 1);
    819  1.1  pgoyette 			printf("%s\n", s);
    820  1.1  pgoyette 		}
    821  1.1  pgoyette 		exit;
    822  1.1  pgoyette 
    823  1.1  pgoyette 	}' >exp
    824  1.1  pgoyette 
    825  1.1  pgoyette 	sed 10000q $(dict) |
    826  1.1  pgoyette 	awk 'BEGIN {
    827  1.1  pgoyette 		ds="'$SEVEN_SEVEN'"
    828  1.1  pgoyette 	}
    829  1.1  pgoyette 	{
    830  1.1  pgoyette 		if (++i % 34)
    831  1.1  pgoyette 			s = substr(ds, 1, i % 34);
    832  1.1  pgoyette 		else
    833  1.1  pgoyette 			s = substr(ds, 1);
    834  1.1  pgoyette 		printf("p\nk%s\nd%s\n", $0, s);
    835  1.1  pgoyette 	}' >in
    836  1.1  pgoyette 
    837  1.1  pgoyette 	sed 10000q $(dict) |
    838  1.1  pgoyette 	awk '{
    839  1.1  pgoyette 		++i;
    840  1.1  pgoyette 		printf("g\nk%s\n", $0);
    841  1.1  pgoyette 	}' >>in
    842  1.1  pgoyette 
    843  1.1  pgoyette 	h_bsize_ffactor 256 11
    844  1.1  pgoyette 	h_bsize_ffactor 256 14
    845  1.1  pgoyette 	h_bsize_ffactor 256 21
    846  1.1  pgoyette 
    847  1.1  pgoyette 	h_bsize_ffactor 512 21
    848  1.1  pgoyette 	h_bsize_ffactor 512 28
    849  1.1  pgoyette 	h_bsize_ffactor 512 43
    850  1.1  pgoyette 
    851  1.1  pgoyette 	h_bsize_ffactor 1024 43
    852  1.1  pgoyette 	h_bsize_ffactor 1024 57
    853  1.1  pgoyette 	h_bsize_ffactor 1024 85
    854  1.1  pgoyette 
    855  1.1  pgoyette 	h_bsize_ffactor 2048 85
    856  1.1  pgoyette 	h_bsize_ffactor 2048 114
    857  1.1  pgoyette 	h_bsize_ffactor 2048 171
    858  1.1  pgoyette 
    859  1.1  pgoyette 	h_bsize_ffactor 4096 171
    860  1.1  pgoyette 	h_bsize_ffactor 4096 228
    861  1.1  pgoyette 	h_bsize_ffactor 4096 341
    862  1.1  pgoyette 
    863  1.1  pgoyette 	h_bsize_ffactor 8192 341
    864  1.1  pgoyette 	h_bsize_ffactor 8192 455
    865  1.1  pgoyette 	h_bsize_ffactor 8192 683
    866  1.1  pgoyette }
    867  1.1  pgoyette 
    868  1.1  pgoyette # FIXME: what does it test?
    869  1.1  pgoyette atf_test_case four_char_hash
    870  1.1  pgoyette four_char_hash_head()
    871  1.1  pgoyette {
    872  1.1  pgoyette 	atf_set "descr" \
    873  1.1  pgoyette 		"Checks hash database with 4 char key and" \
    874  1.1  pgoyette 		"value insert on a 65536 bucket size"
    875  1.1  pgoyette }
    876  1.1  pgoyette four_char_hash_body()
    877  1.1  pgoyette {
    878  1.1  pgoyette 	TMPDIR="$(pwd)/db_dir"; export TMPDIR
    879  1.1  pgoyette 	mkdir ${TMPDIR}
    880  1.1  pgoyette 
    881  1.1  pgoyette 	cat >in <<EOF
    882  1.1  pgoyette p
    883  1.1  pgoyette k1234
    884  1.1  pgoyette d1234
    885  1.1  pgoyette r
    886  1.1  pgoyette k1234
    887  1.1  pgoyette EOF
    888  1.1  pgoyette 
    889  1.1  pgoyette 	atf_check "$(prog)" -i bsize=65536 hash in
    890  1.1  pgoyette }
    891  1.1  pgoyette 
    892  1.1  pgoyette atf_init_test_cases()
    893  1.1  pgoyette {
    894  1.1  pgoyette 	atf_add_test_case small_btree
    895  1.1  pgoyette 	atf_add_test_case small_hash
    896  1.1  pgoyette 	atf_add_test_case small_recno
    897  1.1  pgoyette 	atf_add_test_case medium_btree
    898  1.1  pgoyette 	atf_add_test_case medium_hash
    899  1.1  pgoyette 	atf_add_test_case medium_recno
    900  1.1  pgoyette 	atf_add_test_case big_btree
    901  1.1  pgoyette 	atf_add_test_case big_hash
    902  1.1  pgoyette 	atf_add_test_case big_recno
    903  1.1  pgoyette 	atf_add_test_case random_recno
    904  1.1  pgoyette 	atf_add_test_case reverse_recno
    905  1.1  pgoyette 	atf_add_test_case alternate_recno
    906  1.1  pgoyette 	atf_add_test_case delete_btree
    907  1.1  pgoyette 	atf_add_test_case delete_recno
    908  1.1  pgoyette 	atf_add_test_case repeated_btree
    909  1.1  pgoyette 	atf_add_test_case repeated_hash
    910  1.1  pgoyette 	atf_add_test_case duplicate_btree
    911  1.1  pgoyette 	atf_add_test_case cursor_flags_btree
    912  1.1  pgoyette 	atf_add_test_case cursor_flags_recno
    913  1.1  pgoyette 	atf_add_test_case reverse_order_recno
    914  1.1  pgoyette 	atf_add_test_case small_page_btree
    915  1.1  pgoyette 	atf_add_test_case byte_orders_btree
    916  1.1  pgoyette 	atf_add_test_case byte_orders_hash
    917  1.1  pgoyette 	atf_add_test_case bsize_ffactor
    918  1.1  pgoyette 	atf_add_test_case four_char_hash
    919  1.1  pgoyette }
    920