podman/test/test_podman_pods.sh
baude 782caea801 Add first pass for baseline pod tests
This bash script is meant to compliment the podman baseline
test script.  It primarily focuses on exercising the common
actions of pods.

Signed-off-by: baude <bbaude@redhat.com>

Closes: #1421
Approved by: rhatdan
2018-09-07 12:32:16 +00:00

118 lines
2.6 KiB
Bash
Executable file

#!/bin/bash
# test_podman_pods.sh
# A script to be run at the command line with Podman installed.
# This should be run against a new kit to provide base level testing
# on a freshly installed machine with no images or container in
# play. This currently needs to be run as root.
#
#
# To run this command:
#
# /bin/bash -v test_podman_baseline.sh -e # Stop on error
# /bin/bash -v test_podman_baseline.sh # Continue on error
#
set -x
# This scripts needs the jq json parser
if [ -z $(command -v jq2) ]; then
echo "This script requires the jq parser"
exit 1
fi
# process input args
stoponerror=0
while getopts "den" opt; do
case "$opt" in
e) stoponerror=1
;;
esac
done
if [ "$stoponerror" -eq 1 ]
then
echo "Script will stop on unexpected errors."
set -e
trap "Failed test ..." ERR
fi
########
# Create a named and unamed pod
########
podman pod create --name foobar
podid=$(podman pod create)
########
# Delete a named and unamed pod
########
podman pod rm foobar
podman pod rm $podid
########
# Create a named pod and run a container in it
########
podman pod create --name foobar
ctrid=$(podman run --pod foobar -dt docker.io/library/alpine:latest top)
podman ps --no-trunc | grep $ctrid
########
# Containers in a pod share network namespace
########
podman run -dt --pod foobar quay.io/baude/alpine_nginx:latest
podman run -it --rm --pod foobar fedora-minimal:28 curl http://localhost
########
# There should be 3 containers running now
########
let numContainers=$(podman pod ps --format json | jq -r '.[0] .numberOfContainers')
[ $numContainers -eq 3 ]
########
# Pause a container in a pod
########
podman pause $ctrid
[ $(podman ps -a -f status=paused --format json | jq -r '.[0] .id') == $ctrid ]
########
# Unpause a container in a pod
########
podman unpause $ctrid
podman ps -q --no-trunc | grep $ctrid
########
# Stop a pod and its containers
########
podman pod stop foobar
[ $(podman inspect $ctrid | jq -r '.[0] .State .Running') == "false" ]
########
# Start a pod and its containers
########
podman pod start foobar
podman run -it --rm --pod foobar fedora-minimal:28 curl http://localhost
########
# Pause a pod and its containers
########
podman pod pause foobar
[ $(podman pod ps --format json | jq -r '.[0] .status') == "Paused" ]
########
# Unpause a pod and its containers
########
podman pod unpause foobar
podman run -it --rm --pod foobar fedora-minimal:28 curl http://localhost
########
# Kill a pod and its containers
########
podman pod kill foobar
[ $(podman inspect $ctrid | jq -r '.[0] .State .Running') == "false" ]
########
# Remove all pods and their containers
########
podman pod rm -fa