| #!/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" |
| } |