mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 00:14:32 +09:00
TEST-80-NOTIFYACCESS: add test case for #37515
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
[Service]
|
||||
Type=notify-reload
|
||||
TimeoutStartSec=40
|
||||
ExecStart=/usr/lib/systemd/tests/testdata/TEST-80-NOTIFYACCESS.units/reload-timeout.sh
|
||||
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
# shellcheck disable=SC2016
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
COUNTER=0
|
||||
|
||||
sync_in() {
|
||||
read -r x < /tmp/syncfifo2
|
||||
test "$x" = "$1"
|
||||
}
|
||||
|
||||
wait_for_signal() {
|
||||
sleep infinity &
|
||||
wait "$!" || :
|
||||
}
|
||||
|
||||
sighup_handler() {
|
||||
echo "hup$(( ++COUNTER ))" > /tmp/syncfifo1
|
||||
}
|
||||
|
||||
trap sighup_handler SIGHUP
|
||||
|
||||
export SYSTEMD_LOG_LEVEL=debug
|
||||
|
||||
systemd-notify --ready
|
||||
|
||||
wait_for_signal
|
||||
systemd-notify --reloading
|
||||
|
||||
wait_for_signal
|
||||
systemd-notify --reloading
|
||||
sync_in ready
|
||||
systemd-notify --ready
|
||||
|
||||
wait_for_signal
|
||||
systemd-notify --reloading --ready
|
||||
|
||||
exec sleep infinity
|
||||
@@ -62,6 +62,33 @@ assert_eq "$(systemctl show notify.service -p NotifyAccess --value)" "none"
|
||||
systemctl stop notify.service
|
||||
assert_eq "$(systemctl show notify.service -p NotifyAccess --value)" "all"
|
||||
|
||||
# Timeout of READY=1 for Type=notify-reload services (issue #37515)
|
||||
|
||||
systemctl start reload-timeout.service
|
||||
|
||||
systemctl reload --no-block reload-timeout.service
|
||||
timeout 10 bash -c 'until [[ $(systemctl show reload-timeout.service -P SubState) == "reload-signal" ]]; do sleep .5; done'
|
||||
sync_in hup1
|
||||
timeout 10 bash -c 'until [[ $(systemctl show reload-timeout.service -P SubState) == "reload-notify" ]]; do sleep .5; done'
|
||||
timeout 80 bash -c 'until [[ $(systemctl show reload-timeout.service -P SubState) == "running" ]]; do sleep 5; done'
|
||||
assert_eq "$(systemctl show reload-timeout.service -P ReloadResult)" "timeout"
|
||||
|
||||
systemctl reload --no-block reload-timeout.service
|
||||
timeout 10 bash -c 'until [[ $(systemctl show reload-timeout.service -P SubState) == "reload-signal" ]]; do sleep .5; done'
|
||||
assert_eq "$(systemctl show reload-timeout.service -P ReloadResult)" "success"
|
||||
sync_in hup2
|
||||
timeout 10 bash -c 'until [[ $(systemctl show reload-timeout.service -P SubState) == "reload-notify" ]]; do sleep .5; done'
|
||||
sync_out ready
|
||||
timeout 40 bash -c 'until [[ $(systemctl show reload-timeout.service -P SubState) == "running" ]]; do sleep 1; done'
|
||||
assert_eq "$(systemctl show reload-timeout.service -P ReloadResult)" "success"
|
||||
|
||||
systemctl reload --no-block reload-timeout.service
|
||||
sync_in hup3
|
||||
timeout 40 bash -c 'until [[ $(systemctl show reload-timeout.service -P SubState) == "running" ]]; do sleep 1; done'
|
||||
assert_eq "$(systemctl show reload-timeout.service -P ReloadResult)" "success"
|
||||
|
||||
systemctl stop reload-timeout.service
|
||||
|
||||
rm /tmp/syncfifo1 /tmp/syncfifo2
|
||||
|
||||
# Explicitly test busctl's BUSERROR= reporting and systemctl status should show it
|
||||
|
||||
Reference in New Issue
Block a user