aboutsummaryrefslogtreecommitdiff
path: root/test/system/190-run-ipcns.bats
blob: 9327d8ec7b1aadb026fcceb2158f56bd376c31ee (plain)
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
#!/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