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