diff options
Diffstat (limited to 'test/units/TEST-23-UNIT-FILE.ExtraFileDescriptors.sh')
-rwxr-xr-x | test/units/TEST-23-UNIT-FILE.ExtraFileDescriptors.sh | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/units/TEST-23-UNIT-FILE.ExtraFileDescriptors.sh b/test/units/TEST-23-UNIT-FILE.ExtraFileDescriptors.sh new file mode 100755 index 0000000000..cf5c240908 --- /dev/null +++ b/test/units/TEST-23-UNIT-FILE.ExtraFileDescriptors.sh @@ -0,0 +1,56 @@ +#!/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 + +at_exit() { + set +e + + rm -rf /tmp/test-extra-fd/ +} + +trap at_exit EXIT + +mkdir /tmp/test-extra-fd +echo "Hello" > /tmp/test-extra-fd/1.txt +echo "Extra" > /tmp/test-extra-fd/2.txt + +systemd-analyze log-level debug + +# Open files and assign FD to variables +exec {TEST_FD1}</tmp/test-extra-fd/1.txt +exec {TEST_FD2}</tmp/test-extra-fd/2.txt + +TEST_UNIT="test-23-extra-fd.service" + +busctl call \ + org.freedesktop.systemd1 /org/freedesktop/systemd1 \ + org.freedesktop.systemd1.Manager StartTransientUnit \ + "ssa(sv)a(sa(sv))" "$TEST_UNIT" replace 4 \ + ExecStart "a(sasb)" 1 \ + /usr/lib/systemd/tests/testdata/units/TEST-23-UNIT-FILE-openfile-child.sh \ + 5 /usr/lib/systemd/tests/testdata/units/TEST-23-UNIT-FILE-openfile-child.sh 2 "test:other" "Hello" "Extra" \ + true \ + RemainAfterExit "b" true \ + Type "s" oneshot \ + ExtraFileDescriptors "a(hs)" 2 \ + "$TEST_FD1" test \ + "$TEST_FD2" other \ + 0 + +cmp -b <(systemctl show -p ExtraFileDescriptorNames "$TEST_UNIT") <<EOF +ExtraFileDescriptorNames=test other +EOF + +# shellcheck disable=SC2016 +timeout 10s bash -xec 'while [[ "$(systemctl show -P SubState test-23-extra-fd.service)" != "exited" ]]; do sleep .5; done' + +assert_eq "$(systemctl show -P Result "$TEST_UNIT")" "success" +assert_eq "$(systemctl show -P ExecMainStatus "$TEST_UNIT")" "0" + +systemctl stop "$TEST_UNIT" + +systemctl log-level info |