From 841988f80d2440501a3baddba712cdb955225ab7 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sun, 13 Oct 2024 05:15:18 +0900 Subject: [PATCH] TEST-13-NSPAWN: add test for 'machinectl terminate' This also fixes the test for io.systemd.Machine.Terminate. When systemd-nspawn@.service receives stop signal, then systemd-nspawn sends SIGRTMIN+3 to the container, which was previously ignored by the custom init script used by the container. Let's introduce another trap for the signal, and correctly handle it. Follow-up for 164af66f9abdfd8935098d9f10c746ff29dea7df. --- test/units/TEST-13-NSPAWN.machined.sh | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/test/units/TEST-13-NSPAWN.machined.sh b/test/units/TEST-13-NSPAWN.machined.sh index f117c305b2..92daf70acf 100755 --- a/test/units/TEST-13-NSPAWN.machined.sh +++ b/test/units/TEST-13-NSPAWN.machined.sh @@ -39,6 +39,7 @@ cat >/var/lib/machines/long-running/sbin/init <<\EOF PID=0 +trap "touch /terminate; kill $PID" RTMIN+3 trap "touch /poweroff" RTMIN+4 trap "touch /reboot" INT trap "touch /trap" TRAP @@ -115,7 +116,14 @@ timeout 10 bash -c "until test -e /var/lib/machines/long-running/poweroff; do sl rm -f /var/lib/machines/long-running/reboot machinectl reboot long-running timeout 10 bash -c "until test -e /var/lib/machines/long-running/reboot; do sleep .5; done" -# Skip machinectl terminate for now, as it doesn't play well with our "init" +# Test for 'machinectl terminate' +rm -f /var/lib/machines/long-running/terminate +machinectl terminate long-running +timeout 10 bash -c "until test -e /var/lib/machines/long-running/terminate; do sleep .5; done" +timeout 10 bash -c "while machinectl status long-running; do sleep .5; done" +# Restart container +long_running_machine_start +# Test for 'machinectl kill' rm -f /var/lib/machines/long-running/trap machinectl kill --signal=SIGTRAP --kill-whom=leader long-running timeout 10 bash -c "until test -e /var/lib/machines/long-running/trap; do sleep .5; done" @@ -271,8 +279,10 @@ timeout 30 bash -c "while varlinkctl call /run/systemd/machine/io.systemd.Machin # test io.systemd.Machine.Terminate long_running_machine_start +rm -f /var/lib/machines/long-running/terminate varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.Terminate '{"name":"long-running"}' -timeout 120 bash -c "while varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List '{\"name\":\"long-running\"}'; do sleep 0.5; done" +timeout 10 bash -c "until test -e /var/lib/machines/long-running/terminate; do sleep .5; done" +timeout 30 bash -c "while varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List '{\"name\":\"long-running\"}'; do sleep 0.5; done" # test io.systemd.Machine.Register varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.Register '{"name": "registered-container", "class": "container"}' -- 2.25.1