mirror of
https://github.com/troglobit/finit.git
synced 2026-10-16 10:39:35 +00:00
To reset the crash counter of the 'serv' daemon we need to remove it from /etc/finit.conf (and reload) between each test phase. The repeated test phases can now be dropped, since the lack of reset was the root cause for it failing sometimes in extended runs. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
96 lines
2.3 KiB
Bash
Executable File
96 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# Verify service readiness notification
|
|
|
|
set -eu
|
|
#set -x
|
|
|
|
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"
|
|
}
|
|
|
|
test_one()
|
|
{
|
|
type=$1
|
|
service=$2
|
|
|
|
num=$(texec sh -c "find /proc/1/fd |wc -l")
|
|
say "finit: number of open file descriptors before test: $num"
|
|
|
|
say "Add $type stanza to $FINIT_CONF"
|
|
texec sh -c "echo $service > $FINIT_CONF"
|
|
|
|
say 'Reload Finit'
|
|
texec sh -c "initctl reload"
|
|
|
|
sleep 1
|
|
texec sh -c "initctl status serv"
|
|
assert_status "serv" "running"
|
|
|
|
sleep 2
|
|
texec sh -c "initctl cond dump"
|
|
assert_cond "service/serv/ready"
|
|
|
|
say "Verify 'ready' is set after SIGHUP ..."
|
|
texec sh -c "initctl reload serv"
|
|
sleep 2
|
|
assert_status "serv" "running"
|
|
assert_cond "service/serv/ready"
|
|
|
|
say "Verify 'ready' is reasserted if service crashes and is restarted ..."
|
|
texec sh -c "initctl signal serv 9"
|
|
sleep 2
|
|
assert_status "serv" "running"
|
|
assert_cond "service/serv/ready"
|
|
|
|
say "Verify 'ready' is reasserted on 'initctl restart serv' ..."
|
|
texec sh -c "initctl restart serv"
|
|
sleep 1
|
|
assert_status "serv" "running"
|
|
assert_cond "service/serv/ready"
|
|
|
|
say "Verify 'ready' is reasserted on 'initctl reload' ..."
|
|
texec sh -c "initctl reload"
|
|
sleep 1
|
|
texec sh -c "initctl; initctl cond dump"
|
|
assert_status "serv" "running"
|
|
assert_cond "service/serv/ready"
|
|
|
|
say "Verify 'ready' is deasserted on stop ..."
|
|
texec sh -c "initctl stop serv"
|
|
sleep 1
|
|
assert_status "serv" "stopped"
|
|
assert_nocond "service/serv/ready"
|
|
|
|
say "Cleaning up after test."
|
|
texec sh -c "rm $FINIT_CONF"
|
|
texec sh -c "initctl reload"
|
|
|
|
# sleep 2
|
|
# num=$(texec sh -c "find /proc/1/fd |wc -l")
|
|
# say "finit: number of open file descriptors after test: $num"
|
|
|
|
}
|
|
|
|
# shellcheck source=/dev/null
|
|
. "$TEST_DIR/tenv/lib.sh"
|
|
|
|
texec sh -c "initctl debug"
|
|
|
|
test_one "native" "service log:stdout serv -np -- pid file readiness"
|
|
test_one "s6" "service log:stdout notify:s6 serv -n -N %n -- s6 readiness"
|
|
test_one "systemd" "service log:stdout notify:systemd serv -n -- systemd readiness"
|
|
|
|
return 0
|