mirror of
https://github.com/containers/podman.git
synced 2025-12-16 03:57:36 +08:00
Merge pull request #13583 from rhatdan/ipc
Add support for ipc namespace modes "none, private, sharable"
This commit is contained in:
70
test/system/190-run-ipcns.bats
Normal file
70
test/system/190-run-ipcns.bats
Normal file
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env bats -*- bats -*-
|
||||
# shellcheck disable=SC2096
|
||||
#
|
||||
# Tests for podman build
|
||||
#
|
||||
|
||||
load helpers
|
||||
|
||||
@test "podman --ipc=host" {
|
||||
run readlink /proc/self/ns/ipc
|
||||
hostipc=$output
|
||||
run_podman run --rm --ipc=host $IMAGE readlink /proc/self/ns/ipc
|
||||
is "$output" "$hostipc" "HostIPC and container IPC should be same"
|
||||
}
|
||||
|
||||
@test "podman --ipc=none" {
|
||||
run readlink /proc/self/ns/ipc
|
||||
hostipc=$output
|
||||
run_podman run --rm --ipc=none $IMAGE readlink /proc/self/ns/ipc
|
||||
if [[ $output == "$hostipc" ]]; then
|
||||
die "hostipc and containeripc should be different"
|
||||
fi
|
||||
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" {
|
||||
run readlink /proc/self/ns/ipc
|
||||
hostipc=$output
|
||||
run_podman run -d --ipc=private --name test $IMAGE sleep 100
|
||||
if [[ $output == "$hostipc" ]]; then
|
||||
die "hostipc and containeripc should be different"
|
||||
fi
|
||||
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" {
|
||||
run readlink /proc/self/ns/ipc
|
||||
hostipc=$output
|
||||
run_podman run -d --ipc=shareable --name test $IMAGE sleep 100
|
||||
if [[ $output == "$hostipc" ]]; then
|
||||
die "hostipc and containeripc should be different"
|
||||
fi
|
||||
run_podman run --ipc=container:test --rm $IMAGE readlink /proc/self/ns/ipc
|
||||
if [[ $output == "$hostipc" ]]; then
|
||||
die "hostipc and containeripc should be different"
|
||||
fi
|
||||
run_podman stop -t 0 test
|
||||
run_podman rm test
|
||||
}
|
||||
|
||||
@test "podman --ipc=container@test" {
|
||||
run readlink /proc/self/ns/ipc
|
||||
hostipc=$output
|
||||
run_podman run -d --name test $IMAGE sleep 100
|
||||
run_podman exec test readlink /proc/self/ns/ipc
|
||||
if [[ $output == "$hostipc" ]]; then
|
||||
die "hostipc and containeripc should be different"
|
||||
fi
|
||||
testipc=$output
|
||||
run_podman run --ipc=container:test --rm $IMAGE readlink /proc/self/ns/ipc
|
||||
is "$output" "$testipc" "Containers should share ipc namespace"
|
||||
run_podman stop -t 0 test
|
||||
run_podman rm test
|
||||
}
|
||||
|
||||
# vim: filetype=sh
|
||||
Reference in New Issue
Block a user