77 lines
2.7 KiB
Diff
77 lines
2.7 KiB
Diff
From a7375d12da80d633dfa802f2b66d2361c70c62f5 Mon Sep 17 00:00:00 2001
|
|
From: Dan Streetman <ddstreet@canonical.com>
|
|
Date: Thu, 17 Oct 2019 11:06:18 -0400
|
|
Subject: [PATCH] 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.
|
|
|
|
(cherry picked from commit dfec314d41159117c28dffc2b980d3bdd67c3dcb)
|
|
|
|
Related: #2042896
|
|
---
|
|
test/TEST-41-ONESHOT-RESTART/testsuite.sh | 26 ++++++++++++++++++-----
|
|
1 file changed, 21 insertions(+), 5 deletions(-)
|
|
|
|
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"
|
|
|
|
-sleep 5
|
|
+# 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
|