You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
4.4 KiB
110 lines
4.4 KiB
11 months ago
|
From c4db01d0c3e1ff05286261971ba39839cc91c21a Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||
|
Date: Sun, 16 Oct 2022 14:02:45 +0200
|
||
|
Subject: [PATCH] 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.
|
||
|
|
||
|
(cherry picked from commit 6854434cfb5dda10c07d95835c38b75e5e71c2b5)
|
||
|
|
||
|
Related: #2156620
|
||
|
---
|
||
|
test/TEST-15-DROPIN/test-dropin.sh | 62 +++++++++++++++++++++++++++---
|
||
|
1 file changed, 56 insertions(+), 6 deletions(-)
|
||
|
|
||
|
diff --git a/test/TEST-15-DROPIN/test-dropin.sh b/test/TEST-15-DROPIN/test-dropin.sh
|
||
|
index d46946fd77..5f061d3629 100755
|
||
|
--- a/test/TEST-15-DROPIN/test-dropin.sh
|
||
|
+++ b/test/TEST-15-DROPIN/test-dropin.sh
|
||
|
@@ -132,19 +132,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 --unit 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
|
||
|
@@ -169,6 +190,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
|
||
|
|