]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: add tests for NOTIFYACCESS override through sd_notify 26214/head
authorMike Yuan <me@yhndnzj.com>
Tue, 21 Mar 2023 19:40:52 +0000 (03:40 +0800)
committerMike Yuan <me@yhndnzj.com>
Wed, 22 Mar 2023 11:22:10 +0000 (19:22 +0800)
test/TEST-80-NOTIFYACCESS/Makefile [new symlink]
test/TEST-80-NOTIFYACCESS/test.sh [new file with mode: 0755]
test/meson.build
test/testsuite-80.units/notify.service [new file with mode: 0644]
test/testsuite-80.units/test.sh [new file with mode: 0755]
test/units/testsuite-80.service [new file with mode: 0644]
test/units/testsuite-80.sh [new file with mode: 0755]

diff --git a/test/TEST-80-NOTIFYACCESS/Makefile b/test/TEST-80-NOTIFYACCESS/Makefile
new file mode 120000 (symlink)
index 0000000..e9f93b1
--- /dev/null
@@ -0,0 +1 @@
+../TEST-01-BASIC/Makefile
\ No newline at end of file
diff --git a/test/TEST-80-NOTIFYACCESS/test.sh b/test/TEST-80-NOTIFYACCESS/test.sh
new file mode 100755 (executable)
index 0000000..b4d2452
--- /dev/null
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+set -e
+
+TEST_DESCRIPTION="test NotifyAccess through sd-notify"
+TEST_NO_QEMU=1
+
+# shellcheck source=test/test-functions
+. "${TEST_BASE_DIR:?}/test-functions"
+
+do_test "$@"
index 1d9ea4905a4b384a5ffab8e05c5bc776459db482..1135ecd920e7de199325c158c9ef72a6df86686d 100644 (file)
@@ -57,6 +57,9 @@ if install_tests
         install_subdir('testsuite-63.units',
                        exclude_files : '.gitattributes',
                        install_dir : testdata_dir)
+        install_subdir('testsuite-80.units',
+                       exclude_files : '.gitattributes',
+                       install_dir : testdata_dir)
 
         install_data(kbd_model_map,
                      install_dir : testdata_dir + '/test-keymap-util')
diff --git a/test/testsuite-80.units/notify.service b/test/testsuite-80.units/notify.service
new file mode 100644 (file)
index 0000000..196b076
--- /dev/null
@@ -0,0 +1,4 @@
+[Service]
+Type=notify
+NotifyAccess=all
+ExecStart=/usr/lib/systemd/tests/testdata/testsuite-80.units/test.sh
diff --git a/test/testsuite-80.units/test.sh b/test/testsuite-80.units/test.sh
new file mode 100755 (executable)
index 0000000..3ca71d5
--- /dev/null
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+# shellcheck disable=SC2016
+set -eux
+set -o pipefail
+
+systemd-notify --status="Test starts, waiting for 5 seconds"
+sleep 5
+
+(
+    systemd-notify --pid=auto
+    systemd-notify "NOTIFYACCESS=main"
+
+    systemd-notify --status="Sending READY=1 in an unpriviledged process"
+    (
+        sleep 0.1
+        systemd-notify --ready
+    )
+    sleep 10
+
+    systemd-notify "MAINPID=$$"
+)
+
+systemd-notify --ready --status="OK"
+systemd-notify "NOTIFYACCESS=none"
+sleep infinity
diff --git a/test/units/testsuite-80.service b/test/units/testsuite-80.service
new file mode 100644 (file)
index 0000000..4c7f5d5
--- /dev/null
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Unit]
+Description=TEST-80-NOTIFYACCESS
+
+[Service]
+ExecStartPre=rm -f /failed /testok
+ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
+Type=oneshot
diff --git a/test/units/testsuite-80.sh b/test/units/testsuite-80.sh
new file mode 100755 (executable)
index 0000000..5f57569
--- /dev/null
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+# shellcheck disable=SC2016
+set -eux
+set -o pipefail
+
+# shellcheck source=test/units/assert.sh
+. "$(dirname "$0")"/assert.sh
+
+: >/failed
+
+systemctl --no-block start notify.service
+sleep 2
+
+assert_eq "$(systemctl show notify.service -p StatusText --value)" "Test starts, waiting for 5 seconds"
+assert_eq "$(systemctl show notify.service -p NotifyAccess --value)" "all"
+sleep 5
+
+assert_eq "$(systemctl show notify.service -p NotifyAccess --value)" "main"
+assert_eq "$(systemctl show notify.service -p StatusText --value)" "Sending READY=1 in an unpriviledged process"
+assert_rc 3 systemctl --quiet is-active notify.service
+sleep 10
+
+systemctl --quiet is-active notify.service
+assert_eq "$(systemctl show notify.service -p StatusText --value)" "OK"
+assert_eq "$(systemctl show notify.service -p NotifyAccess --value)" "none"
+
+systemctl stop notify.service
+assert_eq "$(systemctl show notify.service -p NotifyAccess --value)" "all"
+
+touch /testok
+rm /failed