diff options
author | Jhon Honce <jhonce@redhat.com> | 2018-05-14 18:01:08 -0700 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-05-16 14:01:10 +0000 |
commit | 1aaf8df5be32d755a3f72f9259c66c70fbf850d8 (patch) | |
tree | 6e573fc7ae988e36d6d94973cec238aee72feaad /contrib/python/test/test_runner.sh | |
parent | c7bc7580a6a9faf6a3159d6c17ff1dfb3710e318 (diff) | |
download | podman-1aaf8df5be32d755a3f72f9259c66c70fbf850d8.tar.gz podman-1aaf8df5be32d755a3f72f9259c66c70fbf850d8.tar.bz2 podman-1aaf8df5be32d755a3f72f9259c66c70fbf850d8.zip |
Refactor libpod python varlink bindings
- More pythonic
- Leverage context managers to help with socket leaks
- Add system unittest's
- Add image unittest's
- Add container unittest's
- Add models for system, containers and images, and their collections
- Add helper functions for datetime parsing/formatting
- GetInfo() implemented
- Add support for setuptools
- Update documentation
- Support for Python 3.4-3.6
Signed-off-by: Jhon Honce <jhonce@redhat.com>
Closes: #748
Approved by: baude
Diffstat (limited to 'contrib/python/test/test_runner.sh')
-rwxr-xr-x | contrib/python/test/test_runner.sh | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/contrib/python/test/test_runner.sh b/contrib/python/test/test_runner.sh new file mode 100755 index 000000000..3e6dee110 --- /dev/null +++ b/contrib/python/test/test_runner.sh @@ -0,0 +1,116 @@ +#!/bin/bash + +# podman needs to play some games with resources +if [[ $(id -u) != 0 ]]; then + echo >&2 $0 must be run as root. + exit 2 +fi + +while getopts "vh" arg; do + case $arg in + v ) VERBOSE='-v' ;; + h ) echo >2 $0 [-v] [-h] [test.TestCase|test.TestCase.step] ; exit 2 ;; + esac +done +shift $((OPTIND-1)) + +# Create temporary directory for storage +export TMPDIR=`mktemp -d /tmp/podman.XXXXXXXXXX` + +function umount { + # xargs -r always ran once, so write any mount points to file first + mount |awk "/$1/"' { print $3 }' >${TMPDIR}/mounts + if [[ -s ${TMPDIR}/mounts ]]; then + xargs <${TMPDIR}/mounts -t umount + fi +} + +function cleanup { + umount '^(shm|nsfs)' + umount '\/run\/netns' + rm -fr ${TMPDIR} +} +trap cleanup EXIT + +# setup path to find new binaries _NOT_ system binaries +if [[ ! -x ../../bin/podman ]]; then + echo 1>&2 Cannot find podman binary from libpod root directory, Or, run \"make binaries\" + exit 1 +fi +export PATH=../../bin:$PATH + +function showlog { + [ -s "$1" ] && (echo $1 =====; cat "$1") +} + +# Need a location to store the podman socket +mkdir -p ${TMPDIR}/{podman,crio,crio-run,cni/net.d} + +# Cannot be done in python unittest fixtures. EnvVar not picked up. +export REGISTRIES_CONFIG_PATH=${TMPDIR}/registry.conf +cat >$REGISTRIES_CONFIG_PATH <<-EOT + [registries.search] + registries = ['docker.io'] + [registries.insecure] + registries = [] + [registries.block] + registries = [] +EOT + +export CNI_CONFIG_PATH=${TMPDIR}/cni/net.d +cat >$CNI_CONFIG_PATH/87-podman-bridge.conflist <<-EOT +{ + "cniVersion": "0.3.0", + "name": "podman", + "plugins": [{ + "type": "bridge", + "bridge": "cni0", + "isGateway": true, + "ipMasq": true, + "ipam": { + "type": "host-local", + "subnet": "10.88.0.0/16", + "routes": [{ + "dst": "0.0.0.0/0" + }] + } + }, + { + "type": "portmap", + "capabilities": { + "portMappings": true + } + } + ] +} +EOT + +export PODMAN_HOST="unix:${TMPDIR}/podman/io.projectatomic.podman" +PODMAN_ARGS="--storage-driver=vfs\ + --root=${TMPDIR}/crio\ + --runroot=${TMPDIR}/crio-run\ + --cni-config-dir=$CNI_CONFIG_PATH\ + " +PODMAN="podman $PODMAN_ARGS" + +# document what we're about to do... +$PODMAN --version + +set -x +# Run podman in background without systemd for test purposes +$PODMAN varlink ${PODMAN_HOST} >/tmp/test_runner.output 2>&1 & + +if [[ -z $1 ]]; then + export PYTHONPATH=. + python3 -m unittest discover -s . $VERBOSE +else + export PYTHONPATH=.:./test + python3 -m unittest $1 $VERBOSE +fi + +set +x +pkill podman +pkill -9 conmon + +showlog /tmp/alpine.log +showlog /tmp/busybox.log |