podman/test/system/195-run-namespaces.bats

54 lines
1.5 KiB
Bash

#!/usr/bin/env bats -*- bats -*-
#
# Tests for the namespace options
#
load helpers
# bats test_tags=distro-integration
@test "podman test all namespaces" {
# format is nsname | option name
tests="
cgroup | cgroupns
ipc | ipc
net | network
pid | pid
uts | uts
"
for nstype in private host; do
while read name option; do
local cname="c_${name}_$(random_string)"
# ipc is special, private does not allow joining from another container.
# Instead we must use "shareable".
local type=$nstype
if [ "$name" = "ipc" ] && [ "$type" = "private" ]; then
type="shareable"
fi
run_podman run --name $cname --$option $type -d $IMAGE sh -c \
"readlink /proc/self/ns/$name; sleep inf"
run_podman run --rm --$option container:$cname $IMAGE readlink /proc/self/ns/$name
con2_ns="$output"
run readlink /proc/self/ns/$name
host_ns="$output"
run_podman logs $cname
con1_ns="$output"
assert "$con1_ns" == "$con2_ns" "($name) namespace matches (type: $type)"
local matcher="=="
if [[ "$type" != "host" ]]; then
matcher="!="
fi
assert "$con1_ns" $matcher "$host_ns" "expected host namespace to ($matcher) (type: $type)"
run_podman rm -f -t0 $cname
done < <(parse_table "$tests")
done
}
# vim: filetype=sh