diff --git a/test/TEST-41-ONESHOT-RESTART/blacklist-ubuntu-ci b/test/TEST-41-ONESHOT-RESTART/blacklist-ubuntu-ci deleted file mode 100644 index 22b34bbb0c..0000000000 --- a/test/TEST-41-ONESHOT-RESTART/blacklist-ubuntu-ci +++ /dev/null @@ -1,4 +0,0 @@ -This appears to be failing on Ubuntu CI due to short sleep duration -waiting for the service-restarts to complete, but doubling the -sleep from 5 to 10 seconds didn't appear to help, so let's blacklist -this on Ubuntu CI while debugging the test failure. diff --git a/test/TEST-41-ONESHOT-RESTART/testsuite.sh b/test/TEST-41-ONESHOT-RESTART/testsuite.sh index f7423dbf9a..4465614ff3 100755 --- a/test/TEST-41-ONESHOT-RESTART/testsuite.sh +++ b/test/TEST-41-ONESHOT-RESTART/testsuite.sh @@ -2,14 +2,19 @@ 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 -# These three commands should succeed. +# 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" -sleep 5 - +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 @@ -18,10 +23,21 @@ TMP_FILE="/test-41-oneshot-restart-test" touch $TMP_FILE -! systemd-run --unit=two -p StartLimitBurst=3 -p Type=oneshot -p Restart=on-failure -p ExecStart="/bin/bash -c \"printf a >> $TMP_FILE\"" /bin/bash -c "exit 1" +# 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