TEST-03-JOBS: add test case for #34758

This commit is contained in:
Mike Yuan 2024-10-14 22:16:17 +02:00
parent 7a13937007
commit 9b42c58a2b
No known key found for this signature in database
GPG Key ID: 417471C0A40F58B3
6 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,8 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
BindsTo=sleep-infinity-restart-normal.service sleep-infinity-restart-direct.service
After=sleep-infinity-restart-normal.service sleep-infinity-restart-direct.service
[Service]
Type=notify
ExecStart=/usr/lib/systemd/tests/testdata/TEST-03-JOBS.units/counter.sh

View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -eux
COUNTER_FILE=/tmp/test-03-restart-counter
COUNT="$(<"$COUNTER_FILE")"
: $(( COUNT++ ))
echo "$COUNT" >"$COUNTER_FILE"
systemd-notify --ready
sleep infinity

View File

@ -0,0 +1,4 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Service]
Type=oneshot
ExecStart=touch /tmp/test-03-restart-failure-flag

View File

@ -0,0 +1,8 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
OnFailure=restart-on-failure.service
[Service]
ExecStart=/bin/sleep infinity
Restart=on-failure
RestartMode=direct

View File

@ -0,0 +1,8 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
OnFailure=restart-on-failure.service
[Service]
ExecStart=/bin/sleep infinity
Restart=on-failure
RestartMode=normal

View File

@ -156,6 +156,7 @@ assert_rc 3 systemctl --quiet is-active propagatestopto-and-pullin.target
assert_rc 3 systemctl --quiet is-active sleep-infinity-simple.service
# Test restart mode direct
systemctl start succeeds-on-restart-restartdirect.target
assert_rc 0 systemctl --quiet is-active succeeds-on-restart-restartdirect.target
@ -168,6 +169,30 @@ assert_rc 3 systemctl --quiet is-active succeeds-on-restart.target
systemctl start fails-on-restart.target || :
assert_rc 3 systemctl --quiet is-active fails-on-restart.target
COUNTER_FILE=/tmp/test-03-restart-counter
export FAILURE_FLAG_FILE=/tmp/test-03-restart-failure-flag
assert_rc 3 systemctl --quiet is-active sleep-infinity-restart-normal.service
assert_rc 3 systemctl --quiet is-active sleep-infinity-restart-direct.service
assert_rc 3 systemctl --quiet is-active counter.service
echo 0 >"$COUNTER_FILE"
systemctl start counter.service
assert_eq "$(cat "$COUNTER_FILE")" "1"
systemctl --quiet is-active sleep-infinity-restart-normal.service
systemctl --quiet is-active sleep-infinity-restart-direct.service
systemctl --quiet is-active counter.service
systemctl kill --signal=KILL sleep-infinity-restart-direct.service
systemctl --quiet is-active counter.service
assert_eq "$(cat "$COUNTER_FILE")" "1"
[[ ! -f "$FAILURE_FLAG_FILE" ]]
systemctl kill --signal=KILL sleep-infinity-restart-normal.service
timeout 10 bash -c 'while [[ ! -f $FAILURE_FLAG_FILE ]]; do sleep .5; done'
timeout 10 bash -c 'while ! systemctl --quiet is-active counter.service; do sleep .5; done'
assert_eq "$(cat "$COUNTER_FILE")" "2"
# Test shortcutting auto restart
export UNIT_NAME="TEST-03-JOBS-shortcut-restart.service"