test: new regression test for issue #351

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg
2023-03-21 11:24:17 +01:00
parent bdaf3370d4
commit 13dddb6912
4 changed files with 73 additions and 0 deletions
+3
View File
@@ -2,6 +2,7 @@ SUBDIRS = lib src
EXTRA_DIST = skel/bin/busybox-x86_64.sha256 skel/sbin/service.sh skel/etc/env \
skel/bin/pre.sh skel/bin/post.sh skel/bin/ready.sh skel/bin/slay \
skel/sbin/fail.sh \
skel/cdrom/.empty skel/dev/shm/.empty skel/dev/pts/.empty \
skel/etc/inittab skel/etc/hostname skel/etc/fstab \
skel/etc/init.d/rcS skel/etc/init.d/rcK skel/tmp/.empty \
@@ -34,6 +35,7 @@ EXTRA_DIST += pre-post-serv.sh
EXTRA_DIST += ready-serv.sh
EXTRA_DIST += restart-self.sh
EXTRA_DIST += runlevel.sh
EXTRA_DIST += run-restart-forever.sh
EXTRA_DIST += start-stop-service.sh
EXTRA_DIST += start-stop-service-sub-config.sh
EXTRA_DIST += start-kill-service.sh
@@ -71,6 +73,7 @@ TESTS += pre-post-serv.sh
TESTS += ready-serv.sh
TESTS += restart-self.sh
TESTS += runlevel.sh
TESTS += run-restart-forever.sh
TESTS += start-stop-service.sh
TESTS += start-stop-service-sub-config.sh
TESTS += start-kill-service.sh
+5
View File
@@ -57,6 +57,11 @@ assert_restarts()
assert "Finit has registered restarts" "$(texec initctl status "$2" | awk '/Restarts/{print $3;}')" -ge "$1"
}
assert_restart_cnt()
{
assert "Finit restart cnt $1" "$(texec initctl status "$2" | awk '/Restarts/{print $4;}')" = "($1)"
}
assert_norestart()
{
assert "Service $1 is stable, no restarts" "$(texec initctl status "$1" | awk '/Restarts/{print $3;}')" -eq "0"
+60
View File
@@ -0,0 +1,60 @@
#!/bin/sh
# Regression test for issue #351 - verify that a dirty run/task in
# runlevel S is not restarted forever jus because it exits with a
# non-zero error code.
set -eu
#export DEBUG=true
TEST_DIR=$(dirname "$0")
test_setup()
{
say "Test start $(date)"
run "mkdir -p /etc/default"
export TEST_TIMEOUT=5
}
test_teardown()
{
say "Test done $(date)"
say "Running test teardown."
run "rm -f $FINIT_CONF"
}
check_restarts()
{
assert "serv restarts" "$(texec cat "$1" | awk '{print $1;}')" -ge "$2"
}
# shellcheck source=/dev/null
. "$TEST_DIR/lib/setup.sh"
test_one()
{
num=$1
say "Reloading Finit ..."
run "initctl reload"
# run "initctl status fail.sh"
say "Reloading Finit ..."
run "initctl reload"
# run "initctl status fail.sh"
assert_restart_cnt "$num/10" fail.sh
}
sep
say "Add stanza to $FINIT_CONF"
run "echo 'run fail.sh -- Failure' > $FINIT_RCSD/fail.conf"
run "echo 'run initctl touch fail' > $FINIT_RCSD/touch.conf"
test_one 2
sep
say "Changing runlevel ..."
run "initctl runlevel 3"
test_one 4
return 0
+5
View File
@@ -0,0 +1,5 @@
#!/bin/sh
# This run/task always fails, it is used by the run-restart-forever test
echo "Aiiee, I've failed!" >&2
exit 1