]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
TEST-10: don't attempt to write a byte to the socket
authorFranck Bui <fbui@suse.com>
Wed, 17 Nov 2021 07:13:04 +0000 (08:13 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 6 Dec 2021 23:29:09 +0000 (08:29 +0900)
Writing a byte to test10.socket is actually the root cause of issue #19154:
depending on the timing, it's possible that PID1 closes the socket before socat
(or nc, it doesn't matter which tool is actually used) tries to write that one
byte to the socket. In this case writing to the socket returns EPIPE, which
causes socat to exit(1) and subsequently make the test fail.

Since we're only interested in connecting to the socket and triggering the rate
limit of the socket, this patch removes the parts that write the single byte to
the socket, which should remove the race for good.

Since it shouldn't matter whether the test uses socat or nc, let's switch back
to nc and hence remove the sole user of socat. The exit status of nc is however
ignored because some versions might choke when the socket is closed
unexpectedly.

test/test-functions
test/units/testsuite-10.service

index 5e3eadd37fc3d76d7cf5e7ded89f5b85a3861850..7b9467cfc1c303d7ba921a333b3341f92852ce62 100644 (file)
@@ -175,7 +175,6 @@ BASICTOOLS=(
     sfdisk
     sh
     sleep
-    socat
     stat
     su
     sulogin
index 1040763276858e48f292b7dee8932b416efcbcc0..f33c1b646ab7859f08bf58ccf64489814a926eab 100644 (file)
@@ -7,8 +7,7 @@ ExecStartPre=rm -f /failed /testok
 Type=oneshot
 ExecStart=rm -f /tmp/nonexistent
 ExecStart=systemctl start test10.socket
-ExecStart=sh -x -c 'printf x >test.file'
-ExecStart=-socat -T20 OPEN:test.file UNIX-CONNECT:/run/test.ctl
+ExecStart=-nc -w20 -U /run/test.ctl
 # TriggerLimitIntervalSec= by default is set to 2s. A "sleep 10" should give
 # systemd enough time even on slower machines, to reach the trigger limit.
 ExecStart=sleep 10