Merge pull request #12016 from edsantiago/socktest_cleanup

system tests: socket activation: clean up
This commit is contained in:
OpenShift Merge Robot 2021-10-18 19:50:45 +02:00 committed by GitHub
commit abc6527c96
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 31 additions and 20 deletions

View File

@ -8,14 +8,16 @@ load helpers.systemd
SERVICE_NAME="podman_test_$(random_string)" SERVICE_NAME="podman_test_$(random_string)"
SERVICE_SOCK_ADDR="/run/podman/podman.sock" SERVICE_SOCK_ADDR="/run/podman/$SERVICE_NAME.sock"
if is_rootless; then if is_rootless; then
SERVICE_SOCK_ADDR="$XDG_RUNTIME_DIR/podman/podman.sock" SERVICE_SOCK_ADDR="$XDG_RUNTIME_DIR/podman/$SERVICE_NAME.sock"
fi fi
SERVICE_FILE="$UNIT_DIR/$SERVICE_NAME.service" SERVICE_FILE="$UNIT_DIR/$SERVICE_NAME.service"
SOCKET_FILE="$UNIT_DIR/$SERVICE_NAME.socket" SOCKET_FILE="$UNIT_DIR/$SERVICE_NAME.socket"
# URL to use for ping
_PING=http://placeholder-hostname/libpod/_ping
function setup() { function setup() {
skip_if_remote "systemd tests are meaningless over remote" skip_if_remote "systemd tests are meaningless over remote"
@ -25,8 +27,8 @@ function setup() {
cat > $SERVICE_FILE <<EOF cat > $SERVICE_FILE <<EOF
[Unit] [Unit]
Description=Podman API Service Description=Podman API Service
Requires=podman.socket Requires=$SERVICE_NAME.socket
After=podman.socket After=$SERVICE_NAME.socket
Documentation=man:podman-system-service(1) Documentation=man:podman-system-service(1)
StartLimitIntervalSec=0 StartLimitIntervalSec=0
@ -42,7 +44,7 @@ Description=Podman API Socket
Documentation=man:podman-system-service(1) Documentation=man:podman-system-service(1)
[Socket] [Socket]
ListenStream=%t/podman/podman.sock ListenStream=%t/podman/$SERVICE_NAME.sock
SocketMode=0660 SocketMode=0660
[Install] [Install]
@ -51,10 +53,10 @@ EOF
# ensure pause die before each test runs # ensure pause die before each test runs
if is_rootless; then if is_rootless; then
local pause_pid="$XDG_RUNTIME_DIR/libpod/tmp/pause.pid" local pause_pid_file="$XDG_RUNTIME_DIR/libpod/tmp/pause.pid"
if [ -f $pause_pid ]; then if [ -f $pause_pid_file ]; then
kill -9 $(cat $pause_pid) 2> /dev/null kill -9 $(< $pause_pid_file) 2> /dev/null
rm -f $pause_pid rm -f $pause_pid_file
fi fi
fi fi
systemctl start "$SERVICE_NAME.socket" systemctl start "$SERVICE_NAME.socket"
@ -68,7 +70,9 @@ function teardown() {
} }
@test "podman system service - socket activation - no container" { @test "podman system service - socket activation - no container" {
run curl -s --max-time 3 --unix-socket $SERVICE_SOCK_ADDR http://podman/libpod/_ping run curl -s --max-time 3 --unix-socket $SERVICE_SOCK_ADDR $_PING
echo "curl output: $output"
is "$status" "0" "curl exit status"
is "$output" "OK" "podman service responds normally" is "$output" "OK" "podman service responds normally"
} }
@ -76,29 +80,36 @@ function teardown() {
run_podman run -d $IMAGE sleep 90 run_podman run -d $IMAGE sleep 90
cid="$output" cid="$output"
run curl -s --max-time 3 --unix-socket $SERVICE_SOCK_ADDR http://podman/libpod/_ping run curl -s --max-time 3 --unix-socket $SERVICE_SOCK_ADDR $_PING
echo "curl output: $output"
is "$status" "0" "curl exit status"
is "$output" "OK" "podman service responds normally" is "$output" "OK" "podman service responds normally"
run_podman stop -t 0 $cid run_podman rm -f -t 0 $cid
run_podman rm -f $cid
} }
@test "podman system service - socket activation - kill rootless pause" { @test "podman system service - socket activation - kill rootless pause" {
if ! is_rootless; then if ! is_rootless; then
skip "root podman no need pause process" skip "there is no pause process when running rootful"
fi fi
run_podman run -d $IMAGE sleep 90 run_podman run -d $IMAGE sleep 90
cid="$output" cid="$output"
local pause_pid="$XDG_RUNTIME_DIR/libpod/tmp/pause.pid" local pause_pid_file="$XDG_RUNTIME_DIR/libpod/tmp/pause.pid"
if [ -f $pause_pid ]; then if [ ! -f $pause_pid_file ]; then
kill -9 $(cat $pause_pid) 2> /dev/null # This seems unlikely, but not impossible
die "Pause pid file does not exist: $pause_pid_file"
fi fi
run curl -s --max-time 3 --unix-socket $SERVICE_SOCK_ADDR http://podman/libpod/_ping
echo "kill -9 $(< pause_pid_file)"
kill -9 $(< $pause_pid_file)
run curl -s --max-time 3 --unix-socket $SERVICE_SOCK_ADDR $_PING
echo "curl output: $output"
is "$status" "0" "curl exit status"
is "$output" "OK" "podman service responds normally" is "$output" "OK" "podman service responds normally"
run_podman stop -t 0 $cid run_podman rm -f -t 0 $cid
run_podman rm -f $cid
} }
# vim: filetype=sh # vim: filetype=sh