mirror of
https://github.com/systemd/systemd.git
synced 2025-02-18 21:57:48 +03:00
50 lines
1.4 KiB
Bash
50 lines
1.4 KiB
Bash
|
#!/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
|