test: Extend depserv test with per-service reload, fix slay race

Verify that 'initctl reload foo' properly triggers dependent
services by checking that bar gets a new PID after the reload.
Also change the second test case from service/foo/running to
service/foo/ready which is the actual condition set by pidfile.so.

Fix a race in slay where the target process could exit between
the PID lookup and kill -9, causing spurious test failures in
tight kill loops (e.g., start-kill-service.sh).

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg committed 2026-02-10 16:00:57 +01:00
1 parent f0914f6d32
commit 0b182c063e
3 files changed
+18 -3

No files matched your search

+11 -2
View File
@@ -5,6 +5,7 @@
# - bar must not start until foo is ready
# - bar must be stopped when foo goes down
# - bar must be restarted when foo is restarted
# - bar must be restarted when foo is reloaded (per-service reload)
#
# Regression test bug #314, that bar is not in a restart loop when foo
# is stopped. Also, verify that changing between runlevels, where foo
@@ -49,6 +50,13 @@ test_one()
run "initctl status"
assert "bar is restarted" "$(texec initctl |grep bar | awk '{print $1;}')" != "$pid"
say "Verify bar is restarted when foo is reloaded (per-service) ..."
retry 'assert_status "bar" "running"' 5 1
pid=$(texec initctl |grep bar | awk '{print $1;}')
run "initctl reload foo"
retry 'assert_status "bar" "running"' 5 1
assert "bar is restarted on reload" "$(texec initctl |grep bar | awk '{print $1;}')" != "$pid"
# Wait for spice to be stolen by the Harkonnen
sleep 3
# bar should now have detected the loss of spice and be in restart
@@ -61,8 +69,9 @@ test_one()
assert_status "bar" "waiting"
}
run "initctl debug"
sep
test_one "pid/foo"
sep
run "initctl debug"
test_one "service/foo/running"
#run "initctl debug"
test_one "service/foo/ready"