1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-08 21:17:47 +03:00

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
This commit is contained in:
Henri Chain 2021-11-23 16:47:18 +01:00 committed by Zbigniew Jędrzejewski-Szmek
parent b41b682bd6
commit 81e1590e2d

View File

@ -17,6 +17,9 @@ disown
systemd-notify --ready systemd-notify --ready
# Run the stop/kill command
\$1 &
# process tree: systemd -> bash -> sleep # process tree: systemd -> bash -> sleep
sleep infinity sleep infinity
EOF EOF
@ -24,14 +27,12 @@ chmod +x /tmp/test56-exit-cgroup.sh
# service should be stopped cleanly # service should be stopped cleanly
systemd-run --wait --unit=one -p Type=notify -p ExitType=cgroup \ systemd-run --wait --unit=one -p Type=notify -p ExitType=cgroup \
-p ExecStartPost='bash -c "systemctl stop one &"' \ /tmp/test56-exit-cgroup.sh 'systemctl stop one'
/tmp/test56-exit-cgroup.sh
# same thing with a truthy exec condition # same thing with a truthy exec condition
systemd-run --wait --unit=two -p Type=notify -p ExitType=cgroup \ systemd-run --wait --unit=two -p Type=notify -p ExitType=cgroup \
-p ExecCondition=true \ -p ExecCondition=true \
-p ExecStartPost='bash -c "systemctl stop two &"' \ /tmp/test56-exit-cgroup.sh 'systemctl stop two'
/tmp/test56-exit-cgroup.sh
# false exec condition: systemd-run should exit immediately with status code: 1 # false exec condition: systemd-run should exit immediately with status code: 1
systemd-run --wait --unit=three -p Type=notify -p ExitType=cgroup \ 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) # service should exit uncleanly (main process exits with SIGKILL)
systemd-run --wait --unit=four -p Type=notify -p ExitType=cgroup \ 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 'systemctl kill --signal 9 four' \
/tmp/test56-exit-cgroup.sh \
&& { echo 'unexpected success'; exit 1; } && { echo 'unexpected success'; exit 1; }
@ -58,18 +58,19 @@ sleep infinity &
((sleep infinity); true) & ((sleep infinity); true) &
systemd-notify --ready systemd-notify --ready
# Run the stop/kill command after this bash process exits
(sleep 1; \$1) &
EOF EOF
chmod +x /tmp/test56-exit-cgroup-parentless.sh chmod +x /tmp/test56-exit-cgroup-parentless.sh
# service should be stopped cleanly # service should be stopped cleanly
systemd-run --wait --unit=five -p Type=notify -p ExitType=cgroup \ systemd-run --wait --unit=five -p Type=notify -p ExitType=cgroup \
-p ExecStartPost='bash -c "systemctl stop five &"' \ /tmp/test56-exit-cgroup-parentless.sh 'systemctl stop five'
/tmp/test56-exit-cgroup-parentless.sh
# service should still exit cleanly despite SIGKILL (the main process already exited cleanly) # service should still exit cleanly despite SIGKILL (the main process already exited cleanly)
systemd-run --wait --unit=six -p Type=notify -p ExitType=cgroup \ 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 'systemctl kill --signal 9 six'
/tmp/test56-exit-cgroup-parentless.sh
systemd-analyze log-level info systemd-analyze log-level info