diff options
Diffstat (limited to 'test/podman_run.bats')
-rw-r--r-- | test/podman_run.bats | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/test/podman_run.bats b/test/podman_run.bats new file mode 100644 index 000000000..57ae0872e --- /dev/null +++ b/test/podman_run.bats @@ -0,0 +1,138 @@ +#!/usr/bin/env bats + +load helpers + +function teardown() { + cleanup_test +} + +function setup() { + prepare_network_conf + copy_images +} + +@test "run a container based on local image" { + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run $BB ls" + echo "$output" + [ "$status" -eq 0 ] +} + +@test "run a container based on local image with short options" { + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run -dt $BB ls" + echo "$output" + [ "$status" -eq 0 ] +} + +@test "run a container based on a remote image" { + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run ${BB_GLIBC} ls" + echo "$output" + [ "$status" -eq 0 ] +} + +@test "run selinux test" { + if [ ! -e /usr/sbin/selinuxenabled ] || [ ! /usr/sbin/selinuxenabled ]; then + skip "SELinux not enabled" + fi + + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run ${ALPINE} cat /proc/self/attr/current" + echo "$output" + firstLabel=$output + + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run ${ALPINE} cat /proc/self/attr/current" + echo "$output" + [ "$output" != "${firstLabel}" ] +} + + +@test "run selinux grep test" { + skip "Until console issues worked out" + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run -t -i --security-opt label=level:s0:c1,c2 ${ALPINE} cat /proc/self/attr/current | grep s0:c1,c2" + echo "$output" + [ "$status" -eq 0 ] + +} + +@test "run capabilities test" { + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run --cap-add all ${ALPINE} cat /proc/self/status" + echo "$output" + [ "$status" -eq 0 ] + + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run --cap-add sys_admin ${ALPINE} cat /proc/self/status" + echo "$output" + [ "$status" -eq 0 ] + + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run --cap-drop all ${ALPINE} cat /proc/self/status" + echo "$output" + [ "$status" -eq 0 ] + + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run --cap-drop setuid ${ALPINE} cat /proc/self/status" + echo "$output" + [ "$status" -eq 0 ] + +} + +@test "run environment test" { + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run --env FOO=BAR ${ALPINE} printenv FOO | tr -d '\r'" + echo "$output" + [ "$status" -eq 0 ] + [ $output = "BAR" ] + + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run --env PATH="/bin" ${ALPINE} printenv PATH | tr -d '\r'" + echo "$output" + [ "$status" -eq 0 ] + [ $output = "/bin" ] + + run bash -c "export FOO=BAR; ${PODMAN_BINARY} ${PODMAN_OPTIONS} run --env FOO ${ALPINE} printenv FOO | tr -d '\r'" + echo "$output" + [ "$status" -eq 0 ] + [ "$output" = "BAR" ] + + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run --env FOO ${ALPINE} printenv" + echo "$output" + [ "$status" -ne 0 ] + +# We don't currently set the hostname in containers, since we are not setting up +# networking. As soon as podman run gets network support we need to uncomment this +# test. +# run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run ${ALPINE} sh -c printenv | grep HOSTNAME" +# echo "$output" +# [ "$status" -eq 0 ] +} + +IMAGE="docker.io/library/fedora:latest" + +@test "run limits test" { + + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} pull ${IMAGE}" + + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run --ulimit rtprio=99 --cap-add=sys_nice ${IMAGE} cat /proc/self/sched" + echo $output + [ "$status" -eq 0 ] + + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run --ulimit nofile=2048:2048 ${IMAGE} ulimit -n | tr -d '\r'" + echo $output + [ "$status" -eq 0 ] + [ "$output" = 2048 ] + + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run --oom-kill-disable=true ${IMAGE} echo memory-hog" + echo $output + [ "$status" -eq 0 ] + + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run --oom-score-adj=100 ${IMAGE} cat /proc/self/oom_score_adj | tr -d '\r'" + echo $output + [ "$status" -eq 0 ] + [ "$output" = 100 ] + +} + +@test "podman run with volume flag" { + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run -v ${MOUNT_PATH}:/run/test ${BB} cat /proc/self/mountinfo | grep '${MOUNT_PATH} /run/test rw,relatime'" + echo $output + [ "$status" -eq 0 ] + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run -v ${MOUNT_PATH}:/run/test:ro ${BB} cat /proc/self/mountinfo | grep '${MOUNT_PATH} /run/test ro,relatime'" + echo $output + [ "$status" -eq 0 ] + run bash -c "${PODMAN_BINARY} ${PODMAN_OPTIONS} run -v ${MOUNT_PATH}:/run/test:shared ${BB} cat /proc/self/mountinfo | grep '${MOUNT_PATH} /run/test rw,relatime shared:'" + echo $output + [ "$status" -eq 0 ] +} |