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()
|
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
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user