mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-10 21:53:57 +08:00
4ea0bf88fd
issues: https://github.com/opencontainers/runc/issues/4195 https://github.com/opencontainers/runc/pull/4265#discussion_r1588599809 Signed-off-by: lifubang <lifubang@acmcoder.com>
89 lines
2.2 KiB
Bash
89 lines
2.2 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load helpers
|
|
|
|
function setup() {
|
|
# Do not change the Cur value to be equal to the Max value
|
|
# Because in some environments, the soft and hard nofile limit have the same value.
|
|
[ $EUID -eq 0 ] && prlimit --nofile=1024:65536 -p $$
|
|
setup_busybox
|
|
}
|
|
|
|
function teardown() {
|
|
teardown_bundle
|
|
}
|
|
|
|
# Set and check rlimit_nofile for runc run. Arguments are:
|
|
# $1: soft limit;
|
|
# $2: hard limit.
|
|
function run_check_nofile() {
|
|
soft="$1"
|
|
hard="$2"
|
|
update_config ".process.rlimits = [{\"type\": \"RLIMIT_NOFILE\", \"soft\": ${soft}, \"hard\": ${hard}}]"
|
|
update_config '.process.args = ["/bin/sh", "-c", "ulimit -n; ulimit -H -n"]'
|
|
|
|
runc run test_rlimit
|
|
[ "$status" -eq 0 ]
|
|
[[ "${lines[0]}" == "${soft}" ]]
|
|
[[ "${lines[1]}" == "${hard}" ]]
|
|
}
|
|
|
|
# Set and check rlimit_nofile for runc exec. Arguments are:
|
|
# $1: soft limit;
|
|
# $2: hard limit.
|
|
function exec_check_nofile() {
|
|
soft="$1"
|
|
hard="$2"
|
|
update_config ".process.rlimits = [{\"type\": \"RLIMIT_NOFILE\", \"soft\": ${soft}, \"hard\": ${hard}}]"
|
|
|
|
runc run -d --console-socket "$CONSOLE_SOCKET" test_rlimit
|
|
[ "$status" -eq 0 ]
|
|
|
|
runc exec test_rlimit /bin/sh -c "ulimit -n; ulimit -H -n"
|
|
[ "$status" -eq 0 ]
|
|
[[ "${lines[0]}" == "${soft}" ]]
|
|
[[ "${lines[1]}" == "${hard}" ]]
|
|
}
|
|
|
|
@test "runc run with RLIMIT_NOFILE(The same as system's hard value)" {
|
|
hard=$(ulimit -n -H)
|
|
soft="$hard"
|
|
run_check_nofile "$soft" "$hard"
|
|
}
|
|
|
|
@test "runc run with RLIMIT_NOFILE(Bigger than system's hard value)" {
|
|
requires root
|
|
limit=$(ulimit -n -H)
|
|
soft=$((limit + 1))
|
|
hard=$soft
|
|
run_check_nofile "$soft" "$hard"
|
|
}
|
|
|
|
@test "runc run with RLIMIT_NOFILE(Smaller than system's hard value)" {
|
|
limit=$(ulimit -n -H)
|
|
soft=$((limit - 1))
|
|
hard=$soft
|
|
run_check_nofile "$soft" "$hard"
|
|
}
|
|
|
|
@test "runc exec with RLIMIT_NOFILE(The same as system's hard value)" {
|
|
hard=$(ulimit -n -H)
|
|
soft="$hard"
|
|
exec_check_nofile "$soft" "$hard"
|
|
}
|
|
|
|
@test "runc exec with RLIMIT_NOFILE(Bigger than system's hard value)" {
|
|
requires root
|
|
limit=$(ulimit -n -H)
|
|
soft=$((limit + 1))
|
|
hard=$soft
|
|
exec_check_nofile "$soft" "$hard"
|
|
}
|
|
|
|
@test "runc exec with RLIMIT_NOFILE(Smaller than system's hard value)" {
|
|
limit=$(ulimit -n -H)
|
|
soft=$((limit - 1))
|
|
hard=$soft
|
|
exec_check_nofile "$soft" "$hard"
|
|
}
|