1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-22 17:35:35 +03:00

test: add test for new "systemctl --kill-value=" functionality

(as side-effect this also tests the new systemd-notify --exec switch)
This commit is contained in:
Lennart Poettering 2023-02-16 16:31:02 +01:00
parent c4ef4df417
commit dd131fcf8c
4 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1 @@
../TEST-01-BASIC/Makefile

10
test/TEST-78-SIGQUEUE/test.sh Executable file
View File

@ -0,0 +1,10 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
TEST_DESCRIPTION="Test queue signal logic"
# shellcheck source=test/test-functions
. "$TEST_BASE_DIR/test-functions"
do_test "$@"

View File

@ -0,0 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
Description=TEST-78-SIGQUEUE
[Service]
Type=oneshot
ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh

36
test/units/testsuite-78.sh Executable file
View File

@ -0,0 +1,36 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -ex
set -o pipefail
if ! env --block-signal=SIGUSR1 true 2> /dev/null ; then
echo "env tool too old, can't block signals, skipping test." >&2
echo OK >/testok
exit 0
fi
systemd-analyze log-level debug
UNIT="test-sigqueue-$RANDOM.service"
systemd-run -u "$UNIT" -p Type=notify -p DynamicUser=1 -- env --block-signal=SIGRTMIN+7 systemd-notify --exec --ready \; sleep infinity
systemctl kill --kill-whom=main --kill-value=4 --signal=SIGRTMIN+7 "$UNIT"
systemctl kill --kill-whom=main --kill-value=4 --signal=SIGRTMIN+7 "$UNIT"
systemctl kill --kill-whom=main --kill-value=7 --signal=SIGRTMIN+7 "$UNIT"
systemctl kill --kill-whom=main --kill-value=16 --signal=SIGRTMIN+7 "$UNIT"
systemctl kill --kill-whom=main --kill-value=32 --signal=SIGRTMIN+7 "$UNIT"
systemctl kill --kill-whom=main --kill-value=16 --signal=SIGRTMIN+7 "$UNIT"
# We simply check that six signals are queued now. There's no easy way to check
# from shell wich ones those are, hence we don't check that.
P=$(systemctl show -P MainPID "$UNIT")
test "$(grep SigQ: /proc/"$P"/status | cut -d: -f2 | cut -d/ -f1)" -eq 6
systemctl stop $UNIT
systemd-analyze log-level info
echo OK >/testok
exit 0