]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: use timeout command to improve performance 23941/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 7 Jul 2022 22:00:42 +0000 (07:00 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 7 Jul 2022 22:02:13 +0000 (07:02 +0900)
c.f. #23723.

test/units/testsuite-60.sh

index 31e1f46af9c37f4f74649cd34b92b259a625ac33..3c391c8efa6ddf488eab3ebc9ce1e7c34cc570e7 100755 (executable)
@@ -85,6 +85,8 @@ for ((i = 0; i < NUM_DIRS; i++)); do
     mkdir "/tmp/meow${i}"
 done
 
+TS="$(date '+%H:%M:%S')"
+
 for ((i = 0; i < NUM_DIRS; i++)); do
     mount -t tmpfs tmpfs "/tmp/meow${i}"
 done
@@ -96,48 +98,15 @@ for ((i = 0; i < NUM_DIRS; i++)); do
     umount "/tmp/meow${i}"
 done
 
-# figure out if we have entered the rate limit state
-
-entered_rl=0
-exited_rl=0
-timeout="$(date -ud "2 minutes" +%s)"
-while [[ $(date -u +%s) -le ${timeout} ]]; do
-    if journalctl -u init.scope | grep -q "(mount-monitor-dispatch) entered rate limit"; then
-        entered_rl=1
-        break
-    fi
-    sleep 5
-done
-
-# if the infra is slow we might not enter the rate limit state; in that case skip the exit check
-
-if [ "${entered_rl}" = "1" ]; then
-    exited_rl=0
-    timeout="$(date -ud "2 minutes" +%s)"
-    while [[ $(date -u +%s) -le ${timeout} ]]; do
-        if journalctl -u init.scope | grep -q "(mount-monitor-dispatch) left rate limit"; then
-            exited_rl=1
-            break
-        fi
-        sleep 5
-    done
-
-    if [ "${exited_rl}" = "0" ]; then
-        exit 24
-    fi
+# Figure out if we have entered the rate limit state.
+# If the infra is slow we might not enter the rate limit state; in that case skip the exit check.
+if timeout 2m bash -c "while ! journalctl -u init.scope --since=$TS | grep -q '(mount-monitor-dispatch) entered rate limit'; do sleep 1; done"; then
+    timeout 2m bash -c "while ! journalctl -u init.scope --since=$TS | grep -q '(mount-monitor-dispatch) left rate limit'; do sleep 1; done"
 fi
 
-# give some time for units to settle so we don't race between exiting the rate limit state and cleaning up the units
-
-sleep 60
-systemctl daemon-reload
-sleep 60
-
-# verify that the mount units are always cleaned up at the end
-
-if systemctl list-units -t mount tmp-meow* | grep -q tmp-meow; then
-    exit 42
-fi
+# Verify that the mount units are always cleaned up at the end.
+# Give some time for units to settle so we don't race between exiting the rate limit state and cleaning up the units.
+timeout 2m bash -c 'while systemctl list-units -t mount tmp-meow* | grep -q tmp-meow; do systemctl daemon-reload; sleep 10; done'
 
 # test that handling of mount start jobs is delayed when /proc/self/mouninfo monitor is rate limited
 test_issue_20329