#!/usr/bin/env bats -*- bats -*- # # tests for podman kill # load helpers @test "podman kill - test signal handling in containers" { # Prepare for 'logs -f' run_podman info --format '{{.Host.LogDriver}}' log_driver=$output run_podman info --format '{{.Host.EventLogger}}' event_logger=$output opt_log_driver= if [ $log_driver = "journald" ] && [ $event_logger != "journald" ]; then # Since PR#10431, 'logs -f' with journald driver is only supported with journald events backend. # Set '--log driver' temporally because remote doesn't support '--events-backend'. opt_log_driver="--log-driver k8s-file" 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 ${opt_log_driver} $IMAGE sh -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