diff options
author | Frantisek Sumsal <frantisek@sumsal.cz> | 2023-05-16 19:26:42 +0200 |
---|---|---|
committer | Frantisek Sumsal <frantisek@sumsal.cz> | 2023-05-16 22:43:52 +0200 |
commit | fb03fea2a277620e82f1744f3d52d9fb7fa8de49 (patch) | |
tree | 888b5c662bc4b5f6e17c54fb883862f183ad0cf9 | |
parent | 3999ea001a70c8efc48115737e9c5b3c03d3640f (diff) | |
download | systemd-fb03fea2a277620e82f1744f3d52d9fb7fa8de49.tar.gz |
test: merge TEST-56-EXIT-TYPE into TEST-19-CGROUP
And clean it up a bit.
l--------- | test/TEST-56-EXIT-TYPE/Makefile | 1 | ||||
-rwxr-xr-x | test/TEST-56-EXIT-TYPE/test.sh | 14 | ||||
-rwxr-xr-x | test/units/testsuite-19.ExitType-cgroup.sh | 102 | ||||
-rw-r--r-- | test/units/testsuite-56.service | 6 | ||||
-rwxr-xr-x | test/units/testsuite-56.sh | 78 |
5 files changed, 102 insertions, 99 deletions
diff --git a/test/TEST-56-EXIT-TYPE/Makefile b/test/TEST-56-EXIT-TYPE/Makefile deleted file mode 120000 index e9f93b1104..0000000000 --- a/test/TEST-56-EXIT-TYPE/Makefile +++ /dev/null @@ -1 +0,0 @@ -../TEST-01-BASIC/Makefile
\ No newline at end of file diff --git a/test/TEST-56-EXIT-TYPE/test.sh b/test/TEST-56-EXIT-TYPE/test.sh deleted file mode 100755 index 37475e817e..0000000000 --- a/test/TEST-56-EXIT-TYPE/test.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash -set -e - -TEST_DESCRIPTION="test ExitType=cgroup" - -# shellcheck source=test/test-functions -. "${TEST_BASE_DIR:?}/test-functions" - -if [[ "$(get_cgroup_hierarchy)" != unified ]]; then - echo "This test requires unified cgroup hierarchy, skipping..." - exit 0 -fi - -do_test "$@" diff --git a/test/units/testsuite-19.ExitType-cgroup.sh b/test/units/testsuite-19.ExitType-cgroup.sh new file mode 100755 index 0000000000..cd221d74ef --- /dev/null +++ b/test/units/testsuite-19.ExitType-cgroup.sh @@ -0,0 +1,102 @@ +#!/usr/bin/env bash +set -eux + +# Test ExitType=cgroup + +# shellcheck source=test/units/util.sh +. "$(dirname "$0")"/util.sh + +if [[ "$(get_cgroup_hierarchy)" != unified ]]; then + echo "Skipping $0 as we're not running with the unified cgroup hierarchy" + exit 0 +fi + +systemd-analyze log-level debug + +# Multiple level process tree, parent process stays up +cat >/tmp/test19-exit-cgroup.sh <<EOF +#!/usr/bin/env bash +set -eux + +# process tree: systemd -> sleep +sleep infinity & +disown + +# process tree: systemd -> bash -> bash -> sleep +((sleep infinity); true) & + +systemd-notify --ready + +# Run the stop/kill command +\$1 & + +# process tree: systemd -> bash -> sleep +sleep infinity +EOF +chmod +x /tmp/test19-exit-cgroup.sh + +# service should be stopped cleanly +systemd-run --wait \ + --unit=one \ + --property="Type=notify" \ + --property="ExitType=cgroup" \ + /tmp/test19-exit-cgroup.sh 'systemctl stop one' + +# same thing with a truthy exec condition +systemd-run --wait \ + --unit=two \ + --property="Type=notify" \ + --property="ExitType=cgroup" \ + --property="ExecCondition=true" \ + /tmp/test19-exit-cgroup.sh 'systemctl stop two' + +# false exec condition: systemd-run should exit immediately with status code: 1 +(! systemd-run --wait \ + --unit=three \ + --property="Type=notify" \ + --property="ExitType=cgroup" \ + --property="ExecCondition=false" \ + /tmp/test19-exit-cgroup.sh) + +# service should exit uncleanly (main process exits with SIGKILL) +(! systemd-run --wait \ + --unit=four \ + --property="Type=notify" \ + --property="ExitType=cgroup" \ + /tmp/test19-exit-cgroup.sh 'systemctl kill --signal 9 four') + + +# Multiple level process tree, parent process exits quickly +cat >/tmp/test19-exit-cgroup-parentless.sh <<EOF +#!/usr/bin/env bash +set -eux + +# process tree: systemd -> sleep +sleep infinity & + +# process tree: systemd -> bash -> sleep +((sleep infinity); true) & + +systemd-notify --ready + +# Run the stop/kill command after this bash process exits +(sleep 1; \$1) & +EOF +chmod +x /tmp/test19-exit-cgroup-parentless.sh + +# service should be stopped cleanly +systemd-run --wait \ + --unit=five \ + --property="Type=notify" \ + --property="ExitType=cgroup" \ + /tmp/test19-exit-cgroup-parentless.sh 'systemctl stop five' + +# service should still exit cleanly despite SIGKILL (the main process already exited cleanly) +systemd-run --wait \ + --unit=six \ + --property="Type=notify" \ + --property="ExitType=cgroup" \ + /tmp/test19-exit-cgroup-parentless.sh 'systemctl kill --signal 9 six' + + +systemd-analyze log-level info diff --git a/test/units/testsuite-56.service b/test/units/testsuite-56.service deleted file mode 100644 index d8ad589ca0..0000000000 --- a/test/units/testsuite-56.service +++ /dev/null @@ -1,6 +0,0 @@ -[Unit] -Description=TEST-56-EXIT-TYPE - -[Service] -ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh -Type=oneshot diff --git a/test/units/testsuite-56.sh b/test/units/testsuite-56.sh deleted file mode 100755 index f81c6ddf1f..0000000000 --- a/test/units/testsuite-56.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env bash -set -eux - -systemd-analyze log-level debug - -# Multiple level process tree, parent process stays up -cat >/tmp/test56-exit-cgroup.sh <<EOF -#!/usr/bin/env bash -set -eux - -# process tree: systemd -> sleep -sleep infinity & -disown - -# process tree: systemd -> bash -> bash -> sleep -((sleep infinity); true) & - -systemd-notify --ready - -# Run the stop/kill command -\$1 & - -# process tree: systemd -> bash -> sleep -sleep infinity -EOF -chmod +x /tmp/test56-exit-cgroup.sh - -# service should be stopped cleanly -systemd-run --wait --unit=one -p Type=notify -p ExitType=cgroup \ - /tmp/test56-exit-cgroup.sh 'systemctl stop one' - -# same thing with a truthy exec condition -systemd-run --wait --unit=two -p Type=notify -p ExitType=cgroup \ - -p ExecCondition=true \ - /tmp/test56-exit-cgroup.sh 'systemctl stop two' - -# false exec condition: systemd-run should exit immediately with status code: 1 -(! systemd-run --wait --unit=three -p Type=notify -p ExitType=cgroup \ - -p ExecCondition=false \ - /tmp/test56-exit-cgroup.sh) - -# service should exit uncleanly (main process exits with SIGKILL) -(! systemd-run --wait --unit=four -p Type=notify -p ExitType=cgroup \ - /tmp/test56-exit-cgroup.sh 'systemctl kill --signal 9 four') - - -# Multiple level process tree, parent process exits quickly -cat >/tmp/test56-exit-cgroup-parentless.sh <<EOF -#!/usr/bin/env bash -set -eux - -# process tree: systemd -> sleep -sleep infinity & - -# process tree: systemd -> bash -> sleep -((sleep infinity); true) & - -systemd-notify --ready - -# Run the stop/kill command after this bash process exits -(sleep 1; \$1) & -EOF -chmod +x /tmp/test56-exit-cgroup-parentless.sh - -# service should be stopped cleanly -systemd-run --wait --unit=five -p Type=notify -p ExitType=cgroup \ - /tmp/test56-exit-cgroup-parentless.sh 'systemctl stop five' - -# service should still exit cleanly despite SIGKILL (the main process already exited cleanly) -systemd-run --wait --unit=six -p Type=notify -p ExitType=cgroup \ - /tmp/test56-exit-cgroup-parentless.sh 'systemctl kill --signal 9 six' - - -systemd-analyze log-level info - -echo OK >/testok - -exit 0 |