From: Anita Zhang Date: Wed, 24 Nov 2021 09:02:22 +0000 (-0800) Subject: test: make test-55-oomd less flaky X-Git-Tag: v250-rc1~141 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ddc57d0a831cdd640db8edc47605bc27ca987ddf;p=thirdparty%2Fsystemd.git test: make test-55-oomd less flaky Make oomctl a bit less likely to race with systemd-oomd receiving the managed oom cgroup info by checking oomctl output in a loop with timeout. Fixes #21146 --- diff --git a/test/units/testsuite-55.sh b/test/units/testsuite-55.sh index db139643115..379ea9e5697 100755 --- a/test/units/testsuite-55.sh +++ b/test/units/testsuite-55.sh @@ -38,9 +38,20 @@ systemctl start testsuite-55-testchill.service systemctl start testsuite-55-testbloat.service # Verify systemd-oomd is monitoring the expected units -oomctl | grep "/testsuite-55-workload.slice" -oomctl | grep "20.00%" -oomctl | grep "Default Memory Pressure Duration: 2s" +# Try to avoid racing the oomctl output check by checking in a loop with a timeout +oomctl_output=$(oomctl) +timeout="$(date -ud "1 minutes" +%s)" +while [[ $(date -u +%s) -le $timeout ]]; do + if grep "/testsuite-55-workload.slice" <<< "$oomctl_output"; then + break + fi + oomctl_output=$(oomctl) + sleep 1 +done + +grep "/testsuite-55-workload.slice" <<< "$oomctl_output" +grep "20.00%" <<< "$oomctl_output" +grep "Default Memory Pressure Duration: 2s" <<< "$oomctl_output" systemctl status testsuite-55-testchill.service @@ -64,9 +75,20 @@ systemctl start --machine "testuser@.host" --user testsuite-55-testchill.service systemctl start --machine "testuser@.host" --user testsuite-55-testbloat.service # Verify systemd-oomd is monitoring the expected units -oomctl | grep -E "/user.slice.*/testsuite-55-workload.slice" -oomctl | grep "20.00%" -oomctl | grep "Default Memory Pressure Duration: 2s" +# Try to avoid racing the oomctl output check by checking in a loop with a timeout +oomctl_output=$(oomctl) +timeout="$(date -ud "1 minutes" +%s)" +while [[ $(date -u +%s) -le $timeout ]]; do + if grep -E "/user.slice.*/testsuite-55-workload.slice" <<< "$oomctl_output"; then + break + fi + oomctl_output=$(oomctl) + sleep 1 +done + +grep -E "/user.slice.*/testsuite-55-workload.slice" <<< "$oomctl_output" +grep "20.00%" <<< "$oomctl_output" +grep "Default Memory Pressure Duration: 2s" <<< "$oomctl_output" systemctl --machine "testuser@.host" --user status testsuite-55-testchill.service