1
0
mirror of https://github.com/systemd/systemd synced 2024-07-05 17:39:42 +00:00

test: integration test for PassFileDescriptorsToExec= option

Check if socket file descriptors are passed to ExecXYZ= commands from the
socket unit depending on whether PassFileDescriptorsToExec= option is set.
This commit is contained in:
Jakub Sitnicki 2024-03-14 11:20:50 +01:00 committed by Mike Yuan
parent 97df75d7bd
commit d1813ba436
3 changed files with 82 additions and 0 deletions

View File

@ -0,0 +1,35 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
Description=Test if ExecXYZ= commands don't inherit listen FDs when PassFileDescriptorsToExec= is unset
[Socket]
# With Accept= set we don't need a corresponding service unit
Accept=yes
FileDescriptorName=foo
ListenStream=127.0.0.1:1234
ListenStream=[::1]:1234
PassFileDescriptorsToExec=no
ExecStartPre=\
test ExecStartPre -a \
-z ${LISTEN_FDS} -a \
-z ${LISTEN_FDNAMES} -a \
! -e /dev/fd/3 -a \
! -e /dev/fd/4
ExecStartPost=\
test ExecStartPost -a \
-z ${LISTEN_FDS} -a \
-z ${LISTEN_FDNAMES} -a \
! -e /dev/fd/3 -a \
! -e /dev/fd/4
ExecStopPre=\
test ExecStopPre -a \
-z ${LISTEN_FDS} -a \
-z ${LISTEN_FDNAMES} -a \
! -e /dev/fd/3 -a \
! -e /dev/fd/4
ExecStopPost=\
test ExecStopPost -a \
-z ${LISTEN_FDS} -a \
-z ${LISTEN_FDNAMES} -a \
! -e /dev/fd/3 -a \
! -e /dev/fd/4

View File

@ -0,0 +1,36 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
Description=Test if ExecXYZ= commands inherit listen FDs when PassFileDescriptorsToExec= is set
[Socket]
# With Accept= set we don't need a corresponding service unit
Accept=yes
FileDescriptorName=foo
ListenStream=127.0.0.1:1234
ListenStream=[::1]:1234
PassFileDescriptorsToExec=yes
# ExecStartPre runs before we create sockets. Nothing to pass.
ExecStartPre=\
test ExecStartPre -a \
-z ${LISTEN_FDS} -a \
-z ${LISTEN_FDNAMES} -a \
! -e /dev/fd/3 -a \
! -e /dev/fd/4
ExecStartPost=\
test ExecStartPost -a \
${LISTEN_FDS} = 2 -a \
${LISTEN_FDNAMES} = foo:foo -a \
-S /dev/fd/3 -a \
-S /dev/fd/4
ExecStopPre=\
test "ExecStopPre" -a \
${LISTEN_FDS} = 2 -a \
${LISTEN_FDNAMES} = foo:foo -a \
-S /dev/fd/3 -a \
-S /dev/fd/4
ExecStopPost=\
test "ExecStopPost" -a \
${LISTEN_FDS} = 2 -a \
${LISTEN_FDNAMES} = foo:foo -a \
-S /dev/fd/3 -a \
-S /dev/fd/4

View File

@ -0,0 +1,11 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -eux
set -o pipefail
# Test PassFileDescriptorsToExec= option in socket units
for u in pass-fds-to-exec-{no,yes}.socket; do
systemctl start "$u"
systemctl stop "$u"
done