]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: wait for a process ID instead of job ID
authorFrantisek Sumsal <frantisek@sumsal.cz>
Tue, 18 Nov 2025 12:49:03 +0000 (13:49 +0100)
committerLuca Boccassi <luca.boccassi@gmail.com>
Tue, 18 Nov 2025 15:18:00 +0000 (15:18 +0000)
Since depending on job control turned out to be flaky [0], let's just
explicitly wait for a process ID instead.

Follow-up for 3849b0701a7713c147400f205e7ddb3e3f93ad26.
Resolves: #39543

[0] https://github.com/systemd/systemd/issues/39543#issuecomment-3529418583

test/units/TEST-07-PID1.socket-defer.sh

index efbb7e147258698c4fba4fcc15f270fe3d1fd10c..304c3bce3d90ce2097835506b0a49be7a5b005b5 100755 (executable)
@@ -71,16 +71,18 @@ assert_eq "$(systemctl show "$UNIT_NAME.socket" -P SubState)" "listening"
 (! systemctl -q is-active "$UNIT_NAME.service")
 
 socat -u - UNIX-CONNECT:"/tmp/$UNIT_NAME/test" &
+PID=$!
 wait_for_start
-wait %%
+wait $PID
 
 touch "/tmp/$UNIT_NAME/flag"
 systemctl start "$UNIT_NAME-conflict2.service"
 wait_for_stop
 
 socat -u - UNIX-CONNECT:"/tmp/$UNIT_NAME/test" &
+PID=$!
 wait_for_start
-wait %%
+wait $PID
 (! systemctl -q is-active "$UNIT_NAME-conflict2.service")
 
 # DeferTrigger=yes
@@ -97,9 +99,10 @@ assert_eq "$(systemctl show "$UNIT_NAME-conflict1.service" -P SubState)" "start"
 # Wait in "deferred" state
 
 socat -u - UNIX-CONNECT:"/tmp/$UNIT_NAME/test" &
+PID=$!
 timeout 30 bash -c "until [[ \$(systemctl show '$UNIT_NAME.socket' -P SubState) == 'deferred' ]]; do sleep .5; done"
 (! systemctl -q is-active "$UNIT_NAME.service")
-wait %%
+wait $PID
 assert_eq "$(systemctl show "$UNIT_NAME-conflict1.service" -P SubState)" "start"
 
 systemctl daemon-reload
@@ -120,9 +123,10 @@ systemctl start "$UNIT_NAME-conflict2.service"
 wait_for_stop
 
 socat -u - UNIX-CONNECT:"/tmp/$UNIT_NAME/test" &
+PID=$!
 timeout 30 bash -c "until [[ \$(systemctl show '$UNIT_NAME.socket' -P SubState) == 'deferred' ]]; do sleep .5; done"
 (! systemctl -q is-active "$UNIT_NAME.service")
-wait %%
+wait $PID
 
 rm "/tmp/$UNIT_NAME/flag"
 timeout 30 bash -c "while systemctl -q is-active '$UNIT_NAME-conflict2.service'; do sleep .2; done"
@@ -136,9 +140,10 @@ wait_for_stop
 assert_eq "$(systemctl show "$UNIT_NAME-conflict1.service" -P SubState)" "start"
 
 socat -u - UNIX-CONNECT:"/tmp/$UNIT_NAME/test" &
+PID=$!
 timeout 30 bash -c "until [[ \$(systemctl show '$UNIT_NAME.socket' -P SubState) == 'deferred' ]]; do sleep .5; done"
 (! systemctl -q is-active "$UNIT_NAME.service")
-wait %%
+wait $PID
 
 echo "DeferTriggerMaxSec=20s" >>/run/systemd/system/"$UNIT_NAME.socket"
 systemctl daemon-reload