diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2022-10-16 14:02:45 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2022-10-16 14:20:58 +0200 |
commit | 6854434cfb5dda10c07d95835c38b75e5e71c2b5 (patch) | |
tree | 0813296b34b9d397732658d648758deae39fbfe3 /test/units | |
parent | TEST-15: also test hierarchical drop-ins for slices (diff) | |
download | systemd-6854434cfb5dda10c07d95835c38b75e5e71c2b5.tar.xz systemd-6854434cfb5dda10c07d95835c38b75e5e71c2b5.zip |
TEST-15: add test for transient units with drop-ins
We want to test four things:
- that the transient units are successfully started when drop-ins exist
- that the transient setings override the defaults
- the drop-ins override the transient settings (the same as for a normal unit)
- that things are the same before and after a reload
To make things more fun, we start and stop units in two different ways: via
systemctl and via a direct busctl invocation. This gives us a bit more coverage
of different code paths.
Diffstat (limited to 'test/units')
-rwxr-xr-x | test/units/testsuite-15.sh | 62 |
1 files changed, 56 insertions, 6 deletions
diff --git a/test/units/testsuite-15.sh b/test/units/testsuite-15.sh index 8b44d76982..ed6d5f838d 100755 --- a/test/units/testsuite-15.sh +++ b/test/units/testsuite-15.sh @@ -181,19 +181,40 @@ test_hierarchical_service_dropins () { echo "Testing hierarchical service dropins..." echo "*** test service.d/ top level drop-in" create_services a-b-c - check_ko a-b-c ExecCondition "/bin/echo service.d" - check_ko a-b-c ExecCondition "/bin/echo a-.service.d" - check_ko a-b-c ExecCondition "/bin/echo a-b-.service.d" - check_ko a-b-c ExecCondition "/bin/echo a-b-c.service.d" + check_ko a-b-c ExecCondition "echo service.d" + check_ko a-b-c ExecCondition "echo a-.service.d" + check_ko a-b-c ExecCondition "echo a-b-.service.d" + check_ko a-b-c ExecCondition "echo a-b-c.service.d" for dropin in service.d a-.service.d a-b-.service.d a-b-c.service.d; do mkdir -p /usr/lib/systemd/system/$dropin echo " [Service] -ExecCondition=/bin/echo $dropin +ExecCondition=echo $dropin " >/usr/lib/systemd/system/$dropin/override.conf systemctl daemon-reload - check_ok a-b-c ExecCondition "/bin/echo $dropin" + check_ok a-b-c ExecCondition "echo $dropin" + + # Check that we can start a transient service in presence of the drop-ins + systemd-run -u a-b-c2.service -p Description='sleepy' sleep infinity + + # The transient setting replaces the default + check_ok a-b-c2.service Description "sleepy" + + # The override takes precedence for ExecCondition + # (except the last iteration when it only applies to the other service) + if [ "$dropin" != "a-b-c.service.d" ]; then + check_ok a-b-c2.service ExecCondition "echo $dropin" + fi + + # Check that things are the same after a reload + systemctl daemon-reload + check_ok a-b-c2.service Description "sleepy" + if [ "$dropin" != "a-b-c.service.d" ]; then + check_ok a-b-c2.service ExecCondition "echo $dropin" + fi + + systemctl stop a-b-c2.service done for dropin in service.d a-.service.d a-b-.service.d a-b-c.service.d; do rm -rf /usr/lib/systemd/system/$dropin @@ -218,6 +239,35 @@ MemoryMax=1000000000 " >/usr/lib/systemd/system/$dropin/override.conf systemctl daemon-reload check_ok a-b-c.slice MemoryMax "1000000000" + + busctl call \ + org.freedesktop.systemd1 \ + /org/freedesktop/systemd1 \ + org.freedesktop.systemd1.Manager \ + StartTransientUnit 'ssa(sv)a(sa(sv))' \ + 'a-b-c.slice' 'replace' \ + 2 \ + 'Description' s 'slice too' \ + 'MemoryMax' t 1000000002 \ + 0 + + # The override takes precedence for MemoryMax + check_ok a-b-c.slice MemoryMax "1000000000" + # The transient setting replaces the default + check_ok a-b-c.slice Description "slice too" + + # Check that things are the same after a reload + systemctl daemon-reload + check_ok a-b-c.slice MemoryMax "1000000000" + check_ok a-b-c.slice Description "slice too" + + busctl call \ + org.freedesktop.systemd1 \ + /org/freedesktop/systemd1 \ + org.freedesktop.systemd1.Manager \ + StopUnit 'ss' \ + 'a-b-c.slice' 'replace' + rm /usr/lib/systemd/system/$dropin/override.conf done |