From 8cf772edc154a495837ce46f320124af436c867b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 30 Jun 2025 14:54:36 +0200 Subject: [PATCH] test: add testcase for subcgroup killing --- test/units/TEST-07-PID1.subgroup-kill.sh | 39 ++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 test/units/TEST-07-PID1.subgroup-kill.sh diff --git a/test/units/TEST-07-PID1.subgroup-kill.sh b/test/units/TEST-07-PID1.subgroup-kill.sh new file mode 100755 index 00000000000..f62340e7ea4 --- /dev/null +++ b/test/units/TEST-07-PID1.subgroup-kill.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: LGPL-2.1-or-later +# shellcheck disable=SC2016 +set -eux +set -o pipefail + +# shellcheck source=test/units/test-control.sh +. "$(dirname "$0")"/test-control.sh +# shellcheck source=test/units/util.sh +. "$(dirname "$0")"/util.sh + +at_exit() { + loginctl disable-linger testuser ||: + run0 -u testuser systemctl --user stop subgroup-test.service ||: +} + +trap at_exit EXIT + +loginctl enable-linger testuser +run0 -u testuser systemd-run --user --unit=subgroup-test.service sleep infinity + +systemctl kill user@"$(id -u testuser)".service --kill-subgroup=waldo +systemctl kill user@"$(id -u testuser)".service --kill-subgroup=/waldo +systemctl kill user@"$(id -u testuser)".service --kill-subgroup=waldo/knurz +systemctl kill user@"$(id -u testuser)".service --kill-subgroup=/waldo/knurz + +(! systemctl kill user@"$(id -u testuser)".service --kill-subgroup=waldo --kill-whom=cgroup-fail) +(! systemctl kill user@"$(id -u testuser)".service --kill-subgroup=/waldo --kill-whom=cgroup-fail) +(! systemctl kill user@"$(id -u testuser)".service --kill-subgroup=waldo/knurz --kill-whom=cgroup-fail) +(! systemctl kill user@"$(id -u testuser)".service --kill-subgroup=/waldo/knurz --kill-whom=cgroup-fail) + +run0 -u testuser systemctl --user is-active subgroup-test.service +(! systemctl kill user@"$(id -u testuser)".service --kill-subgroup=app.slice/subgroup-test.service/waldo --kill-whom=cgroup-fail) +run0 -u testuser systemctl --user is-active subgroup-test.service +systemctl kill user@"$(id -u testuser)".service --kill-subgroup=app.slice/subgroup-test.service/waldo +run0 -u testuser systemctl --user is-active subgroup-test.service +systemctl kill user@"$(id -u testuser)".service --kill-subgroup=app.slice/subgroup-test.service --kill-whom=cgroup-fail + +timeout 60 bash -c 'while run0 -u testuser systemctl --user is-active subgroup-test.service ; do sleep 1 ; done' -- 2.47.3