From e79b58c825d7c04cdd2c48c8cffbd5fed192cde3 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 24 Oct 2024 06:00:53 +0900 Subject: [PATCH] TEST-13-NSPAWN: fix race between container exit and varlink call Follow-up for 3cb72c7862d8950bc2a963aaa3ca3255eea374b6. The test container exits shortly, hence when varlinkctl is called, the container may be already terminated. Let's make the container live infinitely. Also, this makes the os-release files removed after the container is started. --- test/units/TEST-13-NSPAWN.machined.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test/units/TEST-13-NSPAWN.machined.sh b/test/units/TEST-13-NSPAWN.machined.sh index 244582677de..24eb673af30 100755 --- a/test/units/TEST-13-NSPAWN.machined.sh +++ b/test/units/TEST-13-NSPAWN.machined.sh @@ -304,7 +304,26 @@ varlinkctl call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.Unreg # test io.systemd.Machine.List with addresses, OSRelease, and UIDShift fields create_dummy_container "/var/lib/machines/container-without-os-release" +cat >>/var/lib/machines/container-without-os-release/sbin/init <<\EOF +PID=0 + +trap 'kill 0' RTMIN+3 +trap 'kill $PID' EXIT + +# We need to wait for the sleep process asynchronously in order to allow +# bash to process signals +sleep infinity & + +# notify that the process is ready +touch /ready + +PID=$! +while :; do + wait || : +done +EOF machinectl start "container-without-os-release" +timeout 30 bash -c "until test -e /var/lib/machines/container-without-os-release/ready; do sleep .5; done" rm -f /var/lib/machines/container-without-os-release/etc/os-release /var/lib/machines/container-without-os-release/usr/lib/os-release (! varlinkctl --more call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List '{"name": "container-without-os-release", "acquireMetadata": "yes"}') varlinkctl --more call /run/systemd/machine/io.systemd.Machine io.systemd.Machine.List '{"name": "container-without-os-release", "acquireMetadata": "graceful"}' -- 2.47.3