1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-12-22 13:33:56 +03:00

tests: don't use "netcat" for testing TEST-10-ISSUE-2467

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...
This commit is contained in:
Lennart Poettering 2017-11-28 19:37:32 +01:00
parent f2d566b728
commit 9b45c2bf02

View File

@ -18,7 +18,7 @@ test_setup() {
eval $(udevadm info --export --query=env --name=${LOOPDEV}p2) eval $(udevadm info --export --query=env --name=${LOOPDEV}p2)
setup_basic_environment setup_basic_environment
dracut_install nc true rm dracut_install true rm
# setup the testsuite service # setup the testsuite service
cat >$initdir/etc/systemd/system/testsuite.service <<'EOF' cat >$initdir/etc/systemd/system/testsuite.service <<'EOF'
@ -28,13 +28,15 @@ After=multi-user.target
[Service] [Service]
Type=oneshot 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 TimeoutStartSec=10s
EOF EOF
cat >$initdir/etc/systemd/system/test.socket <<'EOF' cat >$initdir/etc/systemd/system/test.socket <<'EOF'
[Socket] [Socket]
ListenStream=/run/test.ctl ListenFIFO=/run/test.ctl
EOF EOF
cat > $initdir/etc/systemd/system/test.service <<'EOF' cat > $initdir/etc/systemd/system/test.service <<'EOF'