From: Mike Yuan Date: Tue, 21 Mar 2023 19:40:52 +0000 (+0800) Subject: test: add tests for NOTIFYACCESS override through sd_notify X-Git-Tag: v254-rc1~947^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F26214%2Fhead;p=thirdparty%2Fsystemd.git test: add tests for NOTIFYACCESS override through sd_notify --- diff --git a/test/TEST-80-NOTIFYACCESS/Makefile b/test/TEST-80-NOTIFYACCESS/Makefile new file mode 120000 index 00000000000..e9f93b1104c --- /dev/null +++ b/test/TEST-80-NOTIFYACCESS/Makefile @@ -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 index 00000000000..b4d2452b750 --- /dev/null +++ b/test/TEST-80-NOTIFYACCESS/test.sh @@ -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 "$@" diff --git a/test/meson.build b/test/meson.build index 1d9ea4905a4..1135ecd920e 100644 --- a/test/meson.build +++ b/test/meson.build @@ -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 index 00000000000..196b0766720 --- /dev/null +++ b/test/testsuite-80.units/notify.service @@ -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 index 00000000000..3ca71d56488 --- /dev/null +++ b/test/testsuite-80.units/test.sh @@ -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 index 00000000000..4c7f5d5ebd3 --- /dev/null +++ b/test/units/testsuite-80.service @@ -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 index 00000000000..5f57569b076 --- /dev/null +++ b/test/units/testsuite-80.sh @@ -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