mirror of
https://github.com/troglobit/finit.git
synced 2026-10-08 16:34:45 +07:00
test: new test, verify sysv services are restarted properly
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
@@ -6,6 +6,7 @@ EXTRA_DIST = skel/bin/busybox-x86_64.md5 skel/sbin/service.sh skel/bin/slay \
|
||||
skel/etc/inittab skel/etc/hostname skel/etc/fstab \
|
||||
skel/etc/init.d/rcS skel/etc/init.d/rcK skel/tmp/.empty \
|
||||
skel/etc/finit.d/.empty skel/etc/init.d/S01-service.sh \
|
||||
skel/etc/init.d/S02-serv.sh \
|
||||
skel/proc/.empty skel/root/.empty skel/run/.empty \
|
||||
skel/sbin/chrootsetup.sh skel/srv/.empty skel/sys/.empty \
|
||||
skel/usr/bin/.empty skel/usr/lib/.empty skel/usr/sbin/.empty \
|
||||
@@ -20,6 +21,7 @@ EXTRA_DIST += setup-root.sh
|
||||
EXTRA_DIST += add-remove-dynamic-service.sh
|
||||
EXTRA_DIST += add-remove-dynamic-service-sub-config.sh
|
||||
EXTRA_DIST += cond-start-task.sh
|
||||
EXTRA_DIST += failing-sysv.sh
|
||||
EXTRA_DIST += global-envs.sh
|
||||
EXTRA_DIST += pre-post-serv.sh
|
||||
EXTRA_DIST += start-stop-service.sh
|
||||
@@ -46,6 +48,7 @@ TESTS += setup-root.sh
|
||||
TESTS += add-remove-dynamic-service.sh
|
||||
TESTS += add-remove-dynamic-service-sub-config.sh
|
||||
TESTS += cond-start-task.sh
|
||||
TESTS += failing-sysv.sh
|
||||
TESTS += global-envs.sh
|
||||
TESTS += pre-post-serv.sh
|
||||
TESTS += start-stop-service.sh
|
||||
|
||||
Executable
+47
@@ -0,0 +1,47 @@
|
||||
#!/bin/sh
|
||||
# Verify what happesn when sysv scripts start services that keep
|
||||
# crashing -- hint: crashing sysv services should be detected by
|
||||
# Finit just like regular services.
|
||||
set -eu
|
||||
|
||||
TEST_DIR=$(dirname "$0")
|
||||
|
||||
test_setup()
|
||||
{
|
||||
say "Test start $(date)"
|
||||
texec sh -c "mkdir -p /etc/default"
|
||||
}
|
||||
|
||||
test_teardown()
|
||||
{
|
||||
say "Test done $(date)"
|
||||
say "Running test teardown."
|
||||
|
||||
texec rm -f "$FINIT_CONF"
|
||||
}
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
. "$TEST_DIR/tenv/lib.sh"
|
||||
|
||||
# This instructs serv to check the environment, and exit
|
||||
# if it cannot find "xyzzy", thus triggering a premature
|
||||
# exit which Finit should act on to retstart it.
|
||||
say "Setting up bogus /etc/default/serv"
|
||||
texec sh -c "echo 'SERV_ARGS=\"-e xyzzy:lives\"' > /etc/default/serv"
|
||||
|
||||
say "Add sysv stanza to $FINIT_CONF"
|
||||
texec sh -c "echo 'sysv restart:5 [2345] pid:!/run/serv.pid name:serv /etc/init.d/S02-serv.sh -- Crashing SysV service' > $FINIT_CONF"
|
||||
|
||||
#texec sh -c "initctl debug"
|
||||
|
||||
say 'Reload Finit'
|
||||
texec sh -c "initctl reload"
|
||||
#texec sh -c "initctl status serv"
|
||||
#texec sh -c "ps"
|
||||
|
||||
say 'Pending sysv restarts by Finit ...'
|
||||
#texec sh -c "initctl status serv"
|
||||
#texec sh -c "ps"
|
||||
retry 'assert_restarts 5 serv' 20 1
|
||||
|
||||
return 0
|
||||
Executable
+55
@@ -0,0 +1,55 @@
|
||||
#!/bin/sh
|
||||
# SysV style start script for serv
|
||||
|
||||
DAEMON="/sbin/serv"
|
||||
PIDFILE="/var/run/serv.pid"
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
[ -r "/etc/default/serv" ] && . "/etc/default/serv"
|
||||
|
||||
start()
|
||||
{
|
||||
printf 'Starting %s: ' "$DAEMON $SERV_ARGS"
|
||||
# shellcheck disable=SC2086 # we need the word splitting
|
||||
start-stop-daemon -S -b -q -p "$PIDFILE" -x "$DAEMON" -- $SERV_ARGS
|
||||
|
||||
status=$?
|
||||
if [ "$status" -eq 0 ]; then
|
||||
echo "OK"
|
||||
else
|
||||
echo "FAIL"
|
||||
fi
|
||||
|
||||
return "$status"
|
||||
}
|
||||
|
||||
stop()
|
||||
{
|
||||
printf 'Stopping %s: ' "$DAEMON"
|
||||
start-stop-daemon -K -q -p "$PIDFILE"
|
||||
|
||||
status=$?
|
||||
if [ "$status" -eq 0 ]; then
|
||||
echo "OK"
|
||||
else
|
||||
echo "FAIL"
|
||||
fi
|
||||
|
||||
return "$status"
|
||||
}
|
||||
|
||||
restart()
|
||||
{
|
||||
stop
|
||||
sleep 1
|
||||
start
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start|stop|restart)
|
||||
"$1"
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart}, got $0 $1"
|
||||
exit 1
|
||||
esac
|
||||
@@ -37,6 +37,11 @@ assert_new_pid()
|
||||
assert "Finit has registered new PID" "$(texec initctl |grep $1 | awk '{print $1;}')" -eq "$(texec cat $2)"
|
||||
}
|
||||
|
||||
assert_restarts()
|
||||
{
|
||||
assert "Finit has registered restarts" "$(texec initctl status "$2" | awk '/Restarts/{print $3;}')" -ge "$1"
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
assert_pidfile()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user