mirror of
https://github.com/systemd/systemd
synced 2024-10-15 12:34:37 +00:00
Merge pull request #23941 from yuwata/test-60-improve-performance
test: performance improvement for TEST-60
This commit is contained in:
commit
8db5bc589a
|
@ -4,4 +4,5 @@ Description=TEST-60-MOUNT-RATELIMIT
|
|||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStartPre=rm -f /failed /testok
|
||||
ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
|
||||
|
|
|
@ -53,6 +53,8 @@ EOF
|
|||
}
|
||||
}
|
||||
|
||||
: >/failed
|
||||
|
||||
systemd-analyze log-level debug
|
||||
systemd-analyze log-target journal
|
||||
|
||||
|
@ -83,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
|
||||
|
@ -94,54 +98,20 @@ 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
|
||||
|
||||
systemd-analyze log-level info
|
||||
|
||||
echo OK >/testok
|
||||
|
||||
exit 0
|
||||
touch /testok
|
||||
rm /failed
|
||||
|
|
Loading…
Reference in a new issue