From: Henri Chain Date: Tue, 23 Nov 2021 15:47:18 +0000 (+0100) Subject: Try to fix exittype test flakyness X-Git-Tag: v250-rc1~151 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=81e1590e2de268d57be72900c5fc66ff3d4d1410;p=thirdparty%2Fsystemd.git Try to fix exittype test flakyness The test was changed at @bluca 's request to avoid sleeps, but the change insufficient to avoid all races. The kill command is now run from the script itself to avoid using ExecStartPost --- diff --git a/test/units/testsuite-56.sh b/test/units/testsuite-56.sh index b1673206155..ffdd3528725 100755 --- a/test/units/testsuite-56.sh +++ b/test/units/testsuite-56.sh @@ -17,6 +17,9 @@ disown systemd-notify --ready +# Run the stop/kill command +\$1 & + # process tree: systemd -> bash -> sleep sleep infinity EOF @@ -24,14 +27,12 @@ chmod +x /tmp/test56-exit-cgroup.sh # service should be stopped cleanly systemd-run --wait --unit=one -p Type=notify -p ExitType=cgroup \ - -p ExecStartPost='bash -c "systemctl stop one &"' \ - /tmp/test56-exit-cgroup.sh + /tmp/test56-exit-cgroup.sh 'systemctl stop one' # same thing with a truthy exec condition systemd-run --wait --unit=two -p Type=notify -p ExitType=cgroup \ -p ExecCondition=true \ - -p ExecStartPost='bash -c "systemctl stop two &"' \ - /tmp/test56-exit-cgroup.sh + /tmp/test56-exit-cgroup.sh 'systemctl stop two' # false exec condition: systemd-run should exit immediately with status code: 1 systemd-run --wait --unit=three -p Type=notify -p ExitType=cgroup \ @@ -41,8 +42,7 @@ systemd-run --wait --unit=three -p Type=notify -p ExitType=cgroup \ # service should exit uncleanly (main process exits with SIGKILL) systemd-run --wait --unit=four -p Type=notify -p ExitType=cgroup \ - -p ExecStartPost='bash -c "systemctl kill --signal 9 four &"' \ - /tmp/test56-exit-cgroup.sh \ + /tmp/test56-exit-cgroup.sh 'systemctl kill --signal 9 four' \ && { echo 'unexpected success'; exit 1; } @@ -58,18 +58,19 @@ sleep infinity & ((sleep infinity); true) & systemd-notify --ready + +# Run the stop/kill command after this bash process exits +(sleep 1; \$1) & EOF chmod +x /tmp/test56-exit-cgroup-parentless.sh # service should be stopped cleanly systemd-run --wait --unit=five -p Type=notify -p ExitType=cgroup \ - -p ExecStartPost='bash -c "systemctl stop five &"' \ - /tmp/test56-exit-cgroup-parentless.sh + /tmp/test56-exit-cgroup-parentless.sh 'systemctl stop five' # service should still exit cleanly despite SIGKILL (the main process already exited cleanly) systemd-run --wait --unit=six -p Type=notify -p ExitType=cgroup \ - -p ExecStartPost='bash -c "systemctl kill --signal 9 six &"' \ - /tmp/test56-exit-cgroup-parentless.sh + /tmp/test56-exit-cgroup-parentless.sh 'systemctl kill --signal 9 six' systemd-analyze log-level info