mirror of
https://github.com/systemd/systemd.git
synced 2024-10-27 01:55:22 +03:00
test: add test case for recent OnSuccess=/OnFailure= state machine changes
This commit is contained in:
parent
09d04ad325
commit
f4b24db7c3
3
test/units/success-failure-test-failure.service
Normal file
3
test/units/success-failure-test-failure.service
Normal file
@ -0,0 +1,3 @@
|
||||
[Service]
|
||||
Type=notify
|
||||
ExecStart=bash -c "echo failure >> /tmp/success-failure-test-result && systemd-notify --ready && sleep infinity"
|
3
test/units/success-failure-test-success.service
Normal file
3
test/units/success-failure-test-success.service
Normal file
@ -0,0 +1,3 @@
|
||||
[Service]
|
||||
Type=notify
|
||||
ExecStart=bash -c "echo success >> /tmp/success-failure-test-result && systemd-notify --ready && sleep infinity"
|
9
test/units/success-failure-test.service
Normal file
9
test/units/success-failure-test.service
Normal file
@ -0,0 +1,9 @@
|
||||
[Unit]
|
||||
OnSuccess=success-failure-test-success.service
|
||||
OnFailure=success-failure-test-failure.service
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
Restart=always
|
||||
ExecStart=bash -c 'test -f /tmp/success-failure-test-ran && touch /tmp/success-failure-test-ran2 && systemd-notify --ready && sleep infinity'
|
||||
ExecStopPost=touch /tmp/success-failure-test-ran
|
49
test/units/testsuite-23.success-failure.sh
Executable file
49
test/units/testsuite-23.success-failure.sh
Executable file
@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
# Test OnSuccess=/OnFailure= in combination
|
||||
|
||||
systemd-analyze log-level debug
|
||||
|
||||
# Start-up should fail, but the automatic restart should fix it
|
||||
(! systemctl start success-failure-test )
|
||||
|
||||
# Wait until the first invocation finished & failed
|
||||
while test ! -f /tmp/success-failure-test-ran ; do
|
||||
sleep .5
|
||||
done
|
||||
|
||||
# Wait until the second invocation finished & succeeded
|
||||
while test ! -f /tmp/success-failure-test-ran2 ; do
|
||||
sleep .5
|
||||
done
|
||||
|
||||
# Verify it is indeed running
|
||||
systemctl is-active -q success-failure-test
|
||||
|
||||
# The above should have caused the failure service to start (asynchronously)
|
||||
while test "$(systemctl is-active success-failure-test-failure)" != "active" ; do
|
||||
sleep .5
|
||||
done
|
||||
|
||||
# But the success service should not have started
|
||||
test "$(systemctl is-active success-failure-test-success)" = "inactive"
|
||||
|
||||
systemctl stop success-failure-test-failure
|
||||
|
||||
# Do a clean kill of the service now
|
||||
systemctl kill success-failure-test
|
||||
|
||||
# This should result in the success service to start
|
||||
while test "$(systemctl is-active success-failure-test-success)" != "active" ; do
|
||||
sleep .5
|
||||
done
|
||||
|
||||
# But the failure service should not have started again
|
||||
test "$(systemctl is-active success-failure-test-failure)" = "inactive"
|
||||
|
||||
systemctl stop success-failure-test success-failure-test-success
|
||||
|
||||
systemd-analyze log-level info
|
Loading…
Reference in New Issue
Block a user