From 19f76b66c12e35539281032c34c835ca1ba18d10 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Tue, 11 Apr 2023 18:25:25 -0700 Subject: [PATCH 1/2] tests/int/ps: enable for rootless runc ps requires cgroup, but all the tests but one required root. Let's fix this. 1. Add rootless cgroup requirement to setup() to avoid repetition. 2. Add set_cgroups_path to setup() for rootless containers because there is no default cgroup path. 3. Modify output checks to use $output rather than $lines because in case of rootless the first line of output contains the following warning: > runc ps may fail if you don't have the full access to cgroups 4. While at it, move the common part of every test (creating the container and making sure it's running) to setup(). Signed-off-by: Kir Kolyshkin --- tests/integration/ps.bats | 61 ++++++++++----------------------------- 1 file changed, 15 insertions(+), 46 deletions(-) diff --git a/tests/integration/ps.bats b/tests/integration/ps.bats index 0d96cb250..b63260f83 100644 --- a/tests/integration/ps.bats +++ b/tests/integration/ps.bats @@ -3,7 +3,17 @@ load helpers function setup() { + # ps requires cgroups + [ $EUID -ne 0 ] && requires rootless_cgroup + setup_busybox + + # Rootless does not have default cgroup path. + [ $EUID -ne 0 ] && set_cgroups_path + + runc run -d --console-socket "$CONSOLE_SOCKET" test_busybox + [ "$status" -eq 0 ] + testcontainer test_busybox running } function teardown() { @@ -11,67 +21,26 @@ function teardown() { } @test "ps" { - # ps is not supported, it requires cgroups - requires root - - # start busybox detached - runc run -d --console-socket "$CONSOLE_SOCKET" test_busybox - [ "$status" -eq 0 ] - - # check state - testcontainer test_busybox running - runc ps test_busybox [ "$status" -eq 0 ] - [[ ${lines[0]} =~ UID\ +PID\ +PPID\ +C\ +STIME\ +TTY\ +TIME\ +CMD+ ]] - [[ "${lines[1]}" == *"$(id -un 2>/dev/null)"*[0-9]* ]] + [[ "$output" =~ UID\ +PID\ +PPID\ +C\ +STIME\ +TTY\ +TIME\ +CMD+ ]] + [[ "$output" == *"$(id -un 2>/dev/null)"*[0-9]* ]] } @test "ps -f json" { - # ps is not supported, it requires cgroups - requires root - - # start busybox detached - runc run -d --console-socket "$CONSOLE_SOCKET" test_busybox - [ "$status" -eq 0 ] - - # check state - testcontainer test_busybox running - runc ps -f json test_busybox [ "$status" -eq 0 ] - [[ ${lines[0]} =~ [0-9]+ ]] + [[ "$output" =~ [0-9]+ ]] } @test "ps -e -x" { - # ps is not supported, it requires cgroups - requires root - - # start busybox detached - runc run -d --console-socket "$CONSOLE_SOCKET" test_busybox - [ "$status" -eq 0 ] - - # check state - testcontainer test_busybox running - runc ps test_busybox -e -x [ "$status" -eq 0 ] - [[ ${lines[0]} =~ \ +PID\ +TTY\ +STAT\ +TIME\ +COMMAND+ ]] - [[ "${lines[1]}" =~ [0-9]+ ]] + [[ "$output" =~ \ +PID\ +TTY\ +STAT\ +TIME\ +COMMAND+ ]] + [[ "$output" =~ [0-9]+ ]] } @test "ps after the container stopped" { - # ps requires cgroups - [ $EUID -ne 0 ] && requires rootless_cgroup - set_cgroups_path - - # start busybox detached - runc run -d --console-socket "$CONSOLE_SOCKET" test_busybox - [ "$status" -eq 0 ] - - # check state - testcontainer test_busybox running - runc ps test_busybox [ "$status" -eq 0 ] From f92057aa1e92874b332f34065d540095f3302ca2 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Mon, 17 Apr 2023 10:41:06 -0700 Subject: [PATCH 2/2] tests/int: update set_cgroups_path doc Signed-off-by: Kir Kolyshkin --- tests/integration/helpers.bash | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/integration/helpers.bash b/tests/integration/helpers.bash index b5f2158f1..e1ce42144 100755 --- a/tests/integration/helpers.bash +++ b/tests/integration/helpers.bash @@ -184,7 +184,12 @@ function set_parent_systemd_properties() { } # Randomize cgroup path(s), and update cgroupsPath in config.json. -# This function sets a few cgroup-related variables. +# This function also sets a few cgroup-related variables that are used +# by other cgroup-related functions. +# +# If this function is not called (and cgroupsPath is not set in config), +# runc uses default container's cgroup path derived from the container's name +# (except for rootless containers, that have no default cgroup path). # # Optional parameter $1 is a pod/parent name. If set, a parent/pod cgroup is # created, and variables $REL_PARENT_PATH and $SD_PARENT_NAME can be used to