From 9e0d0c3fdfe5043d71a8d54f1e6fcc152fbc3e58 Mon Sep 17 00:00:00 2001 From: Daniel Foster Date: Tue, 27 May 2025 13:43:39 +1000 Subject: [PATCH] test: add simple tests for systemd-socket-activate tool --- mkosi/mkosi.sanitizers/mkosi.postinst | 1 + .../TEST-74-AUX-UTILS.socket-activate.sh | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100755 test/units/TEST-74-AUX-UTILS.socket-activate.sh diff --git a/mkosi/mkosi.sanitizers/mkosi.postinst b/mkosi/mkosi.sanitizers/mkosi.postinst index 582a7cb99d4..ee26021c327 100755 --- a/mkosi/mkosi.sanitizers/mkosi.postinst +++ b/mkosi/mkosi.sanitizers/mkosi.postinst @@ -77,6 +77,7 @@ wrap=( ps setfacl setpriv + socat sshd stat su diff --git a/test/units/TEST-74-AUX-UTILS.socket-activate.sh b/test/units/TEST-74-AUX-UTILS.socket-activate.sh new file mode 100755 index 00000000000..b714ae46c95 --- /dev/null +++ b/test/units/TEST-74-AUX-UTILS.socket-activate.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: LGPL-2.1-or-later +set -eux +set -o pipefail + +# shellcheck source=test/units/util.sh +. "$(dirname "$0")"/util.sh + +CAT_PID="$(systemd-notify --fork -- systemd-socket-activate -l 1234 --accept --inetd cat)" +assert_eq "$(echo -n hello | socat - 'TCP:localhost:1234')" hello +kill "$CAT_PID" + +# Check whether socat's ACCEPT-FD is available (introduced in v1.8) +systemd-socket-activate -l 1234 --now socat ACCEPT-FD:3 PIPE & +sleep 1 +jobs >/dev/null +if kill %% &>/dev/null; then + systemd-socket-activate -l 1234 --now socat ACCEPT-FD:3 PIPE & + SOCAT_PID="$!" + + # unfortunately we need to sleep since socket-activate only sends sd_notify when --accept is passed, + # so we can't rely on that to avoid a race. + sleep 1 + + assert_in socat "$(