1 # $NetBSD: t_rc_d_cli.sh,v 1.6 2024/04/28 07:27:42 rillig Exp $ 2 # 3 # Copyright (c) 2010 The NetBSD Foundation, Inc. 4 # All rights reserved. 5 # 6 # This code is derived from software contributed to The NetBSD Foundation 7 # by Julio Merino. 8 # 9 # Redistribution and use in source and binary forms, with or without 10 # modification, are permitted provided that the following conditions 11 # are met: 12 # 1. Redistributions of source code must retain the above copyright 13 # notice, this list of conditions and the following disclaimer. 14 # 2. Redistributions in binary form must reproduce the above copyright 15 # notice, this list of conditions and the following disclaimer in the 16 # documentation and/or other materials provided with the distribution. 17 # 18 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 19 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 # POSSIBILITY OF SUCH DAMAGE. 29 # 30 31 atf_test_case no_command 32 no_command_head() { 33 atf_set "descr" "Tests that the lack of a command errors out" 34 } 35 no_command_body() { 36 export h_simple=YES 37 rc_helper=$(atf_get_srcdir)/h_simple 38 39 atf_check -s exit:1 -o empty -e ignore ${rc_helper} 40 } 41 42 atf_test_case default_start_no_args 43 default_start_no_args_head() { 44 atf_set "descr" "Tests that running the default 'start' without" \ 45 "arguments does not error out" 46 } 47 default_start_no_args_body() { 48 export h_simple=YES 49 rc_helper=$(atf_get_srcdir)/h_simple 50 51 atf_expect_fail "PR bin/56506" 52 atf_check -s exit:0 -o ignore -e empty ${rc_helper} start 53 ${rc_helper} forcestop 54 atf_fail "random failure did not happen this time" 55 } 56 57 atf_test_case default_start_with_args 58 default_start_with_args_head() { 59 atf_set "descr" "Tests that running the default 'start' with" \ 60 "arguments errors out" 61 } 62 default_start_with_args_body() { 63 export h_simple=YES 64 rc_helper=$(atf_get_srcdir)/h_simple 65 66 atf_check -s exit:1 -o ignore -e ignore ${rc_helper} start foo 67 if ${rc_helper} status >/dev/null; then 68 ${rc_helper} forcestop 69 atf_fail 'extra argument to start did not error out' 70 fi 71 } 72 73 atf_test_case default_stop_no_args 74 default_stop_no_args_head() { 75 atf_set "descr" "Tests that running the default 'stop' without" \ 76 "arguments does not error out" 77 } 78 default_stop_no_args_body() { 79 export h_simple=YES 80 rc_helper=$(atf_get_srcdir)/h_simple 81 82 atf_expect_fail "PR bin/56506" 83 ${rc_helper} start 84 atf_check -s exit:0 -o ignore -e empty ${rc_helper} stop 85 atf_fail "random failure did not happen this time" 86 } 87 88 atf_test_case default_stop_with_args 89 default_stop_with_args_head() { 90 atf_set "descr" "Tests that running the default 'stop' with" \ 91 "arguments errors out" 92 } 93 default_stop_with_args_body() { 94 export h_simple=YES 95 rc_helper=$(atf_get_srcdir)/h_simple 96 97 ${rc_helper} start 98 atf_check -s exit:1 -o ignore -e ignore ${rc_helper} stop foo 99 if ${rc_helper} status >/dev/null; then 100 ${rc_helper} forcestop 101 else 102 atf_fail 'extra argument to stop did not error out' 103 fi 104 } 105 106 atf_test_case default_restart_no_args 107 default_restart_no_args_head() { 108 atf_set "descr" "Tests that running the default 'restart' without" \ 109 "arguments does not error out" 110 } 111 default_restart_no_args_body() { 112 export h_simple=YES 113 rc_helper=$(atf_get_srcdir)/h_simple 114 115 atf_expect_fail "PR bin/56506" 116 ${rc_helper} start 117 atf_check -s exit:0 -o ignore -e empty ${rc_helper} restart 118 ${rc_helper} forcestop 119 atf_fail "random failure did not happen this time" 120 } 121 122 atf_test_case default_restart_with_args 123 default_restart_with_args_head() { 124 atf_set "descr" "Tests that running the default 'restart' with" \ 125 "arguments errors out" 126 } 127 default_restart_with_args_body() { 128 export h_simple=YES 129 rc_helper=$(atf_get_srcdir)/h_simple 130 131 ${rc_helper} start 132 atf_check -s exit:1 -o ignore -e ignore ${rc_helper} restart foo 133 ${rc_helper} forcestop 134 } 135 136 do_overriden_no_args() { 137 local command="${1}"; shift 138 139 export h_args=YES 140 rc_helper=$(atf_get_srcdir)/h_args 141 142 cat >expout <<EOF 143 pre${command}:. 144 ${command}:. 145 post${command}:. 146 EOF 147 atf_check -s exit:0 -o file:expout -e empty ${rc_helper} ${command} 148 } 149 150 do_overriden_with_args() { 151 local command="${1}"; shift 152 153 export h_args=YES 154 rc_helper=$(atf_get_srcdir)/h_args 155 156 cat >expout <<EOF 157 pre${command}:. 158 ${command}: >arg1< > arg 2 < >arg3< >*<. 159 post${command}:. 160 EOF 161 atf_check -s exit:0 -o file:expout -e empty ${rc_helper} ${command} \ 162 'arg1' ' arg 2 ' 'arg3' '*' 163 } 164 165 atf_test_case overriden_start_no_args 166 overriden_start_no_args_head() { 167 atf_set "descr" "Tests that running a custom 'start' without" \ 168 "arguments does not pass any parameters to the command" 169 } 170 overriden_start_no_args_body() { 171 do_overriden_no_args start 172 } 173 174 atf_test_case overriden_start_with_args 175 overriden_start_with_args_head() { 176 atf_set "descr" "Tests that running a custom 'start' with" \ 177 "arguments passes those arguments as parameters to the command" 178 } 179 overriden_start_with_args_body() { 180 do_overriden_with_args start 181 } 182 183 atf_test_case overriden_stop_no_args 184 overriden_stop_no_args_head() { 185 atf_set "descr" "Tests that running a custom 'stop' without" \ 186 "arguments does not pass any parameters to the command" 187 } 188 overriden_stop_no_args_body() { 189 do_overriden_no_args stop 190 } 191 192 atf_test_case overriden_stop_with_args 193 overriden_stop_with_args_head() { 194 atf_set "descr" "Tests that running a custom 'stop' with" \ 195 "arguments passes those arguments as parameters to the command" 196 } 197 overriden_stop_with_args_body() { 198 do_overriden_with_args stop 199 } 200 201 atf_test_case overriden_restart_no_args 202 overriden_restart_no_args_head() { 203 atf_set "descr" "Tests that running a custom 'restart' without" \ 204 "arguments does not pass any parameters to the command" 205 } 206 overriden_restart_no_args_body() { 207 do_overriden_no_args restart 208 } 209 210 atf_test_case overriden_restart_with_args 211 overriden_restart_with_args_head() { 212 atf_set "descr" "Tests that running a custom 'restart' with" \ 213 "arguments passes those arguments as parameters to the command" 214 } 215 overriden_restart_with_args_body() { 216 do_overriden_with_args restart 217 } 218 219 atf_test_case overriden_custom_no_args 220 overriden_custom_no_args_head() { 221 atf_set "descr" "Tests that running a custom command without" \ 222 "arguments does not pass any parameters to the command" 223 } 224 overriden_custom_no_args_body() { 225 do_overriden_no_args custom 226 } 227 228 atf_test_case overriden_custom_with_args 229 overriden_custom_with_args_head() { 230 atf_set "descr" "Tests that running a custom command with" \ 231 "arguments passes those arguments as parameters to the command" 232 } 233 overriden_custom_with_args_body() { 234 do_overriden_with_args custom 235 } 236 237 atf_init_test_cases() 238 { 239 atf_add_test_case no_command 240 241 atf_add_test_case default_start_no_args 242 atf_add_test_case default_start_with_args 243 atf_add_test_case default_stop_no_args 244 atf_add_test_case default_stop_with_args 245 atf_add_test_case default_restart_no_args 246 atf_add_test_case default_restart_with_args 247 248 atf_add_test_case overriden_start_no_args 249 atf_add_test_case overriden_start_with_args 250 atf_add_test_case overriden_stop_no_args 251 atf_add_test_case overriden_stop_with_args 252 atf_add_test_case overriden_restart_no_args 253 atf_add_test_case overriden_restart_with_args 254 atf_add_test_case overriden_custom_no_args 255 atf_add_test_case overriden_custom_with_args 256 } 257