]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
TEST-75-RESOLVED: move test cases for NFTSet= to TEST-07-PID1
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 24 Nov 2025 15:48:16 +0000 (00:48 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 7 Dec 2025 00:09:03 +0000 (09:09 +0900)
The test cases are not related to systemd-resolved.

While moving the test cases, now userdbctl is used for obtaining UID/GID
for the dynamic user, as musl does not support nss module, hence getent
does not provide information about the dynamic user.

test/units/TEST-07-PID1.nft.sh [new file with mode: 0755]
test/units/TEST-75-RESOLVED.sh

diff --git a/test/units/TEST-07-PID1.nft.sh b/test/units/TEST-07-PID1.nft.sh
new file mode 100755 (executable)
index 0000000..dbfefc2
--- /dev/null
@@ -0,0 +1,71 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+set -eux
+set -o pipefail
+
+if ! command -v nft >/dev/null; then
+    echo "nftables is not installed. Skipped NFTSet= tests."
+    exit 0
+fi
+
+RUN_OUT="$(mktemp)"
+
+run() {
+    "$@" |& tee "$RUN_OUT"
+}
+
+nft add table inet sd_test
+nft add set inet sd_test c '{ type cgroupsv2; }'
+nft add set inet sd_test u '{ typeof meta skuid; }'
+nft add set inet sd_test g '{ typeof meta skgid; }'
+
+# service
+systemd-run --unit test-nft.service --service-type=exec -p DynamicUser=yes \
+            -p 'NFTSet=cgroup:inet:sd_test:c user:inet:sd_test:u group:inet:sd_test:g' sleep 10000
+run nft list set inet sd_test c
+grep -qF "test-nft.service" "$RUN_OUT"
+uid=$(userdbctl user --json=short test-nft | jq .uid)
+run nft list set inet sd_test u
+grep -qF "$uid" "$RUN_OUT"
+gid=$(userdbctl user --json=short test-nft | jq .gid)
+run nft list set inet sd_test g
+grep -qF "$gid" "$RUN_OUT"
+systemctl stop test-nft.service
+
+# scope
+run systemd-run --scope -u test-nft.scope -p 'NFTSet=cgroup:inet:sd_test:c' nft list set inet sd_test c
+grep -qF "test-nft.scope" "$RUN_OUT"
+
+mkdir -p /run/systemd/system
+# socket
+{
+    echo "[Socket]"
+    echo "ListenStream=12345"
+    echo "BindToDevice=lo"
+    echo "NFTSet=cgroup:inet:sd_test:c"
+} >/run/systemd/system/test-nft.socket
+{
+    echo "[Service]"
+    echo "ExecStart=sleep 10000"
+} >/run/systemd/system/test-nft.service
+systemctl daemon-reload
+systemctl start test-nft.socket
+systemctl status test-nft.socket
+run nft list set inet sd_test c
+grep -qF "test-nft.socket" "$RUN_OUT"
+systemctl stop test-nft.socket
+rm -f /run/systemd/system/test-nft.{socket,service}
+
+# slice
+mkdir /run/systemd/system/system.slice.d
+{
+    echo "[Slice]"
+    echo "NFTSet=cgroup:inet:sd_test:c"
+} >/run/systemd/system/system.slice.d/00-test-nft.conf
+systemctl daemon-reload
+run nft list set inet sd_test c
+grep -qF "system.slice" "$RUN_OUT"
+rm -rf /run/systemd/system/system.slice.d
+
+nft flush ruleset
+exit 0
index a9504f5d1cfbf5a08cc0fe001f073687d0fb36e0..35ca98d07f00c0b0c289ab286849a038b915c4fa 100755 (executable)
@@ -951,7 +951,7 @@ testcase_10_resolvectl_json() {
 # Test serve stale feature and NFTSet= if nftables is installed
 testcase_11_nft() {
     if ! command -v nft >/dev/null; then
-        echo "nftables is not installed. Skipped serve stale feature and NFTSet= tests."
+        echo "nftables is not installed. Skipped serve stale feature tests."
         return 0
     fi
 
@@ -1013,62 +1013,6 @@ testcase_11_nft() {
     grep -qE "NXDOMAIN" "$RUN_OUT"
 
     nft flush ruleset
-
-    ### NFTSet= test
-    nft add table inet sd_test
-    nft add set inet sd_test c '{ type cgroupsv2; }'
-    nft add set inet sd_test u '{ typeof meta skuid; }'
-    nft add set inet sd_test g '{ typeof meta skgid; }'
-
-    # service
-    systemd-run --unit test-nft.service --service-type=exec -p DynamicUser=yes \
-                -p 'NFTSet=cgroup:inet:sd_test:c user:inet:sd_test:u group:inet:sd_test:g' sleep 10000
-    run nft list set inet sd_test c
-    grep -qF "test-nft.service" "$RUN_OUT"
-    uid=$(getent passwd test-nft | cut -d':' -f3)
-    run nft list set inet sd_test u
-    grep -qF "$uid" "$RUN_OUT"
-    gid=$(getent passwd test-nft | cut -d':' -f4)
-    run nft list set inet sd_test g
-    grep -qF "$gid" "$RUN_OUT"
-    systemctl stop test-nft.service
-
-    # scope
-    run systemd-run --scope -u test-nft.scope -p 'NFTSet=cgroup:inet:sd_test:c' nft list set inet sd_test c
-    grep -qF "test-nft.scope" "$RUN_OUT"
-
-    mkdir -p /run/systemd/system
-    # socket
-    {
-        echo "[Socket]"
-        echo "ListenStream=12345"
-        echo "BindToDevice=lo"
-        echo "NFTSet=cgroup:inet:sd_test:c"
-    } >/run/systemd/system/test-nft.socket
-    {
-        echo "[Service]"
-        echo "ExecStart=sleep 10000"
-    } >/run/systemd/system/test-nft.service
-    systemctl daemon-reload
-    systemctl start test-nft.socket
-    systemctl status test-nft.socket
-    run nft list set inet sd_test c
-    grep -qF "test-nft.socket" "$RUN_OUT"
-    systemctl stop test-nft.socket
-    rm -f /run/systemd/system/test-nft.{socket,service}
-
-    # slice
-    mkdir /run/systemd/system/system.slice.d
-    {
-        echo "[Slice]"
-        echo "NFTSet=cgroup:inet:sd_test:c"
-    } >/run/systemd/system/system.slice.d/00-test-nft.conf
-    systemctl daemon-reload
-    run nft list set inet sd_test c
-    grep -qF "system.slice" "$RUN_OUT"
-    rm -rf /run/systemd/system/system.slice.d
-
-    nft flush ruleset
 }
 
 # Test resolvectl show-server-state