From ddc57d0a831cdd640db8edc47605bc27ca987ddf Mon Sep 17 00:00:00 2001 From: Anita Zhang Date: Wed, 24 Nov 2021 01:02:22 -0800 Subject: [PATCH] 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 --- test/units/testsuite-55.sh | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) 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 -- 2.47.3