test: extend start-stop-sysv to verify reload:script support

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg
2025-07-06 12:05:58 +02:00
parent 57545e1ab0
commit e49763d834
3 changed files with 72 additions and 42 deletions
+35 -27
View File
@@ -6,46 +6,54 @@ PIDFILE="/var/run/service.pid"
start() start()
{ {
printf 'Starting %s: ' "$DAEMON" printf 'Starting %s: ' "$DAEMON"
start-stop-daemon -S -b -q -p "$PIDFILE" -x "$DAEMON" start-stop-daemon -S -b -q -p "$PIDFILE" -x "$DAEMON"
status=$? status=$?
if [ "$status" -eq 0 ]; then if [ "$status" -eq 0 ]; then
echo "OK" echo "OK"
else else
echo "FAIL" echo "FAIL"
fi fi
return "$status" return "$status"
} }
stop() stop()
{ {
printf 'Stopping %s: ' "$DAEMON" printf 'Stopping %s: ' "$DAEMON"
start-stop-daemon -K -q -p "$PIDFILE" start-stop-daemon -K -q -p "$PIDFILE"
status=$? status=$?
if [ "$status" -eq 0 ]; then if [ "$status" -eq 0 ]; then
echo "OK" echo "OK"
else else
echo "FAIL" echo "FAIL"
fi fi
return "$status" return "$status"
}
reload()
{
if [ -f "$PIDFILE" ]; then
PID=$(cat "$PIDFILE")
kill -HUP "$PID"
fi
} }
restart() restart()
{ {
stop stop
sleep 1 sleep 1
start start
} }
case "$1" in case "$1" in
start|stop|restart) start|stop|reload|restart)
"$1" "$1"
;; ;;
*) *)
echo "Usage: $0 {start|stop|restart}, got $0 $1" echo "Usage: $0 {start|stop|reload|restart}, got $0 $1"
exit 1 exit 1
esac esac
+15 -5
View File
@@ -2,23 +2,33 @@
cleanup() cleanup()
{ {
echo "Got signal, stopping ..." echo "Got signal, stopping ..."
rm -f /run/service.pid rm -f /run/service.pid
exit 0 exit 0
}
reload()
{
echo
echo "Ready."
echo
sleep 1
echo $$ > /run/service.pid
} }
# Hook SIGUSR1 and dump trace to file system # Hook SIGUSR1 and dump trace to file system
# shellcheck disable=SC2172 # shellcheck disable=SC2172
trap 'echo USR1 > /tmp/usr1.log' USR1 trap 'echo USR1 > /tmp/usr1.log' USR1
trap reload HUP
trap cleanup INT trap cleanup INT
trap cleanup TERM trap cleanup TERM
trap cleanup QUIT trap cleanup QUIT
trap cleanup EXIT trap cleanup EXIT
echo $$ > /run/service.pid reload
# sleep may exit on known signal, so # sleep may exit on known signal, so
# we cannot use 'set -e' # we cannot use 'set -e'
while true; do while true; do
sleep 1 sleep 1
done done
+22 -10
View File
@@ -1,38 +1,50 @@
#!/bin/sh #!/bin/sh
# shellcheck disable=2034 source=/dev/null
set -eu set -eu
STANZA="sysv [2345] pid:!/run/service.pid name:service.sh log:stdout \
reload:'/etc/init.d/S01-service.sh reload' \
/etc/init.d/S01-service.sh -- SysV test service"
TEST_DIR=$(dirname "$0") TEST_DIR=$(dirname "$0")
#DEBUG=1
test_teardown() test_teardown()
{ {
say "Test done $(date)" sep "Test done $(date)"
assert "Running test teardown." "run rm -f $FINIT_RCSD/service.conf"
say "Running test teardown."
run "rm -f $FINIT_CONF"
} }
# shellcheck source=/dev/null
. "$TEST_DIR/lib/setup.sh" . "$TEST_DIR/lib/setup.sh"
say "Test start $(date)" sep "Test start $(date)"
say "Add sysv stanza in $FINIT_CONF" say "Add sysv stanza in $FINIT_CONF"
run "echo 'sysv [2345] pid:!/run/service.pid name:service.sh /etc/init.d/S01-service.sh -- SysV test service' > $FINIT_CONF" run "echo \"$STANZA\" > $FINIT_RCSD/service.conf"
say 'Reload Finit' say "Reload Finit"
run "initctl reload" run "initctl reload"
retry 'assert_num_children 1 service.sh' retry 'assert_num_children 1 service.sh'
retry 'assert_cond service/service.sh/ready'
say 'Stop the sysv service' sep 'Stop the sysv service'
run "initctl stop service.sh" run "initctl stop service.sh"
retry 'assert_num_children 0 service.sh' retry 'assert_num_children 0 service.sh'
say 'Start the sysv service again' sep 'Start the sysv service again'
run "initctl start service.sh" run "initctl start service.sh"
retry 'assert_num_children 1 service.sh' retry 'assert_num_children 1 service.sh'
retry 'assert_cond service/service.sh/ready'
sep 'Touch the sysv service'
run "initctl touch service.conf"
run "initctl reload"
#run "initctl cond dump"
retry 'assert_num_children 1 service.sh'
retry 'assert_cond service/service.sh/ready'
return 0 return 0