mirror of
https://github.com/troglobit/finit.git
synced 2026-10-01 05:22:48 +07:00
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:
+11
-2
@@ -5,6 +5,7 @@
|
|||||||
# - bar must not start until foo is ready
|
# - bar must not start until foo is ready
|
||||||
# - bar must be stopped when foo goes down
|
# - bar must be stopped when foo goes down
|
||||||
# - bar must be restarted when foo is restarted
|
# - 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
|
# Regression test bug #314, that bar is not in a restart loop when foo
|
||||||
# is stopped. Also, verify that changing between runlevels, where foo
|
# is stopped. Also, verify that changing between runlevels, where foo
|
||||||
@@ -49,6 +50,13 @@ test_one()
|
|||||||
run "initctl status"
|
run "initctl status"
|
||||||
assert "bar is restarted" "$(texec initctl |grep bar | awk '{print $1;}')" != "$pid"
|
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
|
# Wait for spice to be stolen by the Harkonnen
|
||||||
sleep 3
|
sleep 3
|
||||||
# bar should now have detected the loss of spice and be in restart
|
# bar should now have detected the loss of spice and be in restart
|
||||||
@@ -61,8 +69,9 @@ test_one()
|
|||||||
assert_status "bar" "waiting"
|
assert_status "bar" "waiting"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run "initctl debug"
|
||||||
sep
|
sep
|
||||||
test_one "pid/foo"
|
test_one "pid/foo"
|
||||||
sep
|
sep
|
||||||
run "initctl debug"
|
#run "initctl debug"
|
||||||
test_one "service/foo/running"
|
test_one "service/foo/ready"
|
||||||
|
|||||||
+1
-1
@@ -52,4 +52,4 @@ done
|
|||||||
echo "$pid" > /tmp/oldpid
|
echo "$pid" > /tmp/oldpid
|
||||||
|
|
||||||
#echo "PID $pid, kill -9 ..."
|
#echo "PID $pid, kill -9 ..."
|
||||||
kill -9 "$pid"
|
kill -9 "$pid" 2>/dev/null || true
|
||||||
|
|||||||
@@ -325,6 +325,12 @@ int main(int argc, char *argv[])
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (melange) {
|
||||||
|
mine(melange);
|
||||||
|
vanish = -2;
|
||||||
|
}
|
||||||
|
|
||||||
if (do_pidfile > 0)
|
if (do_pidfile > 0)
|
||||||
pidfile(NULL);
|
pidfile(NULL);
|
||||||
reloading = 0;
|
reloading = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user