t_nbperf.sh revision 1.5 1 1.5 joerg # $NetBSD: t_nbperf.sh,v 1.5 2021/02/14 01:27:33 joerg Exp $
2 1.1 joerg #
3 1.1 joerg # Copyright (c) 2012 The NetBSD Foundation, Inc.
4 1.1 joerg # All rights reserved.
5 1.1 joerg #
6 1.1 joerg # Redistribution and use in source and binary forms, with or without
7 1.1 joerg # modification, are permitted provided that the following conditions
8 1.1 joerg # are met:
9 1.1 joerg # 1. Redistributions of source code must retain the above copyright
10 1.1 joerg # notice, this list of conditions and the following disclaimer.
11 1.1 joerg # 2. Redistributions in binary form must reproduce the above copyright
12 1.1 joerg # notice, this list of conditions and the following disclaimer in the
13 1.1 joerg # documentation and/or other materials provided with the distribution.
14 1.1 joerg #
15 1.1 joerg # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16 1.1 joerg # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17 1.1 joerg # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 1.1 joerg # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19 1.1 joerg # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 1.1 joerg # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 1.1 joerg # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 1.1 joerg # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 1.1 joerg # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 1.1 joerg # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 1.1 joerg # POSSIBILITY OF SUCH DAMAGE.
26 1.1 joerg #
27 1.1 joerg
28 1.1 joerg cleanup()
29 1.1 joerg {
30 1.4 joerg rm -f reference.txt input.txt hash.c hash.map testprog
31 1.1 joerg }
32 1.1 joerg
33 1.1 joerg atf_test_case chm
34 1.1 joerg chm_head()
35 1.1 joerg {
36 1.1 joerg atf_set "descr" "Checks chm algorithm"
37 1.3 joerg atf_set "require.files" "/usr/share/dict/web2"
38 1.3 joerg atf_set "require.progs" "cc"
39 1.1 joerg }
40 1.1 joerg chm_body()
41 1.4 joerg {
42 1.1 joerg for n in 4 32 128 1024 65536; do
43 1.2 joerg seq 0 $(($n - 1)) > reference.txt
44 1.1 joerg atf_check -o file:reference.txt \
45 1.1 joerg $(atf_get_srcdir)/h_nbperf /usr/share/dict/web2 chm cat \
46 1.1 joerg $n $(atf_get_srcdir)/hash_driver.c
47 1.2 joerg atf_check -o file:hash.map \
48 1.2 joerg $(atf_get_srcdir)/h_nbperf /usr/share/dict/web2 chm cat \
49 1.2 joerg $n $(atf_get_srcdir)/hash_driver.c
50 1.1 joerg done
51 1.1 joerg }
52 1.1 joerg chm_clean()
53 1.1 joerg {
54 1.1 joerg cleanup
55 1.1 joerg }
56 1.1 joerg
57 1.4 joerg atf_test_case chm_fudged
58 1.4 joerg chm_fudged_head()
59 1.4 joerg {
60 1.4 joerg atf_set "descr" "Checks chm algorithm with fudged hash"
61 1.4 joerg atf_set "require.progs" "cc"
62 1.4 joerg }
63 1.4 joerg chm_fudged_body()
64 1.4 joerg {
65 1.5 joerg seq 0 11 > reference.txt
66 1.5 joerg seq 1 12 > input.txt
67 1.4 joerg
68 1.4 joerg atf_check -o file:reference.txt \
69 1.4 joerg $(atf_get_srcdir)/h_nbperf input.txt "chm -p" cat \
70 1.5 joerg 12 $(atf_get_srcdir)/hash_driver.c
71 1.4 joerg atf_check -s exit:1 fgrep -q '^=' hash.c
72 1.4 joerg
73 1.4 joerg atf_check -o file:reference.txt \
74 1.4 joerg $(atf_get_srcdir)/h_nbperf input.txt "chm -f -p" cat \
75 1.5 joerg 12 $(atf_get_srcdir)/hash_driver.c
76 1.4 joerg atf_check -s exit:0 fgrep -q '^=' hash.c
77 1.4 joerg }
78 1.4 joerg chm_fudged_clean()
79 1.4 joerg {
80 1.4 joerg cleanup
81 1.4 joerg }
82 1.4 joerg
83 1.1 joerg atf_test_case chm3
84 1.1 joerg chm3_head()
85 1.1 joerg {
86 1.1 joerg atf_set "descr" "Checks chm3 algorithm"
87 1.3 joerg atf_set "require.files" "/usr/share/dict/web2"
88 1.3 joerg atf_set "require.progs" "cc"
89 1.1 joerg }
90 1.1 joerg chm3_body()
91 1.1 joerg {
92 1.1 joerg for n in 4 32 128 1024 65536; do
93 1.2 joerg seq 0 $(($n - 1)) > reference.txt
94 1.1 joerg atf_check -o file:reference.txt \
95 1.1 joerg $(atf_get_srcdir)/h_nbperf /usr/share/dict/web2 chm3 cat \
96 1.1 joerg $n $(atf_get_srcdir)/hash_driver.c
97 1.2 joerg atf_check -o file:hash.map \
98 1.2 joerg $(atf_get_srcdir)/h_nbperf /usr/share/dict/web2 chm3 cat \
99 1.2 joerg $n $(atf_get_srcdir)/hash_driver.c
100 1.1 joerg done
101 1.1 joerg }
102 1.1 joerg chm3_clean()
103 1.1 joerg {
104 1.1 joerg cleanup
105 1.1 joerg }
106 1.1 joerg
107 1.4 joerg atf_test_case chm3_fudged
108 1.4 joerg chm3_fudged_head()
109 1.4 joerg {
110 1.4 joerg atf_set "descr" "Checks chm3 algorithm with fudged hash"
111 1.4 joerg atf_set "require.progs" "cc"
112 1.4 joerg }
113 1.4 joerg chm3_fudged_body()
114 1.4 joerg {
115 1.4 joerg seq 0 9 > reference.txt
116 1.4 joerg seq 1 10 > input.txt
117 1.4 joerg
118 1.4 joerg atf_check -o file:reference.txt \
119 1.4 joerg $(atf_get_srcdir)/h_nbperf input.txt "chm3 -p" cat \
120 1.4 joerg 10 $(atf_get_srcdir)/hash_driver.c
121 1.4 joerg atf_check -s exit:1 fgrep -q '^=' hash.c
122 1.4 joerg
123 1.4 joerg atf_check -o file:reference.txt \
124 1.4 joerg $(atf_get_srcdir)/h_nbperf input.txt "chm3 -f -p" cat \
125 1.4 joerg 10 $(atf_get_srcdir)/hash_driver.c
126 1.4 joerg atf_check -s exit:0 fgrep -q '^= (' hash.c
127 1.4 joerg atf_check -s exit:0 fgrep -q '^= 2' hash.c
128 1.4 joerg }
129 1.4 joerg chm3_fudged_clean()
130 1.4 joerg {
131 1.4 joerg cleanup
132 1.4 joerg }
133 1.4 joerg
134 1.4 joerg atf_test_case bpz
135 1.4 joerg bpz_head()
136 1.2 joerg {
137 1.4 joerg atf_set "descr" "Checks bpz algorithm"
138 1.3 joerg atf_set "require.files" "/usr/share/dict/web2"
139 1.3 joerg atf_set "require.progs" "cc"
140 1.2 joerg }
141 1.4 joerg bpz_body()
142 1.4 joerg {
143 1.2 joerg for n in 4 32 128 1024 65536 131072; do
144 1.2 joerg seq 0 $(($n - 1)) > reference.txt
145 1.2 joerg atf_check -o file:reference.txt \
146 1.4 joerg $(atf_get_srcdir)/h_nbperf /usr/share/dict/web2 bpz "sort -n" \
147 1.2 joerg $n $(atf_get_srcdir)/hash_driver.c
148 1.2 joerg atf_check -o file:hash.map \
149 1.4 joerg $(atf_get_srcdir)/h_nbperf /usr/share/dict/web2 bpz cat \
150 1.2 joerg $n $(atf_get_srcdir)/hash_driver.c
151 1.2 joerg done
152 1.2 joerg }
153 1.4 joerg bpz_clean()
154 1.4 joerg {
155 1.4 joerg cleanup
156 1.4 joerg }
157 1.4 joerg
158 1.4 joerg atf_test_case bpz_fudged
159 1.4 joerg bpz_fudged_head()
160 1.4 joerg {
161 1.4 joerg atf_set "descr" "Checks bpz algorithm with fudged hash"
162 1.4 joerg atf_set "require.progs" "cc"
163 1.4 joerg }
164 1.4 joerg bpz_fudged_body()
165 1.4 joerg {
166 1.5 joerg seq 0 11 > reference.txt
167 1.5 joerg seq 1 12 > input.txt
168 1.4 joerg
169 1.4 joerg atf_check -o file:reference.txt \
170 1.4 joerg $(atf_get_srcdir)/h_nbperf input.txt "bpz -p" "sort -n" \
171 1.5 joerg 12 $(atf_get_srcdir)/hash_driver.c
172 1.4 joerg atf_check -s exit:1 fgrep -q '^=' hash.c
173 1.4 joerg
174 1.4 joerg atf_check -o file:reference.txt \
175 1.4 joerg $(atf_get_srcdir)/h_nbperf input.txt "bpz -f -p" "sort -n" \
176 1.5 joerg 12 $(atf_get_srcdir)/hash_driver.c
177 1.4 joerg atf_check -s exit:0 fgrep -q '^= (' hash.c
178 1.4 joerg atf_check -s exit:0 fgrep -q '^= 2' hash.c
179 1.4 joerg }
180 1.4 joerg bpz_fudged_clean()
181 1.4 joerg {
182 1.4 joerg cleanup
183 1.4 joerg }
184 1.4 joerg
185 1.4 joerg atf_test_case handle_dup
186 1.4 joerg handle_dup_head()
187 1.4 joerg {
188 1.4 joerg atf_set "descr" "Checks different algorithms deal with duplicates"
189 1.4 joerg atf_set "require.progs" "cc"
190 1.4 joerg }
191 1.4 joerg handle_dup_body()
192 1.4 joerg {
193 1.4 joerg seq 0 9 > reference.txt
194 1.4 joerg echo 0 >> reference.txt
195 1.4 joerg atf_check -s exit:1 -e match:"nbperf: Duplicate keys detected" \
196 1.4 joerg nbperf -a chm < reference.txt
197 1.4 joerg atf_check -s exit:1 -e match:"nbperf: Duplicate keys detected" \
198 1.4 joerg nbperf -a chm3 < reference.txt
199 1.4 joerg atf_check -s exit:1 -e match:"nbperf: Duplicate keys detected" \
200 1.4 joerg nbperf -a bpz < reference.txt
201 1.4 joerg }
202 1.4 joerg handle_dup_clean()
203 1.2 joerg {
204 1.2 joerg cleanup
205 1.2 joerg }
206 1.2 joerg
207 1.1 joerg atf_init_test_cases()
208 1.1 joerg {
209 1.1 joerg atf_add_test_case chm
210 1.4 joerg atf_add_test_case chm_fudged
211 1.1 joerg atf_add_test_case chm3
212 1.4 joerg atf_add_test_case chm3_fudged
213 1.4 joerg atf_add_test_case bpz
214 1.4 joerg atf_add_test_case bpz_fudged
215 1.4 joerg atf_add_test_case handle_dup
216 1.1 joerg }
217