]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tests: don't use "netcat" for testing TEST-10-ISSUE-2467
authorLennart Poettering <lennart@poettering.net>
Tue, 28 Nov 2017 18:37:32 +0000 (19:37 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 5 Dec 2017 12:49:13 +0000 (13:49 +0100)
Apparently there are a myriad of netcat implementations around, and they
all behave slightly differently. The one I have on my Fedora 27
installation will cause a failure when invoked as "nc -U" on an AF_UNIX
socket whose connections are immediately disconnected, thus causing the
test to fail.

Let's avoid all ambiguities in this regard, and drop usage of netcat
altoegther. Instead let's use a FIFO in the file system, which we can
connect to with only shell commands, and is hence much simpler and
more reliable to test with.

The actual test is supposed to validate that PID 1 doesn't hang when
activation of a socket-activated service fails, hence which transport
mechanism is used ultimately doesn't matter, as long as we activate the
service, and we do here...

test/TEST-10-ISSUE-2467/test.sh

index e027c9d81d26348565370963710283fa5a04e772..2f95e9062daeca95450007f7d822dda278b3fa7a 100755 (executable)
@@ -18,7 +18,7 @@ test_setup() {
         eval $(udevadm info --export --query=env --name=${LOOPDEV}p2)
 
         setup_basic_environment
-        dracut_install nc true rm
+        dracut_install true rm
 
         # setup the testsuite service
         cat >$initdir/etc/systemd/system/testsuite.service <<'EOF'
@@ -28,13 +28,15 @@ After=multi-user.target
 
 [Service]
 Type=oneshot
-ExecStart=/bin/sh -e -x -c 'rm -f /tmp/nonexistent; systemctl start test.socket; echo a | nc -U /run/test.ctl; >/testok'
+StandardOutput=tty
+StandardError=tty
+ExecStart=/bin/sh -e -x -c 'rm -f /tmp/nonexistent; systemctl start test.socket; echo > /run/test.ctl; >/testok'
 TimeoutStartSec=10s
 EOF
 
        cat  >$initdir/etc/systemd/system/test.socket <<'EOF'
 [Socket]
-ListenStream=/run/test.ctl
+ListenFIFO=/run/test.ctl
 EOF
 
        cat > $initdir/etc/systemd/system/test.service <<'EOF'