Compare commits

..

2 Commits

Author SHA1 Message Date
Anita Zhang d2fc7d22cb
Merge pull request #13795 from ddstreet/test-41
WIP: test: debug TEST-41 failure on Ubuntu CI
2019-10-18 18:36:48 -07:00
Dan Streetman dfec314d41 test: correct TEST-41 StartLimitBurst test
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.
2019-10-18 15:51:43 -04:00
2 changed files with 21 additions and 9 deletions

View File

@ -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.

View File

@ -2,14 +2,19 @@
set -ex set -ex
set -o pipefail 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-level debug
systemd-analyze log-target console 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" ! 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 if [[ "$(systemctl show one.service -p NRestarts --value)" -le 0 ]]; then
exit 1 exit 1
fi fi
@ -18,10 +23,21 @@ TMP_FILE="/test-41-oneshot-restart-test"
touch $TMP_FILE 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 sleep 5
if [[ $(cat $TMP_FILE) != "aaa" ]]; then if [[ $(cat $TMP_FILE) != "aaa" ]]; then
exit 1 exit 1
fi fi