mirror of
https://github.com/troglobit/finit.git
synced 2026-09-30 21:13:01 +07:00
test: extend start-stop-sysv to verify reload:script support
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
@@ -6,46 +6,54 @@ PIDFILE="/var/run/service.pid"
|
||||
|
||||
start()
|
||||
{
|
||||
printf 'Starting %s: ' "$DAEMON"
|
||||
start-stop-daemon -S -b -q -p "$PIDFILE" -x "$DAEMON"
|
||||
printf 'Starting %s: ' "$DAEMON"
|
||||
start-stop-daemon -S -b -q -p "$PIDFILE" -x "$DAEMON"
|
||||
|
||||
status=$?
|
||||
if [ "$status" -eq 0 ]; then
|
||||
echo "OK"
|
||||
else
|
||||
echo "FAIL"
|
||||
fi
|
||||
status=$?
|
||||
if [ "$status" -eq 0 ]; then
|
||||
echo "OK"
|
||||
else
|
||||
echo "FAIL"
|
||||
fi
|
||||
|
||||
return "$status"
|
||||
return "$status"
|
||||
}
|
||||
|
||||
stop()
|
||||
{
|
||||
printf 'Stopping %s: ' "$DAEMON"
|
||||
start-stop-daemon -K -q -p "$PIDFILE"
|
||||
printf 'Stopping %s: ' "$DAEMON"
|
||||
start-stop-daemon -K -q -p "$PIDFILE"
|
||||
|
||||
status=$?
|
||||
if [ "$status" -eq 0 ]; then
|
||||
echo "OK"
|
||||
else
|
||||
echo "FAIL"
|
||||
fi
|
||||
status=$?
|
||||
if [ "$status" -eq 0 ]; then
|
||||
echo "OK"
|
||||
else
|
||||
echo "FAIL"
|
||||
fi
|
||||
|
||||
return "$status"
|
||||
return "$status"
|
||||
}
|
||||
|
||||
reload()
|
||||
{
|
||||
if [ -f "$PIDFILE" ]; then
|
||||
PID=$(cat "$PIDFILE")
|
||||
kill -HUP "$PID"
|
||||
fi
|
||||
}
|
||||
|
||||
restart()
|
||||
{
|
||||
stop
|
||||
sleep 1
|
||||
start
|
||||
stop
|
||||
sleep 1
|
||||
start
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start|stop|restart)
|
||||
"$1"
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart}, got $0 $1"
|
||||
exit 1
|
||||
start|stop|reload|restart)
|
||||
"$1"
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|reload|restart}, got $0 $1"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
@@ -2,23 +2,33 @@
|
||||
|
||||
cleanup()
|
||||
{
|
||||
echo "Got signal, stopping ..."
|
||||
rm -f /run/service.pid
|
||||
exit 0
|
||||
echo "Got signal, stopping ..."
|
||||
rm -f /run/service.pid
|
||||
exit 0
|
||||
}
|
||||
|
||||
reload()
|
||||
{
|
||||
echo
|
||||
echo "Ready."
|
||||
echo
|
||||
sleep 1
|
||||
echo $$ > /run/service.pid
|
||||
}
|
||||
|
||||
# Hook SIGUSR1 and dump trace to file system
|
||||
# shellcheck disable=SC2172
|
||||
trap 'echo USR1 > /tmp/usr1.log' USR1
|
||||
trap reload HUP
|
||||
trap cleanup INT
|
||||
trap cleanup TERM
|
||||
trap cleanup QUIT
|
||||
trap cleanup EXIT
|
||||
|
||||
echo $$ > /run/service.pid
|
||||
reload
|
||||
|
||||
# sleep may exit on known signal, so
|
||||
# we cannot use 'set -e'
|
||||
while true; do
|
||||
sleep 1
|
||||
sleep 1
|
||||
done
|
||||
|
||||
+22
-10
@@ -1,38 +1,50 @@
|
||||
#!/bin/sh
|
||||
# shellcheck disable=2034 source=/dev/null
|
||||
|
||||
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")
|
||||
#DEBUG=1
|
||||
|
||||
test_teardown()
|
||||
{
|
||||
say "Test done $(date)"
|
||||
|
||||
say "Running test teardown."
|
||||
run "rm -f $FINIT_CONF"
|
||||
sep "Test done $(date)"
|
||||
assert "Running test teardown." "run rm -f $FINIT_RCSD/service.conf"
|
||||
}
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
. "$TEST_DIR/lib/setup.sh"
|
||||
|
||||
say "Test start $(date)"
|
||||
sep "Test start $(date)"
|
||||
|
||||
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"
|
||||
|
||||
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"
|
||||
|
||||
retry 'assert_num_children 0 service.sh'
|
||||
|
||||
say 'Start the sysv service again'
|
||||
sep 'Start the sysv service again'
|
||||
run "initctl start 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
|
||||
|
||||
Reference in New Issue
Block a user