Merge pull request #27087 from mrc0mmand/missing-coverage

test: set ReadWritePaths= for test-.services when built w/ coverage
This commit is contained in:
Frantisek Sumsal
2023-04-01 18:59:42 +02:00
committed by GitHub
8 changed files with 251 additions and 212 deletions
+36
View File
@@ -262,3 +262,39 @@ More about query suites here: https://codeql.github.com/docs/codeql-cli/creating
The results are then located in the `results.csv` file as a comma separated
values list (obviously), which is the most human-friendly output format the
CodeQL utility provides (so far).
Code coverage
=============
We have a daily cron job in CentOS CI which runs all unit and integration tests,
collects coverage using gcov/lcov, and uploads the report to Coveralls[0]. In
order to collect the most accurate coverage information, some measures have
to be taken regarding sandboxing, namely:
- ProtectSystem= and ProtectHome= need to be turned off
- the $BUILD_DIR with necessary .gcno files needs to be present in the image
and needs to be writable by all processes
The first point is relatively easy to handle and is handled automagically by
our test "framework" by creating necessary dropins.
Making the $BUILD_DIR accessible to _everything_ is slightly more complicated.
First, and foremost, the $BUILD_DIR has a POSIX ACL that makes it writable
to everyone. However, this is not enough in some cases, like for services
that use DynamicUser=yes, since that implies ProtectSystem=strict that can't
be turned off. A solution to this is to use ReadWritePaths=$BUILD_DIR, which
works for the majority of cases, but can't be turned on globally, since
ReadWritePaths= creates its own mount namespace which might break some
services. Hence, the ReadWritePaths=$BUILD_DIR is enabled for all services
with the `test-` prefix (i.e. test-foo.service or test-foo-bar.service), both
in the system and the user managers.
So, if you're considering writing an integration test that makes use
of DynamicUser=yes, or other sandboxing stuff that implies it, please prefix
the test unit (be it a static one or a transient one created via systemd-run),
with `test-`, unless the test unit needs to be able to install mount points
in the main mount namespace - in that case use IGNORE_MISSING_COVERAGE=yes
in the test definition (i.e. TEST-*-NAME/test.sh), which will skip the post-test
check for missing coverage for the respective test.
[0] https://coveralls.io/github/systemd/systemd
-2
View File
@@ -3,8 +3,6 @@
set -e
TEST_DESCRIPTION="Test queue signal logic"
# Ignore gcov complaints caused by DynamicUser=true
IGNORE_MISSING_COVERAGE=yes
# shellcheck source=test/test-functions
. "$TEST_BASE_DIR/test-functions"
-2
View File
@@ -3,8 +3,6 @@
set -e
TEST_DESCRIPTION="Test Memory Pressure handling"
# Ignore gcov complaints caused by DynamicUser=true
IGNORE_MISSING_COVERAGE=yes
# shellcheck source=test/test-functions
. "$TEST_BASE_DIR/test-functions"
+8 -5
View File
@@ -1241,11 +1241,14 @@ install_systemd() {
mkdir -p "$initdir/etc/systemd/system/service.d/"
echo -e "[Service]\nProtectSystem=no\nProtectHome=no\n" >"$initdir/etc/systemd/system/service.d/99-gcov-override.conf"
# Similarly, set ReadWritePaths= to the $BUILD_DIR in the test image
# to make the coverage work with units utilizing DynamicUser=yes. Do
# this only for services from TEST-20, as setting this system-wide
# has many undesirable side-effects
mkdir -p "$initdir/etc/systemd/system/test20-.service.d/"
echo -e "[Service]\nReadWritePaths=${BUILD_DIR:?}\n" >"$initdir/etc/systemd/system/test20-.service.d/99-gcov-rwpaths-override.conf"
# to make the coverage work with units using DynamicUser=yes. Do this
# only for services with test- prefix, as setting this system-wide
# has many undesirable side-effects, as it creates its own namespace.
mkdir -p "$initdir/etc/systemd/system/test-.service.d/"
echo -e "[Service]\nReadWritePaths=${BUILD_DIR:?}\n" >"$initdir/etc/systemd/system/test-.service.d/99-gcov-rwpaths-override.conf"
# Ditto, but for the user daemon
mkdir -p "$initdir/etc/systemd/user/test-.service.d/"
echo -e "[Service]\nReadWritePaths=${BUILD_DIR:?}\n" >"$initdir/etc/systemd/user/test-.service.d/99-gcov-rwpaths-override.conf"
fi
# If we're built with -Dportabled=false, tests with systemd-analyze
+15 -15
View File
@@ -7,37 +7,37 @@ test_scope_unpriv_delegation() {
useradd test ||:
trap "userdel -r test" RETURN
systemd-run --uid=test -p User=test -p Delegate=yes --slice workload.slice --unit workload0.scope --scope \
test -w /sys/fs/cgroup/workload.slice/workload0.scope -a \
-w /sys/fs/cgroup/workload.slice/workload0.scope/cgroup.procs -a \
-w /sys/fs/cgroup/workload.slice/workload0.scope/cgroup.subtree_control
systemd-run --uid=test -p User=test -p Delegate=yes --slice workload.slice --unit test-workload0.scope --scope \
test -w /sys/fs/cgroup/workload.slice/test-workload0.scope -a \
-w /sys/fs/cgroup/workload.slice/test-workload0.scope/cgroup.procs -a \
-w /sys/fs/cgroup/workload.slice/test-workload0.scope/cgroup.subtree_control
}
if grep -q cgroup2 /proc/filesystems ; then
systemd-run --wait --unit=test0.service -p "DynamicUser=1" -p "Delegate=" \
test -w /sys/fs/cgroup/system.slice/test0.service/ -a \
-w /sys/fs/cgroup/system.slice/test0.service/cgroup.procs -a \
-w /sys/fs/cgroup/system.slice/test0.service/cgroup.subtree_control
systemd-run --wait --unit=test-0.service -p "DynamicUser=1" -p "Delegate=" \
test -w /sys/fs/cgroup/system.slice/test-0.service/ -a \
-w /sys/fs/cgroup/system.slice/test-0.service/cgroup.procs -a \
-w /sys/fs/cgroup/system.slice/test-0.service/cgroup.subtree_control
systemd-run --wait --unit=test1.service -p "DynamicUser=1" -p "Delegate=memory pids" \
grep -q memory /sys/fs/cgroup/system.slice/test1.service/cgroup.controllers
systemd-run --wait --unit=test-1.service -p "DynamicUser=1" -p "Delegate=memory pids" \
grep -q memory /sys/fs/cgroup/system.slice/test-1.service/cgroup.controllers
systemd-run --wait --unit=test2.service -p "DynamicUser=1" -p "Delegate=memory pids" \
grep -q pids /sys/fs/cgroup/system.slice/test2.service/cgroup.controllers
systemd-run --wait --unit=test-2.service -p "DynamicUser=1" -p "Delegate=memory pids" \
grep -q pids /sys/fs/cgroup/system.slice/test-2.service/cgroup.controllers
# "io" is not among the controllers enabled by default for all units, verify that
grep -qv io /sys/fs/cgroup/system.slice/cgroup.controllers
# Run a service with "io" enabled, and verify it works
systemd-run --wait --unit=test3.service -p "IOAccounting=yes" -p "Slice=system-foo-bar-baz.slice" \
grep -q io /sys/fs/cgroup/system.slice/system-foo.slice/system-foo-bar.slice/system-foo-bar-baz.slice/test3.service/cgroup.controllers
systemd-run --wait --unit=test-3.service -p "IOAccounting=yes" -p "Slice=system-foo-bar-baz.slice" \
grep -q io /sys/fs/cgroup/system.slice/system-foo.slice/system-foo-bar.slice/system-foo-bar-baz.slice/test-3.service/cgroup.controllers
# We want to check if "io" is removed again from the controllers
# list. However, PID 1 (rightfully) does this asynchronously. In order
# to force synchronization on this, let's start a short-lived service
# which requires PID 1 to refresh the cgroup tree, so that we can
# verify that this all works.
systemd-run --wait --unit=test4.service true
systemd-run --wait --unit=test-4.service true
# And now check again, "io" should have vanished
grep -qv io /sys/fs/cgroup/system.slice/cgroup.controllers
+19 -19
View File
@@ -13,8 +13,8 @@ INTERNALPID=$!
disown
# Start a test process outside of our own cgroup
systemd-run -p DynamicUser=1 --unit=test20-sleep.service /bin/sleep infinity
EXTERNALPID="$(systemctl show -P MainPID test20-sleep.service)"
systemd-run -p DynamicUser=1 --unit=test-sleep.service /bin/sleep infinity
EXTERNALPID="$(systemctl show -P MainPID test-sleep.service)"
# Update our own main PID to the external test PID, this should work
systemd-notify MAINPID="$EXTERNALPID"
@@ -54,7 +54,7 @@ test "$(systemctl show -P MainPID testsuite-20.service)" -eq "$INTERNALPID"
systemd-notify --uid=1000 MAINPID=$$
test "$(systemctl show -P MainPID testsuite-20.service)" -eq $$
cat >/tmp/test20-mainpid.sh <<EOF
cat >/tmp/test-mainpid.sh <<EOF
#!/usr/bin/env bash
set -eux
@@ -73,12 +73,12 @@ disown
echo \$MAINPID >/run/mainpidsh/pid
EOF
chmod +x /tmp/test20-mainpid.sh
chmod +x /tmp/test-mainpid.sh
systemd-run --unit=test20-mainpidsh.service -p StandardOutput=tty -p StandardError=tty -p Type=forking -p RuntimeDirectory=mainpidsh -p PIDFile=/run/mainpidsh/pid /tmp/test20-mainpid.sh
test "$(systemctl show -P MainPID test20-mainpidsh.service)" -eq "$(cat /run/mainpidsh/pid)"
systemd-run --unit=test-mainpidsh.service -p StandardOutput=tty -p StandardError=tty -p Type=forking -p RuntimeDirectory=mainpidsh -p PIDFile=/run/mainpidsh/pid /tmp/test-mainpid.sh
test "$(systemctl show -P MainPID test-mainpidsh.service)" -eq "$(cat /run/mainpidsh/pid)"
cat >/tmp/test20-mainpid2.sh <<EOF
cat >/tmp/test-mainpid2.sh <<EOF
#!/usr/bin/env bash
set -eux
@@ -98,12 +98,12 @@ disown
echo \$MAINPID >/run/mainpidsh2/pid
chown 1001:1001 /run/mainpidsh2/pid
EOF
chmod +x /tmp/test20-mainpid2.sh
chmod +x /tmp/test-mainpid2.sh
systemd-run --unit=test20-mainpidsh2.service -p StandardOutput=tty -p StandardError=tty -p Type=forking -p RuntimeDirectory=mainpidsh2 -p PIDFile=/run/mainpidsh2/pid /tmp/test20-mainpid2.sh
test "$(systemctl show -P MainPID test20-mainpidsh2.service)" -eq "$(cat /run/mainpidsh2/pid)"
systemd-run --unit=test-mainpidsh2.service -p StandardOutput=tty -p StandardError=tty -p Type=forking -p RuntimeDirectory=mainpidsh2 -p PIDFile=/run/mainpidsh2/pid /tmp/test-mainpid2.sh
test "$(systemctl show -P MainPID test-mainpidsh2.service)" -eq "$(cat /run/mainpidsh2/pid)"
cat >/dev/shm/test20-mainpid3.sh <<EOF
cat >/dev/shm/test-mainpid3.sh <<EOF
#!/usr/bin/env bash
set -eux
@@ -124,11 +124,11 @@ ln -s ../mainpidsh/pid /run/mainpidsh3/pid
# Quick assertion that the link isn't dead
test -f /run/mainpidsh3/pid
EOF
chmod 755 /dev/shm/test20-mainpid3.sh
chmod 755 /dev/shm/test-mainpid3.sh
# This has to fail, as we shouldn't accept the dangerous PID file, and then
# inotify-wait on it to be corrected which we never do.
systemd-run --unit=test20-mainpidsh3.service \
systemd-run --unit=test-mainpidsh3.service \
-p StandardOutput=tty \
-p StandardError=tty \
-p Type=forking \
@@ -136,15 +136,15 @@ systemd-run --unit=test20-mainpidsh3.service \
-p PIDFile=/run/mainpidsh3/pid \
-p DynamicUser=1 \
-p TimeoutStartSec=2s \
/dev/shm/test20-mainpid3.sh \
/dev/shm/test-mainpid3.sh \
&& { echo 'unexpected success'; exit 1; }
# Test that this failed due to timeout, and not some other error
test "$(systemctl show -P Result test20-mainpidsh3.service)" = timeout
test "$(systemctl show -P Result test-mainpidsh3.service)" = timeout
# Test that scope units work
systemd-run --scope --unit test20-true.scope /bin/true
test "$(systemctl show -P Result test20-true.scope)" = success
systemd-run --scope --unit test-true.scope /bin/true
test "$(systemctl show -P Result test-true.scope)" = success
# Test that user scope units work as well
@@ -155,8 +155,8 @@ runas() {
}
systemctl start user@4711.service
runas testuser systemd-run --scope --user --unit test20-true.scope /bin/true
test "$(systemctl show -P Result test20-true.scope)" = success
runas testuser systemd-run --scope --user --unit test-true.scope /bin/true
test "$(systemctl show -P Result test-true.scope)" = success
systemd-analyze log-level info
+169 -169
View File
@@ -5,13 +5,13 @@
set -eux
set -o pipefail
cat >/etc/systemd/system/testservice.service <<EOF
cat >/etc/systemd/system/test-service.service <<EOF
[Service]
ConfigurationDirectory=testservice
RuntimeDirectory=testservice
StateDirectory=testservice
CacheDirectory=testservice
LogsDirectory=testservice
ConfigurationDirectory=test-service
RuntimeDirectory=test-service
StateDirectory=test-service
CacheDirectory=test-service
LogsDirectory=test-service
RuntimeDirectoryPreserve=yes
ExecStart=/bin/sleep infinity
Type=exec
@@ -19,70 +19,70 @@ EOF
systemctl daemon-reload
test ! -e /etc/testservice
test ! -e /run/testservice
test ! -e /var/lib/testservice
test ! -e /var/cache/testservice
test ! -e /var/log/testservice
test ! -e /etc/test-service
test ! -e /run/test-service
test ! -e /var/lib/test-service
test ! -e /var/cache/test-service
test ! -e /var/log/test-service
systemctl start testservice
systemctl start test-service
test -d /etc/testservice
test -d /run/testservice
test -d /var/lib/testservice
test -d /var/cache/testservice
test -d /var/log/testservice
test -d /etc/test-service
test -d /run/test-service
test -d /var/lib/test-service
test -d /var/cache/test-service
test -d /var/log/test-service
systemctl clean testservice && { echo 'unexpected success'; exit 1; }
systemctl clean test-service && { echo 'unexpected success'; exit 1; }
systemctl stop testservice
systemctl stop test-service
test -d /etc/testservice
test -d /run/testservice
test -d /var/lib/testservice
test -d /var/cache/testservice
test -d /var/log/testservice
test -d /etc/test-service
test -d /run/test-service
test -d /var/lib/test-service
test -d /var/cache/test-service
test -d /var/log/test-service
systemctl clean testservice --what=configuration
systemctl clean test-service --what=configuration
test ! -e /etc/testservice
test -d /run/testservice
test -d /var/lib/testservice
test -d /var/cache/testservice
test -d /var/log/testservice
test ! -e /etc/test-service
test -d /run/test-service
test -d /var/lib/test-service
test -d /var/cache/test-service
test -d /var/log/test-service
systemctl clean testservice
systemctl clean test-service
test ! -e /etc/testservice
test ! -e /run/testservice
test -d /var/lib/testservice
test ! -e /var/cache/testservice
test -d /var/log/testservice
test ! -e /etc/test-service
test ! -e /run/test-service
test -d /var/lib/test-service
test ! -e /var/cache/test-service
test -d /var/log/test-service
systemctl clean testservice --what=logs
systemctl clean test-service --what=logs
test ! -e /etc/testservice
test ! -e /run/testservice
test -d /var/lib/testservice
test ! -e /var/cache/testservice
test ! -e /var/log/testservice
test ! -e /etc/test-service
test ! -e /run/test-service
test -d /var/lib/test-service
test ! -e /var/cache/test-service
test ! -e /var/log/test-service
systemctl clean testservice --what=all
systemctl clean test-service --what=all
test ! -e /etc/testservice
test ! -e /run/testservice
test ! -e /var/lib/testservice
test ! -e /var/cache/testservice
test ! -e /var/log/testservice
test ! -e /etc/test-service
test ! -e /run/test-service
test ! -e /var/lib/test-service
test ! -e /var/cache/test-service
test ! -e /var/log/test-service
cat >/etc/systemd/system/testservice.service <<EOF
cat >/etc/systemd/system/test-service.service <<EOF
[Service]
DynamicUser=yes
ConfigurationDirectory=testservice
RuntimeDirectory=testservice
StateDirectory=testservice
CacheDirectory=testservice
LogsDirectory=testservice
ConfigurationDirectory=test-service
RuntimeDirectory=test-service
StateDirectory=test-service
CacheDirectory=test-service
LogsDirectory=test-service
RuntimeDirectoryPreserve=yes
ExecStart=/bin/sleep infinity
Type=exec
@@ -90,85 +90,85 @@ EOF
systemctl daemon-reload
test ! -e /etc/testservice
test ! -e /run/testservice
test ! -e /var/lib/testservice
test ! -e /var/cache/testservice
test ! -e /var/log/testservice
test ! -e /etc/test-service
test ! -e /run/test-service
test ! -e /var/lib/test-service
test ! -e /var/cache/test-service
test ! -e /var/log/test-service
systemctl restart testservice
systemctl restart test-service
test -d /etc/testservice
test -d /run/private/testservice
test -d /var/lib/private/testservice
test -d /var/cache/private/testservice
test -d /var/log/private/testservice
test -L /run/testservice
test -L /var/lib/testservice
test -L /var/cache/testservice
test -L /var/log/testservice
test -d /etc/test-service
test -d /run/private/test-service
test -d /var/lib/private/test-service
test -d /var/cache/private/test-service
test -d /var/log/private/test-service
test -L /run/test-service
test -L /var/lib/test-service
test -L /var/cache/test-service
test -L /var/log/test-service
systemctl clean testservice && { echo 'unexpected success'; exit 1; }
systemctl clean test-service && { echo 'unexpected success'; exit 1; }
systemctl stop testservice
systemctl stop test-service
test -d /etc/testservice
test -d /run/private/testservice
test -d /var/lib/private/testservice
test -d /var/cache/private/testservice
test -d /var/log/private/testservice
test -L /run/testservice
test -L /var/lib/testservice
test -L /var/cache/testservice
test -L /var/log/testservice
test -d /etc/test-service
test -d /run/private/test-service
test -d /var/lib/private/test-service
test -d /var/cache/private/test-service
test -d /var/log/private/test-service
test -L /run/test-service
test -L /var/lib/test-service
test -L /var/cache/test-service
test -L /var/log/test-service
systemctl clean testservice --what=configuration
systemctl clean test-service --what=configuration
test ! -d /etc/testservice
test -d /run/private/testservice
test -d /var/lib/private/testservice
test -d /var/cache/private/testservice
test -d /var/log/private/testservice
test -L /run/testservice
test -L /var/lib/testservice
test -L /var/cache/testservice
test -L /var/log/testservice
test ! -d /etc/test-service
test -d /run/private/test-service
test -d /var/lib/private/test-service
test -d /var/cache/private/test-service
test -d /var/log/private/test-service
test -L /run/test-service
test -L /var/lib/test-service
test -L /var/cache/test-service
test -L /var/log/test-service
systemctl clean testservice
systemctl clean test-service
test ! -d /etc/testservice
test ! -d /run/private/testservice
test -d /var/lib/private/testservice
test ! -d /var/cache/private/testservice
test -d /var/log/private/testservice
test ! -L /run/testservice
test -L /var/lib/testservice
test ! -L /var/cache/testservice
test -L /var/log/testservice
test ! -d /etc/test-service
test ! -d /run/private/test-service
test -d /var/lib/private/test-service
test ! -d /var/cache/private/test-service
test -d /var/log/private/test-service
test ! -L /run/test-service
test -L /var/lib/test-service
test ! -L /var/cache/test-service
test -L /var/log/test-service
systemctl clean testservice --what=logs
systemctl clean test-service --what=logs
test ! -d /etc/testservice
test ! -d /run/private/testservice
test -d /var/lib/private/testservice
test ! -d /var/cache/private/testservice
test ! -d /var/log/private/testservice
test ! -L /run/testservice
test -L /var/lib/testservice
test ! -L /var/cache/testservice
test ! -L /var/log/testservice
test ! -d /etc/test-service
test ! -d /run/private/test-service
test -d /var/lib/private/test-service
test ! -d /var/cache/private/test-service
test ! -d /var/log/private/test-service
test ! -L /run/test-service
test -L /var/lib/test-service
test ! -L /var/cache/test-service
test ! -L /var/log/test-service
systemctl clean testservice --what=all
systemctl clean test-service --what=all
test ! -d /etc/testservice
test ! -d /run/private/testservice
test ! -d /var/lib/private/testservice
test ! -d /var/cache/private/testservice
test ! -d /var/log/private/testservice
test ! -L /run/testservice
test ! -L /var/lib/testservice
test ! -L /var/cache/testservice
test ! -L /var/log/testservice
test ! -d /etc/test-service
test ! -d /run/private/test-service
test ! -d /var/lib/private/test-service
test ! -d /var/cache/private/test-service
test ! -d /var/log/private/test-service
test ! -L /run/test-service
test ! -L /var/lib/test-service
test ! -L /var/cache/test-service
test ! -L /var/log/test-service
cat >/etc/systemd/system/tmp-hoge.mount <<EOF
[Mount]
@@ -245,75 +245,75 @@ test ! -d /var/lib/hoge
test ! -d /var/cache/hoge
test ! -d /var/log/hoge
cat >/etc/systemd/system/testservice.socket <<EOF
cat >/etc/systemd/system/test-service.socket <<EOF
[Socket]
ListenSequentialPacket=/run/testservice.socket
ListenSequentialPacket=/run/test-service.socket
RemoveOnStop=yes
ExecStartPre=true
ConfigurationDirectory=testsocket
RuntimeDirectory=testsocket
StateDirectory=testsocket
CacheDirectory=testsocket
LogsDirectory=testsocket
ConfigurationDirectory=test-socket
RuntimeDirectory=test-socket
StateDirectory=test-socket
CacheDirectory=test-socket
LogsDirectory=test-socket
EOF
systemctl daemon-reload
test ! -e /etc/testsocket
test ! -e /run/testsocket
test ! -e /var/lib/testsocket
test ! -e /var/cache/testsocket
test ! -e /var/log/testsocket
test ! -e /etc/test-socket
test ! -e /run/test-socket
test ! -e /var/lib/test-socket
test ! -e /var/cache/test-socket
test ! -e /var/log/test-socket
systemctl start testservice.socket
systemctl start test-service.socket
test -d /etc/testsocket
test -d /run/testsocket
test -d /var/lib/testsocket
test -d /var/cache/testsocket
test -d /var/log/testsocket
test -d /etc/test-socket
test -d /run/test-socket
test -d /var/lib/test-socket
test -d /var/cache/test-socket
test -d /var/log/test-socket
systemctl clean testservice.socket && { echo 'unexpected success'; exit 1; }
systemctl clean test-service.socket && { echo 'unexpected success'; exit 1; }
systemctl stop testservice.socket
systemctl stop test-service.socket
test -d /etc/testsocket
test ! -d /run/testsocket
test -d /var/lib/testsocket
test -d /var/cache/testsocket
test -d /var/log/testsocket
test -d /etc/test-socket
test ! -d /run/test-socket
test -d /var/lib/test-socket
test -d /var/cache/test-socket
test -d /var/log/test-socket
systemctl clean testservice.socket --what=configuration
systemctl clean test-service.socket --what=configuration
test ! -e /etc/testsocket
test ! -d /run/testsocket
test -d /var/lib/testsocket
test -d /var/cache/testsocket
test -d /var/log/testsocket
test ! -e /etc/test-socket
test ! -d /run/test-socket
test -d /var/lib/test-socket
test -d /var/cache/test-socket
test -d /var/log/test-socket
systemctl clean testservice.socket
systemctl clean test-service.socket
test ! -e /etc/testsocket
test ! -e /run/testsocket
test -d /var/lib/testsocket
test ! -e /var/cache/testsocket
test -d /var/log/testsocket
test ! -e /etc/test-socket
test ! -e /run/test-socket
test -d /var/lib/test-socket
test ! -e /var/cache/test-socket
test -d /var/log/test-socket
systemctl clean testservice.socket --what=logs
systemctl clean test-service.socket --what=logs
test ! -e /etc/testsocket
test ! -e /run/testsocket
test -d /var/lib/testsocket
test ! -e /var/cache/testsocket
test ! -e /var/log/testsocket
test ! -e /etc/test-socket
test ! -e /run/test-socket
test -d /var/lib/test-socket
test ! -e /var/cache/test-socket
test ! -e /var/log/test-socket
systemctl clean testservice.socket --what=all
systemctl clean test-service.socket --what=all
test ! -e /etc/testsocket
test ! -e /run/testsocket
test ! -e /var/lib/testsocket
test ! -e /var/cache/testsocket
test ! -e /var/log/testsocket
test ! -e /etc/test-socket
test ! -e /run/test-socket
test ! -e /var/lib/test-socket
test ! -e /var/cache/test-socket
test ! -e /var/log/test-socket
echo OK >/testok
+4
View File
@@ -10,6 +10,7 @@ systemd-run -p LoadCredential=passwd:/etc/passwd \
-p LoadCredential=shadow:/etc/shadow \
-p SetCredential=dog:wuff \
-p DynamicUser=1 \
--unit=test-54-unpriv.service \
--wait \
--pipe \
cat '${CREDENTIALS_DIRECTORY}/passwd' '${CREDENTIALS_DIRECTORY}/shadow' '${CREDENTIALS_DIRECTORY}/dog' >/tmp/ts54-concat
@@ -77,11 +78,13 @@ fi
# Verify that the creds are immutable
systemd-run -p LoadCredential=passwd:/etc/passwd \
-p DynamicUser=1 \
--unit=test-54-immutable-touch.service \
--wait \
touch '${CREDENTIALS_DIRECTORY}/passwd' \
&& { echo 'unexpected success'; exit 1; }
systemd-run -p LoadCredential=passwd:/etc/passwd \
-p DynamicUser=1 \
--unit=test-54-immutable-rm.service \
--wait \
rm '${CREDENTIALS_DIRECTORY}/passwd' \
&& { echo 'unexpected success'; exit 1; }
@@ -94,6 +97,7 @@ echo -n c >/tmp/ts54-creds/baz
echo -n d >/tmp/ts54-creds/sub/qux
systemd-run -p LoadCredential=cred:/tmp/ts54-creds \
-p DynamicUser=1 \
--unit=test-54-dir.service \
--wait \
--pipe \
cat '${CREDENTIALS_DIRECTORY}/cred_foo' \