Files
systemd/test/units/TEST-23-UNIT-FILE.success-failure.sh
Yu Watanabe 5c60d3011f integration tests: do not adjust log level in the test script
We passes log level through kernel command line. It is not necessary to
set to debug level at the beginning, and set to info at the end.
This is important when a test has several subtests. If a subtest sets
log level to info at the end, then subsequent tests may not generate any
useful logs.
2025-09-26 07:20:04 +09:00

46 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -eux
set -o pipefail
# Test OnSuccess=/OnFailure= in combination
# 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