]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
TEST-03-JOBS: add test case for #34758 34768/head
authorMike Yuan <me@yhndnzj.com>
Mon, 14 Oct 2024 20:16:17 +0000 (22:16 +0200)
committerMike Yuan <me@yhndnzj.com>
Sun, 27 Oct 2024 19:04:58 +0000 (20:04 +0100)
test/TEST-03-JOBS/TEST-03-JOBS.units/counter.service [new file with mode: 0644]
test/TEST-03-JOBS/TEST-03-JOBS.units/counter.sh [new file with mode: 0755]
test/TEST-03-JOBS/TEST-03-JOBS.units/restart-on-failure.service [new file with mode: 0644]
test/TEST-03-JOBS/TEST-03-JOBS.units/sleep-infinity-restart-direct.service [new file with mode: 0644]
test/TEST-03-JOBS/TEST-03-JOBS.units/sleep-infinity-restart-normal.service [new file with mode: 0644]
test/units/TEST-03-JOBS.sh

diff --git a/test/TEST-03-JOBS/TEST-03-JOBS.units/counter.service b/test/TEST-03-JOBS/TEST-03-JOBS.units/counter.service
new file mode 100644 (file)
index 0000000..db2e494
--- /dev/null
@@ -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
diff --git a/test/TEST-03-JOBS/TEST-03-JOBS.units/counter.sh b/test/TEST-03-JOBS/TEST-03-JOBS.units/counter.sh
new file mode 100755 (executable)
index 0000000..1d11ca6
--- /dev/null
@@ -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
diff --git a/test/TEST-03-JOBS/TEST-03-JOBS.units/restart-on-failure.service b/test/TEST-03-JOBS/TEST-03-JOBS.units/restart-on-failure.service
new file mode 100644 (file)
index 0000000..1ec1857
--- /dev/null
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Service]
+Type=oneshot
+ExecStart=touch /tmp/test-03-restart-failure-flag
diff --git a/test/TEST-03-JOBS/TEST-03-JOBS.units/sleep-infinity-restart-direct.service b/test/TEST-03-JOBS/TEST-03-JOBS.units/sleep-infinity-restart-direct.service
new file mode 100644 (file)
index 0000000..00316db
--- /dev/null
@@ -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
diff --git a/test/TEST-03-JOBS/TEST-03-JOBS.units/sleep-infinity-restart-normal.service b/test/TEST-03-JOBS/TEST-03-JOBS.units/sleep-infinity-restart-normal.service
new file mode 100644 (file)
index 0000000..dabba4c
--- /dev/null
@@ -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
index 067f2ce67defb28685f93e2a0da27bec26067da5..183439e913bfecfc6fbe7628bb8e3e5017a43570 100755 (executable)
@@ -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"