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