1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
#!/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"; echo)
}
# 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 --timeout=0 ${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 -9 podman
pkill -9 conmon
showlog /tmp/test_runner.output
showlog /tmp/alpine.log
showlog /tmp/busybox.log
|