Files
podman/test/system/190-run-ipcns.bats
Ed Santiago 33891e8e96 System tests: add test tags
BATS 1.8.0 introduces tags: metadata that can be applied to
a single test or one entire file, then used for filtering
in a test run.

Issue #19299 introduces the possibility of using OpenQA
for podman reverse dependency testing: continuous CI on
all packages that can affect podman, so we don't go two
months with no bodhi builds then get caught by surprise
when systemd or kernel or crun change in ways that break us.

This PR introduces one bats tag, "distro-integration".
The intention is for OpenQA (or other) tests to install
the podman-tests package and run:

    bats --filter-tags distro-integration /usr/share/podman/test/system

Goal is to keep the test list short and sweet: we do not
need to test command-line option parsing. We *DO* need to
test interactions with systemd, kernel, nethack, and other
critical components.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-07-26 13:50:33 -06:00

80 lines
3.0 KiB
Bash

#!/usr/bin/env bats -*- bats -*-
# shellcheck disable=SC2096
#
# Tests for podman build
#
# bats file_tags=distro-integration
#
load helpers
@test "podman --ipc=host" {
hostipc="$(readlink /proc/self/ns/ipc)"
run_podman run --name IPC --ipc=host $IMAGE readlink /proc/self/ns/ipc
is "$output" "$hostipc" "HostIPC and container IPC should be same"
run_podman inspect IPC --format '{{ .HostConfig.IpcMode }}'
is "$output" "host" "host mode should be selected"
run_podman rm IPC
}
@test "podman --ipc=none" {
hostipc="$(readlink /proc/self/ns/ipc)"
run_podman run --ipc=none --name IPC $IMAGE readlink /proc/self/ns/ipc
assert "$output" != "$hostipc" "containeripc should != hostipc"
run_podman inspect IPC --format '{{ .HostConfig.IpcMode }}'
is "$output" "none" "none mode should be selected"
run_podman rm IPC
run_podman 1 run --rm --ipc=none $IMAGE ls /dev/shm
is "$output" "ls: /dev/shm: No such file or directory" "Should fail with missing /dev/shm"
}
@test "podman --ipc=private" {
hostipc="$(readlink /proc/self/ns/ipc)"
run_podman run -d --ipc=private --name test $IMAGE sleep 100
assert "$output" != "$hostipc" "containeripc should != hostipc"
run_podman inspect test --format '{{ .HostConfig.IpcMode }}'
is "$output" "private" "private mode should be selected"
run_podman 125 run --ipc=container:test --rm $IMAGE readlink /proc/self/ns/ipc
is "$output" ".*is not allowed: non-shareable IPC (hint: use IpcMode:shareable for the donor container)" "Containers should not share private ipc namespace"
run_podman stop -t 0 test
run_podman rm test
}
@test "podman --ipc=shareable" {
hostipc="$(readlink /proc/self/ns/ipc)"
run_podman run -d --ipc=shareable --name test $IMAGE sleep 100
assert "$output" != "$hostipc" "containeripc(shareable) should != hostipc"
run_podman inspect test --format '{{ .HostConfig.IpcMode }}'
is "$output" "shareable" "shareable mode should be selected"
run_podman run --ipc=container:test --rm $IMAGE readlink /proc/self/ns/ipc
assert "$output" != "$hostipc" "containeripc(:test) should != hostipc"
run_podman stop -t 0 test
run_podman rm test
}
@test "podman --ipc=container@test" {
hostipc="$(readlink /proc/self/ns/ipc)"
run_podman run -d --name test $IMAGE sleep 100
containerid=$output
run_podman inspect test --format '{{ .HostConfig.IpcMode }}'
is "$output" "shareable" "shareable mode should be selected"
run_podman exec test readlink /proc/self/ns/ipc
assert "$output" != "$hostipc" "containeripc(exec) should != hostipc"
testipc=$output
run_podman run --name IPC --ipc=container:test $IMAGE readlink /proc/self/ns/ipc
assert "$output" = "$testipc" "Containers should share ipc namespace"
run_podman inspect IPC --format '{{ .HostConfig.IpcMode }}'
is "$output" "container:$containerid" "ipc mode should be selected"
run_podman rm IPC
run_podman stop -t 0 test
run_podman rm test
}
# vim: filetype=sh