From: Alexander Barton Date: Sun, 31 Mar 2024 17:53:16 +0000 (+0200) Subject: Test suite: clean up scripts X-Git-Tag: rel-27-rc1~10 X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git;a=commitdiff_plain;h=7e78c293a97239f895b862836c65c4b755abdc52 Test suite: clean up scripts - Reformat code. - Cleanup some glitches, streamline scripts ... - Enable "set -u": Error on unset variables. - Detect "$srcdir" in prep-server3 script, too. --- diff --git a/src/testsuite/getpid.sh b/src/testsuite/getpid.sh index 04708e6c..55997ad8 100755 --- a/src/testsuite/getpid.sh +++ b/src/testsuite/getpid.sh @@ -1,29 +1,31 @@ #!/bin/sh # ngIRCd Test Suite +set -u + # did we get a name? [ $# -ne 1 ] && exit 1 -[ -x /bin/pidof ] && exec /bin/pidof -s $@ +[ -x /bin/pidof ] && exec /bin/pidof -s "$1" # detect flags for "ps" and "head" UNAME=`uname` if [ $UNAME = "FreeBSD" ]; then - PS_FLAGS="-a"; PS_PIDCOL="1"; HEAD_FLAGS="-n 1" + PS_FLAGS="-a"; PS_PIDCOL="1"; HEAD_FLAGS="-n 1" elif [ $UNAME = "A/UX" ]; then - PS_FLAGS="-af"; PS_PIDCOL="2"; HEAD_FLAGS="-1" + PS_FLAGS="-af"; PS_PIDCOL="2"; HEAD_FLAGS="-1" elif [ $UNAME = "GNU" ]; then - PS_FLAGS="-ax"; PS_PIDCOL="2"; HEAD_FLAGS="-n 1" + PS_FLAGS="-ax"; PS_PIDCOL="2"; HEAD_FLAGS="-n 1" elif [ $UNAME = "Haiku" ]; then - PS_FLAGS="-o Id -o Team"; PS_PIDCOL="1"; HEAD_FLAGS="-1" + PS_FLAGS="-o Id -o Team"; PS_PIDCOL="1"; HEAD_FLAGS="-1" elif [ $UNAME = "Linux" ]; then - PS_FLAGS="ax"; PS_PIDCOL="1"; HEAD_FLAGS="-n 1" + PS_FLAGS="ax"; PS_PIDCOL="1"; HEAD_FLAGS="-n 1" elif [ $UNAME = "SunOS" ]; then - PS_FLAGS="-af"; PS_PIDCOL=2; HEAD_FLAGS="-n 1" + PS_FLAGS="-af"; PS_PIDCOL=2; HEAD_FLAGS="-n 1" else - PS_FLAGS="-af"; PS_PIDCOL="2"; HEAD_FLAGS="-n 1" - ps $PS_FLAGS > /dev/null 2>&1 - if [ $? -ne 0 ]; then PS_FLAGS="a"; PS_PIDCOL="1"; fi + PS_FLAGS="-af"; PS_PIDCOL="2"; HEAD_FLAGS="-n 1" + ps $PS_FLAGS >/dev/null 2>&1 + if [ $? -ne 0 ]; then PS_FLAGS="a"; PS_PIDCOL="1"; fi fi # debug output @@ -33,19 +35,16 @@ fi #echo "$0: HEAD_FLAGS=$HEAD_FLAGS" # search PID -ps $PS_FLAGS > procs.tmp +ps $PS_FLAGS >procs.tmp cat procs.tmp | \ - grep -v "$0" | grep "$1" | \ - awk "{print \$$PS_PIDCOL}" | \ - sort -n > pids.tmp + grep -v "$0" | grep "$1" | \ + awk "{print \$$PS_PIDCOL}" | \ + sort -n >pids.tmp pid=`head $HEAD_FLAGS pids.tmp` rm -rf procs.tmp pids.tmp # validate PID -[ "$pid" -gt 1 ] > /dev/null 2>&1 -[ $? -ne 0 ] && exit 1 +[ "$pid" -gt 1 ] >/dev/null 2>&1 || exit 1 echo $pid exit 0 - -# -eof- diff --git a/src/testsuite/prep-server3 b/src/testsuite/prep-server3 index 6d389536..c76b2502 100755 --- a/src/testsuite/prep-server3 +++ b/src/testsuite/prep-server3 @@ -1,4 +1,6 @@ #!/bin/sh -e +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -eu mkdir -p ssl cp "${srcdir}"/ssl/cert-my-first-domain-tld.pem ssl/cert.pem cp "${srcdir}"/ssl/key-my-first-domain-tld.pem ssl/key.pem diff --git a/src/testsuite/reload-server.sh b/src/testsuite/reload-server.sh index 1f82d8eb..8d6fd2bc 100755 --- a/src/testsuite/reload-server.sh +++ b/src/testsuite/reload-server.sh @@ -1,10 +1,11 @@ #!/bin/sh # ngIRCd Test Suite -[ -z "$srcdir" ] && srcdir=`dirname $0` +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u # read in functions -. ${srcdir}/functions.inc +. "${srcdir}/functions.inc" if [ -n "$1" ]; then id="$1"; shift @@ -17,16 +18,14 @@ echo_n "reloading server ${id} ..." # reload (sighup) test-server ... pid=`./getpid.sh T-ngircd${id}` if [ -z "$pid" ]; then - echo " failure: no running server found!?" - exit 1 + echo " failure: no running server found!?" + exit 1 fi -kill -HUP $pid > /dev/null 2>&1; r=$? +kill -HUP $pid >/dev/null 2>&1; r=$? if [ $r -eq 0 ]; then - sleep 2 - echo " ok". - kill -0 $pid && exit 0 + sleep 2 + echo " ok". + kill -0 $pid && exit 0 fi echo " failure: server ${id} could not be reloaded!" exit 1 - -# -eof- diff --git a/src/testsuite/start-server.sh b/src/testsuite/start-server.sh index 3d19ffb5..599bf3ad 100755 --- a/src/testsuite/start-server.sh +++ b/src/testsuite/start-server.sh @@ -1,10 +1,11 @@ #!/bin/sh # ngIRCd Test Suite -[ -z "$srcdir" ] && srcdir=`dirname $0` +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u # read in functions -. ${srcdir}/functions.inc +. "${srcdir}/functions.inc" if [ -n "$1" ]; then id="$1"; shift @@ -19,36 +20,34 @@ echo_n "starting server ${id} ..." # check weather getpid.sh returns valid PIDs. If not, don't start up the # test-server, because we won't be able to kill it at the end of the test. -./getpid.sh sh > /dev/null 2>&1 +./getpid.sh sh >/dev/null 2>&1 if [ $? -ne 0 ]; then - echo " getpid.sh failed!" - exit 1 + echo " getpid.sh failed!" + exit 1 fi # check if there is a test-server already running ./getpid.sh T-ngircd${id} >/dev/null 2>&1 if [ $? -eq 0 ]; then - echo " failure: test-server ${id} already running!" - exit 1 + echo " failure: test-server ${id} already running!" + exit 1 fi # generate MOTD for test-server -echo "This is an ngIRCd Test Server" > ngircd-test${id}.motd +echo "This is an ngIRCd Test Server" >ngircd-test${id}.motd # glibc memory checking, see malloc(3) MALLOC_CHECK_=3 export MALLOC_CHECK_ # starting up test-server ... -./T-ngircd${id} -n -f ${srcdir}/ngircd-test${id}.conf $* \ +./T-ngircd${id} -n -f "${srcdir}/ngircd-test${id}.conf" "$@" \ >ngircd-test${id}.log 2>&1 & sleep 1 # validate running test-server +r=1 pid=`./getpid.sh T-ngircd${id}` -[ -n "$pid" ] && kill -0 $pid > /dev/null 2>&1; r=$? - +[ -n "$pid" ] && kill -0 $pid >/dev/null 2>&1; r=$? [ $r -eq 0 ] && echo " ok." || echo " failure!" exit $r - -# -eof- diff --git a/src/testsuite/start-server1 b/src/testsuite/start-server1 index 7fb4e94c..ced37c47 100755 --- a/src/testsuite/start-server1 +++ b/src/testsuite/start-server1 @@ -1,7 +1,6 @@ #!/bin/sh # ngIRCd Test Suite -[ -z "$srcdir" ] && srcdir=`dirname $0` -${srcdir}/start-server.sh 1 - -# -eof- +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u +"${srcdir}/start-server.sh" 1 diff --git a/src/testsuite/start-server2 b/src/testsuite/start-server2 index 2c4ffa6b..ca05bcf6 100755 --- a/src/testsuite/start-server2 +++ b/src/testsuite/start-server2 @@ -1,7 +1,6 @@ #!/bin/sh # ngIRCd Test Suite -[ -z "$srcdir" ] && srcdir=`dirname $0` -${srcdir}/start-server.sh 2 - -# -eof- +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u +"${srcdir}/start-server.sh" 2 diff --git a/src/testsuite/start-server3 b/src/testsuite/start-server3 index b9043f43..167040b5 100755 --- a/src/testsuite/start-server3 +++ b/src/testsuite/start-server3 @@ -1,6 +1,6 @@ #!/bin/sh # ngIRCd Test Suite -[ -z "$srcdir" ] && srcdir=`dirname $0` -${srcdir}/start-server.sh 3 -# -eof- +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u +"${srcdir}/start-server.sh" 3 diff --git a/src/testsuite/stop-server.sh b/src/testsuite/stop-server.sh index c531137e..c5a9486c 100755 --- a/src/testsuite/stop-server.sh +++ b/src/testsuite/stop-server.sh @@ -1,10 +1,11 @@ #!/bin/sh # ngIRCd Test Suite -[ -z "$srcdir" ] && srcdir=`dirname $0` +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u # read in functions -. ${srcdir}/functions.inc +. "${srcdir}/functions.inc" if [ -n "$1" ]; then id="$1"; shift @@ -17,21 +18,19 @@ echo_n "stopping server ${id} ..." # stop test-server ... pid=`./getpid.sh T-ngircd${id}` if [ -z "$pid" ]; then - echo " failure: no running server found!?" - exit 1 + echo " failure: no running server found!?" + exit 1 fi -kill $pid > /dev/null 2>&1 || exit 1 +kill $pid >/dev/null 2>&1 || exit 1 # waiting ... for i in 1 2 3 4 5; do - kill -0 $pid > /dev/null 2>&1; r=$? - if [ $r -ne 0 ]; then - echo " ok". - exit 0 - fi - sleep 1 + kill -0 $pid >/dev/null 2>&1; r=$? + if [ $r -ne 0 ]; then + echo " ok". + exit 0 + fi + sleep 1 done echo " failure: server ${id} still running!?" exit 1 - -# -eof- diff --git a/src/testsuite/stop-server1 b/src/testsuite/stop-server1 index 9b562076..aad0c851 100755 --- a/src/testsuite/stop-server1 +++ b/src/testsuite/stop-server1 @@ -1,7 +1,6 @@ #!/bin/sh # ngIRCd Test Suite -[ -z "$srcdir" ] && srcdir=`dirname $0` -${srcdir}/stop-server.sh 1 - -# -eof- +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u +"${srcdir}/stop-server.sh" 1 diff --git a/src/testsuite/stop-server2 b/src/testsuite/stop-server2 index 304d1749..104a096c 100755 --- a/src/testsuite/stop-server2 +++ b/src/testsuite/stop-server2 @@ -1,7 +1,6 @@ #!/bin/sh # ngIRCd Test Suite -[ -z "$srcdir" ] && srcdir=`dirname $0` -${srcdir}/stop-server.sh 2 - -# -eof- +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u +"${srcdir}/stop-server.sh" 2 diff --git a/src/testsuite/stop-server3 b/src/testsuite/stop-server3 index d7487693..a9515ed0 100755 --- a/src/testsuite/stop-server3 +++ b/src/testsuite/stop-server3 @@ -1,7 +1,6 @@ #!/bin/sh # ngIRCd Test Suite -[ -z "$srcdir" ] && srcdir=`dirname $0` -${srcdir}/stop-server.sh 3 - -# -eof- +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u +"${srcdir}/stop-server.sh" 3 diff --git a/src/testsuite/stress-server.sh b/src/testsuite/stress-server.sh index 1e823253..a9ef5076 100755 --- a/src/testsuite/stress-server.sh +++ b/src/testsuite/stress-server.sh @@ -1,7 +1,7 @@ #!/bin/sh # # ngIRCd Test Suite -# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors. +# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -10,79 +10,79 @@ # Please read the file COPYING, README and AUTHORS for more information. # -# detect source directory -[ -z "$srcdir" ] && srcdir=`dirname $0` - # parse command line -[ "$1" -gt 0 ] 2> /dev/null && CLIENTS="$1" || CLIENTS=5 -[ "$2" -gt 0 ] 2> /dev/null && MAX="$2" || MAX=-1 +[ "$1" -gt 0 ] 2>/dev/null && CLIENTS="$1" || CLIENTS=5 +[ "$2" -gt 0 ] 2>/dev/null && MAX="$2" || MAX=-1 + +# detect source directory +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u # get our name -name=`basename $0` +name=`basename "$0"` # create directories [ -d logs ] || mkdir logs [ -d tests ] || mkdir tests # test for required external tools -type expect > /dev/null 2>&1 +type expect >/dev/null 2>&1 if [ $? -ne 0 ]; then - echo "${name}: \"expect\" not found."; exit 77 + echo "${name}: \"expect\" not found." + exit 77 fi -type telnet > /dev/null 2>&1 +type telnet >/dev/null 2>&1 if [ $? -ne 0 ]; then - echo "${name}: \"telnet\" not found."; exit 77 + echo "${name}: \"telnet\" not found."; + exit 77 fi # hello world! :-) echo "stressing server with $CLIENTS clients (be patient!):" # read in functions -. ${srcdir}/functions.inc +. "${srcdir}/functions.inc" # create scripts for expect(1) no=0 while [ ${no} -lt $CLIENTS ]; do - cat ${srcdir}/stress-A.e > tests/${no}.e - echo "send \"nick test${no}\\r\"" >> tests/${no}.e - cat ${srcdir}/stress-B.e >> tests/${no}.e - no=`expr ${no} + 1` + cat "${srcdir}/stress-A.e" >tests/${no}.e + echo "send \"nick test${no}\\r\"" >>tests/${no}.e + cat "${srcdir}/stress-B.e" >>tests/${no}.e + no=`expr ${no} + 1` done # run first script and check if it succeeds echo_n "checking stress script ..." -expect tests/0.e > logs/stress-0.log 2> /dev/null +expect tests/0.e >logs/stress-0.log 2>/dev/null if [ $? -ne 0 ]; then - echo " failure!" - exit 1 + echo " failure!" + exit 1 else - echo " ok." + echo " ok." fi no=0 while [ ${no} -lt $CLIENTS ]; do - expect tests/${no}.e > logs/stress-${no}.log 2> /dev/null & + expect tests/${no}.e >logs/stress-${no}.log 2>/dev/null & - no=`expr ${no} + 1` - echo "started client $no/$CLIENTS." + no=`expr ${no} + 1` + echo "started client $no/$CLIENTS." - [ $MAX -gt 0 ] && $srcdir/wait-tests.sh $MAX + [ $MAX -gt 0 ] && "$srcdir/wait-tests.sh" $MAX done echo_n "waiting for clients to complete: ." touch logs/check-idle.log while true; do - expect ${srcdir}/check-idle.e >> logs/check-idle.log; res=$? - echo "====================" >> logs/check-idle.log - [ $res -ne 99 ] && break + expect "${srcdir}/check-idle.e" >>logs/check-idle.log; res=$? + echo "====================" >>logs/check-idle.log + [ $res -ne 99 ] && break - # there are still clients connected. Wait ... - sleep 3 - echo_n "." + # there are still clients connected. Wait ... + sleep 3 + echo_n "." done [ $res -eq 0 ] && echo " ok." || echo " failure!" - exit $res - -# -eof- diff --git a/src/testsuite/test-loop.sh b/src/testsuite/test-loop.sh index 68c87d28..18fe9a55 100755 --- a/src/testsuite/test-loop.sh +++ b/src/testsuite/test-loop.sh @@ -1,7 +1,7 @@ #!/bin/sh # # ngIRCd Test Suite -# Copyright (c)2002-2004 by Alexander Barton (alex@barton.de) +# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -9,29 +9,26 @@ # (at your option) any later version. # Please read the file COPYING, README and AUTHORS for more information. # -# $Id: test-loop.sh,v 1.2 2004/09/04 19:14:46 alex Exp $ -# - -# detect source directory -[ -z "$srcdir" ] && srcdir=`dirname $0` # parse command line -[ "$1" -gt 0 ] 2> /dev/null && LOOPS="$1" || LOOPS=5 -[ "$2" -gt 0 ] 2> /dev/null && WAIT="$2" || WAIT=5 +[ "$1" -gt 0 ] 2>/dev/null && LOOPS="$1" || LOOPS=5 +[ "$2" -gt 0 ] 2>/dev/null && WAIT="$2" || WAIT=5 + +# detect source directory +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u loop=0 while [ ${loop} -lt $LOOPS ]; do - loop=`expr ${loop} + 1` - echo " loop $loop/$LOOPS starting:" - for s in $srcdir/*-test; do - sh $s; r=$? - [ $r -ne 0 ] && exit $r - sleep 1 - done - if [ ${loop} -lt $LOOPS ]; then - echo " waiting $WAIT seconds ..." - sleep $WAIT - fi + loop=`expr ${loop} + 1` + echo " loop $loop/$LOOPS starting:" + for s in "$srcdir"/*-test; do + sh "$s"; r=$? + [ $r -ne 0 ] && exit $r + sleep 1 + done + if [ ${loop} -lt $LOOPS ]; then + echo " waiting $WAIT seconds ..." + sleep $WAIT + fi done - -# -eof- diff --git a/src/testsuite/tests.sh b/src/testsuite/tests.sh index 7af8c593..3e46c187 100755 --- a/src/testsuite/tests.sh +++ b/src/testsuite/tests.sh @@ -11,40 +11,44 @@ # # detect source directory -[ -z "$srcdir" ] && srcdir=`dirname $0` +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u -name=`basename $0` +name=`basename "$0"` test=`echo ${name} | cut -d '.' -f 1` [ -d logs ] || mkdir logs if [ ! -r "$test" ]; then - echo "$test: test not found" >>tests-skipped.lst - echo "${name}: test \"$test\" not found!"; exit 77 - exit 1 + echo "$test: test not found" >>tests-skipped.lst + echo "${name}: test \"$test\" not found!"; exit 77 + exit 1 fi # read in functions -. ${srcdir}/functions.inc +. "${srcdir}/functions.inc" -type expect > /dev/null 2>&1 +type expect >/dev/null 2>&1 if [ $? -ne 0 ]; then - echo "$test: \"expect\" not found" >>tests-skipped.lst - echo "${name}: \"expect\" not found."; exit 77 + echo "$test: \"expect\" not found" >>tests-skipped.lst + echo "${name}: \"expect\" not found." + exit 77 fi -type telnet > /dev/null 2>&1 +type telnet >/dev/null 2>&1 if [ $? -ne 0 ]; then - echo "$test: \"telnet\" not found" >>tests-skipped.lst - echo "${name}: \"telnet\" not found."; exit 77 + echo "$test: \"telnet\" not found" >>tests-skipped.lst + echo "${name}: \"telnet\" not found." + exit 77 fi case "$test" in - *ssl*) - type openssl > /dev/null 2>&1 - if [ $? -ne 0 ]; then - echo "$test: \"openssl\" not found" >>tests-skipped.lst - echo "${name}: \"openssl\" not found."; exit 77 - fi - ;; + *ssl*) + type openssl >/dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "$test: \"openssl\" not found" >>tests-skipped.lst + echo "${name}: \"openssl\" not found." + exit 77 + fi + ;; esac # prepare expect script @@ -58,10 +62,8 @@ if test -t 1 2>/dev/null; then fi echo_n "running ${test} ..." -expect "$e_exec" > logs/${test}.log; r=$? +expect "$e_exec" >logs/${test}.log; r=$? [ $r -eq 0 ] && echo " ok." || echo " failure!" rm -f "$e_tmp" exit $r - -# -eof- diff --git a/src/testsuite/wait-tests.sh b/src/testsuite/wait-tests.sh index fb3be185..b6fa08f5 100755 --- a/src/testsuite/wait-tests.sh +++ b/src/testsuite/wait-tests.sh @@ -1,7 +1,7 @@ #!/bin/sh # # ngIRCd Test Suite -# Copyright (c)2002-2004 by Alexander Barton (alex@barton.de) +# Copyright (c)2001-2024 Alexander Barton (alex@barton.de) and Contributors. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -9,39 +9,36 @@ # (at your option) any later version. # Please read the file COPYING, README and AUTHORS for more information. # -# $Id: wait-tests.sh,v 1.5 2005/08/12 21:34:19 alex Exp $ -# -[ "$1" -gt 0 ] 2> /dev/null && MAX="$1" || MAX=5 +[ "$1" -gt 0 ] 2>/dev/null && MAX="$1" || MAX=5 # detect source directory -[ -z "$srcdir" ] && srcdir=`dirname $0` +[ -z "$srcdir" ] && srcdir=`dirname "$0"` +set -u PS_FLAGS="-f" ps $PS_FLAGS >/dev/null 2>&1 [ $? -ne 0 ] && PS_FLAGS="a" # read in functions -. ${srcdir}/functions.inc +. "${srcdir}/functions.inc" msg=0 while true; do - count=`ps $PS_FLAGS | grep "expect " | wc -l` - count=`expr $count - 1` + count=`ps $PS_FLAGS | grep "expect " | wc -l` + count=`expr $count - 1` - [ $count -le $MAX ] && break + [ $count -le $MAX ] && break - if [ $msg -lt 1 ]; then - echo_n " waiting for processes to settle: " - msg=1 - fi + if [ $msg -lt 1 ]; then + echo_n " waiting for processes to settle: " + msg=1 + fi - # there are still clients connected. Wait ... - echo_n "$count>$MAX " - sleep 1 + # there are still clients connected. Wait ... + echo_n "$count>$MAX " + sleep 1 done [ $msg -gt 0 ] && echo "done: $count" exit 0 - -# -eof-