#!/usr/bin/env bats -*- bats -*- # # tests for podman kill # load helpers @test "podman kill - test signal handling in containers" { # podman-remote and crun interact poorly in f31: crun seems to gobble up # some signals. # Workaround: run 'env --default-signal sh' instead of just 'sh' in # the container. Since env on our regular alpine image doesn't support # that flag, we need to pull fedora-minimal. See: # https://github.com/containers/libpod/issues/5004 # FIXME: remove this kludge once we get rid of podman-remote local _image=$IMAGE local _sh_cmd="sh" if is_remote; then _image=quay.io/libpod/fedora-minimal:latest _sh_cmd="env --default-signal sh" fi # Start a container that will handle all signals by emitting 'got: N' local -a signals=(1 2 3 4 5 6 8 10 12 13 14 15 16 20 21 22 23 24 25 26 64) run_podman run -d $_image $_sh_cmd -c \ "for i in ${signals[*]}; do trap \"echo got: \$i\" \$i; done; echo READY; while ! test -e /stop; do sleep 0.05; done; echo DONE" # Ignore output regarding pulling/processing container images cid=$(echo "$output" | tail -1) # Run 'logs -f' on that container, but run it in the background with # redirection to a named pipe from which we (foreground job) read # and confirm that signals are received. We can't use run_podman here. local fifo=${PODMAN_TMPDIR}/podman-kill-fifo.$(random_string 10) mkfifo $fifo $PODMAN logs -f $cid >$fifo