]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: drop the `su` wrapper and use `systemctl` directly 21472/head
authorFrantisek Sumsal <frantisek@sumsal.cz>
Mon, 22 Nov 2021 21:12:09 +0000 (22:12 +0100)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Mon, 22 Nov 2021 21:12:41 +0000 (22:12 +0100)
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.

test/units/testsuite-55.sh

index b265c8cce76449a8c6e7022a6a0c1b7dd41a80de..db13964311559e54d3c1d560715e7e5081ed51f0 100755 (executable)
@@ -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