mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 00:14:32 +09:00
core: use proper service type of TEST-07-PID.user-namespace-path.sh
TEST-07-PID.user-namespace-path.sh is flaky as Type=simple is used (implicitly), explicitly use Type=exec instead to ensure the namespaces are created before starting another service reusing the same namespaces. Fixes #39546.
This commit is contained in:
committed by
Luca Boccassi
parent
22311a1291
commit
6971798864
@@ -16,12 +16,10 @@ if [ -f /usr/lib/systemd/systemd-asan-env ]; then
|
||||
fi
|
||||
|
||||
# Only reuse the user namespace
|
||||
systemd-run --unit=oldservice --property=PrivateUsers=true sleep 3600
|
||||
sleep .2
|
||||
systemd-run --unit=oldservice --property=Type=exec --property=PrivateUsers=true sleep 3600
|
||||
OLD_PID=$(systemctl show oldservice -p MainPID | awk -F= '{print $2}')
|
||||
|
||||
systemd-run --unit=newservice --property=UserNamespacePath=/proc/"$OLD_PID"/ns/user --property=PrivateNetwork=true sleep 3600
|
||||
sleep .2
|
||||
systemd-run --unit=newservice --property=Type=exec --property=UserNamespacePath=/proc/"$OLD_PID"/ns/user --property=PrivateNetwork=true sleep 3600
|
||||
NEW_PID=$(systemctl show newservice -p MainPID | awk -F= '{print $2}')
|
||||
|
||||
assert_neq "$(lsns -p "$OLD_PID" -o NS -t net -n)" "$(lsns -p "$NEW_PID" -o NS -t net -n)"
|
||||
@@ -30,12 +28,10 @@ assert_eq "$(lsns -p "$OLD_PID" -o NS -t user -n)" "$(lsns -p "$NEW_PID" -o NS -
|
||||
systemctl stop oldservice newservice
|
||||
|
||||
# Reuse the user and network namespaces
|
||||
systemd-run --unit=oldservice --property=PrivateUsers=true --property=PrivateNetwork=true sleep 3600
|
||||
sleep .2
|
||||
systemd-run --unit=oldservice --property=Type=exec --property=PrivateUsers=true --property=PrivateNetwork=true sleep 3600
|
||||
OLD_PID=$(systemctl show oldservice -p MainPID | awk -F= '{print $2}')
|
||||
|
||||
systemd-run --unit=newservice --property=UserNamespacePath=/proc/"$OLD_PID"/ns/user --property=NetworkNamespacePath=/proc/"$OLD_PID"/ns/net sleep 3600
|
||||
sleep .2
|
||||
systemd-run --unit=newservice --property=Type=exec --property=UserNamespacePath=/proc/"$OLD_PID"/ns/user --property=NetworkNamespacePath=/proc/"$OLD_PID"/ns/net sleep 3600
|
||||
NEW_PID=$(systemctl show newservice -p MainPID | awk -F= '{print $2}')
|
||||
|
||||
assert_eq "$(lsns -p "$OLD_PID" -o NS -t net -n)" "$(lsns -p "$NEW_PID" -o NS -t net -n)"
|
||||
@@ -44,12 +40,10 @@ assert_eq "$(lsns -p "$OLD_PID" -o NS -t user -n)" "$(lsns -p "$NEW_PID" -o NS -
|
||||
systemctl stop oldservice newservice
|
||||
|
||||
# Delegate the network namespace
|
||||
systemd-run --unit=oldservice --property=PrivateUsers=true sleep 3600
|
||||
sleep .2
|
||||
systemd-run --unit=oldservice --property=Type=exec --property=PrivateUsers=true sleep 3600
|
||||
OLD_PID=$(systemctl show oldservice -p MainPID | awk -F= '{print $2}')
|
||||
|
||||
systemd-run --unit=newservice --property=UserNamespacePath=/proc/"$OLD_PID"/ns/user --property=DelegateNamespaces=net --property=PrivateNetwork=true sleep 3600
|
||||
sleep .2
|
||||
systemd-run --unit=newservice --property=Type=exec --property=UserNamespacePath=/proc/"$OLD_PID"/ns/user --property=DelegateNamespaces=net --property=PrivateNetwork=true sleep 3600
|
||||
NEW_PID=$(systemctl show newservice -p MainPID | awk -F= '{print $2}')
|
||||
|
||||
assert_neq "$(lsns -p "$OLD_PID" -o NS -t net -n)" "$(lsns -p "$NEW_PID" -o NS -t net -n)"
|
||||
|
||||
Reference in New Issue
Block a user