diff options
author | Daan De Meyer <daan.j.demeyer@gmail.com> | 2023-05-31 14:48:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-31 14:48:42 +0200 |
commit | 2533fdd0fbe71e4a3fa7a2cca9830cd864fb9136 (patch) | |
tree | f1bf86b550929b78ceeffcd8a426cadb94f2c0ae /test | |
parent | Merge pull request #26969 from DaanDeMeyer/xopenat-label (diff) | |
parent | Fix failing test (diff) | |
download | systemd-2533fdd0fbe71e4a3fa7a2cca9830cd864fb9136.tar.xz systemd-2533fdd0fbe71e4a3fa7a2cca9830cd864fb9136.zip |
Merge pull request #27766 from rphibel/cleanup-cgroups-before-cleaning-units
Don't GC unit if it is in cgroup_empty_queue
Diffstat (limited to 'test')
-rwxr-xr-x | test/units/testsuite-19.cleanup-slice.sh | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/test/units/testsuite-19.cleanup-slice.sh b/test/units/testsuite-19.cleanup-slice.sh new file mode 100755 index 0000000000..5d63160334 --- /dev/null +++ b/test/units/testsuite-19.cleanup-slice.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: LGPL-2.1-or-later +set -eux +set -o pipefail + +# shellcheck source=test/units/util.sh +. "$(dirname "$0")"/util.sh + +export SYSTEMD_LOG_LEVEL=debug + +# Create service with KillMode=none inside a slice +cat <<EOF >/run/systemd/system/test19cleanup.service +[Unit] +Description=Test 19 cleanup Service +[Service] +Slice=test19cleanup.slice +Type=exec +ExecStart=sleep infinity +KillMode=none +EOF +cat <<EOF >/run/systemd/system/test19cleanup.slice +[Unit] +Description=Test 19 cleanup Slice +EOF + +# Start service +systemctl start test19cleanup.service +assert_rc 0 systemd-cgls /test19cleanup.slice + +pid=$(systemctl show --property MainPID --value test19cleanup) +ps "$pid" + +# Stop slice +# The sleep process will not be killed because of KillMode=none +# Since there is still a process running under it, the /test19cleanup.slice cgroup won't be removed +systemctl stop test19cleanup.slice + +ps "$pid" + +# Kill sleep process manually +kill -s TERM "$pid" +while kill -0 "$pid" 2>/dev/null; do sleep 0.1; done + +timeout 30 bash -c 'while systemd-cgls /test19cleanup.slice/test19cleanup.service >& /dev/null; do sleep .5; done' +assert_rc 1 systemd-cgls /test19cleanup.slice/test19cleanup.service + +# Check that empty cgroup /test19cleanup.slice has been removed +timeout 30 bash -c 'while systemd-cgls /test19cleanup.slice >& /dev/null; do sleep .5; done' +assert_rc 1 systemd-cgls /test19cleanup.slice |