1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-25 01:34:28 +03:00

test: drop the su wrapper and use systemctl directly

ASan is having a hard time to get its LD_PRELOAD= shenanigans straight
with all the shells flying around. Let's make it a bit easier by using
one of the nifty systemctl's features instead.
This commit is contained in:
Frantisek Sumsal 2021-11-22 22:12:09 +01:00
parent f201f34477
commit c83f126a41

View File

@ -60,36 +60,29 @@ if ! systemctl status testsuite-55-testchill.service; then exit 24; fi
# Make sure we also work correctly on user units.
runas() {
declare userid=$1
shift
# shellcheck disable=SC2016
su "$userid" -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID exec "$@"' -- sh "$@"
}
runas testuser systemctl start --user testsuite-55-testchill.service
runas testuser systemctl start --user testsuite-55-testbloat.service
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"
runas testuser systemctl --user status testsuite-55-testchill.service
systemctl --machine "testuser@.host" --user status testsuite-55-testchill.service
# systemd-oomd watches for elevated pressure for 2 seconds before acting.
# It can take time to build up pressure so either wait 2 minutes or for the service to fail.
timeout="$(date -ud "2 minutes" +%s)"
while [[ $(date -u +%s) -le $timeout ]]; do
if ! runas testuser systemctl --user status testsuite-55-testbloat.service; then
if ! systemctl --machine "testuser@.host" --user status testsuite-55-testbloat.service; then
break
fi
sleep 2
done
# testbloat should be killed and testchill should be fine
if runas testuser systemctl --user status testsuite-55-testbloat.service; then exit 42; fi
if ! runas testuser systemctl --user status testsuite-55-testchill.service; then exit 24; fi
if systemctl --machine "testuser@.host" --user status testsuite-55-testbloat.service; then exit 42; fi
if ! systemctl --machine "testuser@.host" --user status testsuite-55-testchill.service; then exit 24; fi
# only run this portion of the test if we can set xattrs
if setfattr -n user.xattr_test -v 1 /sys/fs/cgroup/; then