mirror of
https://github.com/systemd/systemd.git
synced 2024-11-06 16:59:03 +03:00
dfec314d41
TEST-41 verifies that the StartLimitBurst property will correctly limit the number of unit restarts, but the test currently doesn't adjust the StartLimitIntervalSec which defaults to 10 seconds. On Ubuntu CI, running under un-accelerated qemu, it can take more than 10 seconds to perform all 3 restarts, which avoids the burst limit, and fails the test. Instead, specify a long StartLimitIntervalSec in the test, so we can be sure to correctly test StartLimitBurst even on slow testbeds. Fixes #13794.
50 lines
1.3 KiB
Bash
Executable File
50 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
set -ex
|
|
set -o pipefail
|
|
|
|
# wait this many secs for each test service to succeed in what is being tested
|
|
MAX_SECS=60
|
|
|
|
systemd-analyze log-level debug
|
|
systemd-analyze log-target console
|
|
|
|
# test one: Restart=on-failure should restart the service
|
|
! systemd-run --unit=one -p Type=oneshot -p Restart=on-failure /bin/bash -c "exit 1"
|
|
|
|
for ((secs=0; secs<$MAX_SECS; secs++)); do
|
|
[[ "$(systemctl show one.service -p NRestarts --value)" -le 0 ]] || break
|
|
sleep 1
|
|
done
|
|
if [[ "$(systemctl show one.service -p NRestarts --value)" -le 0 ]]; then
|
|
exit 1
|
|
fi
|
|
|
|
TMP_FILE="/test-41-oneshot-restart-test"
|
|
|
|
touch $TMP_FILE
|
|
|
|
# test two: make sure StartLimitBurst correctly limits the number of restarts
|
|
# and restarts execution of the unit from the first ExecStart=
|
|
! systemd-run --unit=two -p StartLimitIntervalSec=120 -p StartLimitBurst=3 -p Type=oneshot -p Restart=on-failure -p ExecStart="/bin/bash -c \"printf a >> $TMP_FILE\"" /bin/bash -c "exit 1"
|
|
|
|
# wait for at least 3 restarts
|
|
for ((secs=0; secs<$MAX_SECS; secs++)); do
|
|
[[ $(cat $TMP_FILE) != "aaa" ]] || break
|
|
sleep 1
|
|
done
|
|
if [[ $(cat $TMP_FILE) != "aaa" ]]; then
|
|
exit 1
|
|
fi
|
|
|
|
# wait for 5 more seconds to make sure there aren't excess restarts
|
|
sleep 5
|
|
if [[ $(cat $TMP_FILE) != "aaa" ]]; then
|
|
exit 1
|
|
fi
|
|
|
|
systemd-analyze log-level info
|
|
|
|
echo OK > /testok
|
|
|
|
exit 0
|