Files
runc/tests/integration/start_hello.bats
T
Shengjing Zhu 66bf3718b4 tests: replace local hello world bundle with busybox bundle
Currently only amd64 and arm64v8 tarball have been checked in testdata,
while busybox bundle is downloaded on fly, and supports multiple architectures.

To enable integration tests for more architectures, the hello world
bundle is replaced by busybox one.

Signed-off-by: Shengjing Zhu <zhsj@debian.org>
2022-07-05 02:19:57 +08:00

92 lines
1.9 KiB
Bash

#!/usr/bin/env bats
load helpers
function setup() {
setup_busybox
update_config '.process.args = ["/bin/echo", "Hello World"]'
}
function teardown() {
teardown_bundle
}
@test "runc run" {
# run hello-world
runc run test_hello
[ "$status" -eq 0 ]
# check expected output
[[ "${output}" == *"Hello"* ]]
}
@test "runc run ({u,g}id != 0)" {
# cannot start containers as another user in rootless setup without idmap
[ $EUID -ne 0 ] && requires rootless_idmap
# replace "uid": 0 with "uid": 1000
# and do a similar thing for gid.
update_config ' (.. | select(.uid? == 0)) .uid |= 1000
| (.. | select(.gid? == 0)) .gid |= 100'
# run hello-world
runc run test_hello
[ "$status" -eq 0 ]
# check expected output
[[ "${output}" == *"Hello"* ]]
}
@test "runc run with rootfs set to ." {
cp config.json rootfs/.
rm config.json
cd rootfs
update_config '(.. | select(. == "rootfs")) |= "."'
# run hello-world
runc run test_hello
[ "$status" -eq 0 ]
[[ "${output}" == *"Hello"* ]]
}
@test "runc run --pid-file" {
# run hello-world
runc run --pid-file pid.txt test_hello
[ "$status" -eq 0 ]
[[ "${output}" == *"Hello"* ]]
# check pid.txt was generated
[ -e pid.txt ]
[[ "$(cat pid.txt)" =~ [0-9]+ ]]
}
# https://github.com/opencontainers/runc/pull/2897
@test "runc run [rootless with host pidns]" {
requires rootless_no_features
# Remove pid namespace, and replace /proc mount
# with a bind mount from the host.
update_config ' .linux.namespaces -= [{"type": "pid"}]
| .mounts |= map((select(.type == "proc")
| .type = "none"
| .source = "/proc"
| .options = ["rbind", "nosuid", "nodev", "noexec"]
) // .)'
runc run test_hello
[ "$status" -eq 0 ]
}
@test "runc run [redundant seccomp rules]" {
update_config ' .linux.seccomp = {
"defaultAction": "SCMP_ACT_ALLOW",
"syscalls": [{
"names": ["bdflush"],
"action": "SCMP_ACT_ALLOW",
}]
}'
runc run test_hello
[ "$status" -eq 0 ]
}