mirror of
https://github.com/containers/podman.git
synced 2025-07-15 03:02:52 +08:00

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>
80 lines
3.0 KiB
Bash
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
|