tests/int: remove $ROOTLESS, use $EUID

The variable $ROOTLESS, as set by helpers.bash and used in many places,
provides the same value as $EUID which is always set by bash. Since we
are using bash, we can rely on $EUID being omnipresent.

Modify all uses accordingly, and since the value is known to be a
number, omit the quoting.

Similarly, replace all uses of $(id -u) to $EUID.

Do some trivial cleanups along the way, such as
 - simplify some if A; then B; to A && B;
 - do not use [[ instead of [ where not necessary.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
Kir Kolyshkin
2022-02-07 19:08:26 -08:00
parent d330f94b57
commit d620a401d7
13 changed files with 50 additions and 62 deletions
+10 -18
View File
@@ -37,7 +37,7 @@ function setup() {
}
@test "runc create (limits + cgrouppath + permission on the cgroup dir) succeeds" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
set_cgroups_path
set_resources_limit
@@ -46,11 +46,11 @@ function setup() {
[ "$status" -eq 0 ]
if [ -v CGROUP_V2 ]; then
if [ -v RUNC_USE_SYSTEMD ]; then
if [ "$(id -u)" = "0" ]; then
if [ $EUID -eq 0 ]; then
check_cgroup_value "cgroup.controllers" "$(cat /sys/fs/cgroup/machine.slice/cgroup.controllers)"
else
# Filter out hugetlb and misc as systemd is unable to delegate them.
check_cgroup_value "cgroup.controllers" "$(sed -e 's/ hugetlb//' -e 's/ misc//' </sys/fs/cgroup/user.slice/user-"$(id -u)".slice/cgroup.controllers)"
check_cgroup_value "cgroup.controllers" "$(sed -e 's/ hugetlb//' -e 's/ misc//' </sys/fs/cgroup/user.slice/user-${EUID}.slice/cgroup.controllers)"
fi
else
check_cgroup_value "cgroup.controllers" "$(cat /sys/fs/cgroup/cgroup.controllers)"
@@ -59,7 +59,7 @@ function setup() {
}
@test "runc exec (limits + cgrouppath + permission on the cgroup dir) succeeds" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
set_cgroups_path
set_resources_limit
@@ -133,7 +133,7 @@ function setup() {
@test "runc run (blkio weight)" {
requires cgroups_v2
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
set_cgroups_path
update_config '.linux.resources.blockIO |= {"weight": 750}'
@@ -270,7 +270,7 @@ function setup() {
@test "runc run (cgroupv2 mount inside container)" {
requires cgroups_v2
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
set_cgroups_path
@@ -305,10 +305,8 @@ function setup() {
}
@test "runc exec should refuse a paused container" {
if [[ "$ROOTLESS" -ne 0 ]]; then
requires rootless_cgroup
fi
requires cgroups_freezer
[ $EUID -ne 0 ] && requires rootless_cgroup
set_cgroups_path
@@ -324,10 +322,8 @@ function setup() {
}
@test "runc exec --ignore-paused" {
if [[ "$ROOTLESS" -ne 0 ]]; then
requires rootless_cgroup
fi
requires cgroups_freezer
[ $EUID -ne 0 ] && requires rootless_cgroup
set_cgroups_path
@@ -349,9 +345,7 @@ function setup() {
}
@test "runc run/create should warn about a non-empty cgroup" {
if [[ "$ROOTLESS" -ne 0 ]]; then
requires rootless_cgroup
fi
[ $EUID -ne 0 ] && requires rootless_cgroup
set_cgroups_path
@@ -371,9 +365,7 @@ function setup() {
@test "runc run/create should refuse pre-existing frozen cgroup" {
requires cgroups_freezer
if [[ "$ROOTLESS" -ne 0 ]]; then
requires rootless_cgroup
fi
[ $EUID -ne 0 ] && requires rootless_cgroup
set_cgroups_path
+1 -1
View File
@@ -15,7 +15,7 @@ function teardown() {
# XXX(@kolyshkin): currently this test does not handle rootless when
# fs cgroup driver is used, because in this case cgroup (with a
# predefined name) is created by tests/rootless.sh, not by runc.
[[ "$ROOTLESS" -ne 0 ]] && requires systemd
[ $EUID -ne 0 ] && requires systemd
set_resources_limit
runc run -d --console-socket "$CONSOLE_SOCKET" testbusyboxdelete
+1 -1
View File
@@ -17,7 +17,7 @@ function teardown() {
runc run test_dev
[ "$status" -eq 0 ]
if [[ "$ROOTLESS" -ne 0 ]]; then
if [ $EUID -ne 0 ]; then
[[ "${lines[0]}" =~ "crw-rw-rw".+"1".+"65534".+"65534".+"5,".+"0".+"/dev/tty" ]]
else
[[ "${lines[0]}" =~ "crw-rw-rw".+"1".+"0".+"0".+"5,".+"0".+"/dev/tty" ]]
+1 -1
View File
@@ -117,7 +117,7 @@ function teardown() {
@test "runc exec --user" {
# --user can't work in rootless containers that don't have idmap.
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_idmap
[ $EUID -ne 0 ] && requires rootless_idmap
# run busybox detached
runc run -d --console-socket "$CONSOLE_SOCKET" test_busybox
+11 -14
View File
@@ -43,9 +43,6 @@ ARCH=$(uname -m)
# Seccomp agent socket.
SECCCOMP_AGENT_SOCKET="$BATS_TMPDIR/seccomp-agent.sock"
# Check if we're in rootless mode.
ROOTLESS=$(id -u)
# Wrapper for runc.
function runc() {
run __runc "$@"
@@ -67,12 +64,12 @@ function __runc() {
# Wrapper for runc spec.
function runc_spec() {
local rootless=""
[ "$ROOTLESS" -ne 0 ] && rootless="--rootless"
[ $EUID -ne 0 ] && rootless="--rootless"
runc spec $rootless
# Always add additional mappings if we have idmaps.
if [[ "$ROOTLESS" -ne 0 && "$ROOTLESS_FEATURES" == *"idmap"* ]]; then
if [[ $EUID -ne 0 && "$ROOTLESS_FEATURES" == *"idmap"* ]]; then
runc_rootless_idmap
fi
}
@@ -112,8 +109,8 @@ function init_cgroup_paths() {
# For rootless + systemd case, controllers delegation is required,
# so check the controllers that the current user has, not the top one.
# NOTE: delegation of cpuset requires systemd >= 244 (Fedora >= 32, Ubuntu >= 20.04).
if [[ "$ROOTLESS" -ne 0 && -v RUNC_USE_SYSTEMD ]]; then
controllers="/sys/fs/cgroup/user.slice/user-$(id -u).slice/user@$(id -u).service/cgroup.controllers"
if [[ $EUID -ne 0 && -v RUNC_USE_SYSTEMD ]]; then
controllers="/sys/fs/cgroup/user.slice/user-${UID}.slice/user@${UID}.service/cgroup.controllers"
fi
# "pseudo" controllers do not appear in /sys/fs/cgroup/cgroup.controllers.
@@ -188,7 +185,7 @@ function remove_parent() {
function set_parent_systemd_properties() {
[ ! -v SD_PARENT_NAME ] && return
local user=""
[ "$(id -u)" != "0" ] && user="--user"
[ $EUID -ne 0 ] && user="--user"
systemctl set-property $user "$SD_PARENT_NAME" "$@"
}
@@ -213,12 +210,12 @@ function set_cgroups_path() {
local rnd="$RANDOM"
if [ -v RUNC_USE_SYSTEMD ]; then
SD_UNIT_NAME="runc-cgroups-integration-test-${rnd}.scope"
if [ "$(id -u)" = "0" ]; then
if [ $EUID -eq 0 ]; then
REL_PARENT_PATH="/machine.slice${pod_slice}"
OCI_CGROUPS_PATH="machine${dash_pod}.slice:runc-cgroups:integration-test-${rnd}"
else
REL_PARENT_PATH="/user.slice/user-$(id -u).slice/user@$(id -u).service/machine.slice${pod_slice}"
# OCI path doesn't contain "/user.slice/user-$(id -u).slice/user@$(id -u).service/" prefix
REL_PARENT_PATH="/user.slice/user-${UID}.slice/user@${UID}.service/machine.slice${pod_slice}"
# OCI path doesn't contain "/user.slice/user-${UID}.slice/user@${UID}.service/" prefix
OCI_CGROUPS_PATH="machine${dash_pod}.slice:runc-cgroups:integration-test-${rnd}"
fi
REL_CGROUPS_PATH="$REL_PARENT_PATH/$SD_UNIT_NAME"
@@ -271,7 +268,7 @@ function check_systemd_value() {
local expected="$2"
local expected2="${3:-}"
local user=""
[ "$(id -u)" != "0" ] && user="--user"
[ $EUID -ne 0 ] && user="--user"
current=$(systemctl show $user --property "$source" "$SD_UNIT_NAME" | awk -F= '{print $2}')
echo "systemd $source: current $current !? $expected $expected2"
@@ -360,12 +357,12 @@ function requires() {
fi
;;
root)
if [ "$ROOTLESS" -ne 0 ]; then
if [ $EUID -ne 0 ]; then
skip_me=1
fi
;;
rootless)
if [ "$ROOTLESS" -eq 0 ]; then
if [ $EUID -eq 0 ]; then
skip_me=1
fi
;;
+4 -4
View File
@@ -11,11 +11,11 @@ function teardown() {
}
@test "runc pause and resume" {
if [[ "$ROOTLESS" -ne 0 ]]; then
requires cgroups_freezer
if [ $EUID -ne 0 ]; then
requires rootless_cgroup
set_cgroups_path
fi
requires cgroups_freezer
# run busybox detached
runc run -d --console-socket "$CONSOLE_SOCKET" test_busybox
@@ -39,11 +39,11 @@ function teardown() {
}
@test "runc pause and resume with nonexist container" {
if [[ "$ROOTLESS" -ne 0 ]]; then
requires cgroups_freezer
if [ $EUID -ne 0 ]; then
requires rootless_cgroup
set_cgroups_path
fi
requires cgroups_freezer
# run test_busybox detached
runc run -d --console-socket "$CONSOLE_SOCKET" test_busybox
+1 -1
View File
@@ -62,7 +62,7 @@ function teardown() {
@test "ps after the container stopped" {
# ps requires cgroups
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
set_cgroups_path
# start busybox detached
+1 -2
View File
@@ -36,8 +36,7 @@ function teardown() {
@test "runc run --keep (check cgroup exists)" {
# for systemd driver, the unit's cgroup path will be auto removed if container's all processes exited
requires no_systemd
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
set_cgroups_path
+1 -1
View File
@@ -21,7 +21,7 @@ function teardown() {
@test "runc run detached ({u,g}id != 0)" {
# cannot start containers as another user in rootless setup without idmap
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_idmap
[ $EUID -ne 0 ] && requires rootless_idmap
# replace "uid": 0 with "uid": 1000
# and do a similar thing for gid.
+1 -1
View File
@@ -21,7 +21,7 @@ function teardown() {
@test "runc run ({u,g}id != 0)" {
# cannot start containers as another user in rootless setup without idmap
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_idmap
[ $EUID -ne 0 ] && requires rootless_idmap
# replace "uid": 0 with "uid": 1000
# and do a similar thing for gid.
+4 -4
View File
@@ -34,7 +34,7 @@ function teardown() {
@test "runc run [tty owner]" {
# tty chmod is not doable in rootless containers without idmap.
# TODO: this can be made as a change to the gid test.
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_idmap
[ $EUID -ne 0 ] && requires rootless_idmap
# Replace sh script with stat.
# shellcheck disable=SC2016
@@ -50,7 +50,7 @@ function teardown() {
@test "runc run [tty owner] ({u,g}id != 0)" {
# tty chmod is not doable in rootless containers without idmap.
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_idmap
[ $EUID -ne 0 ] && requires rootless_idmap
# replace "uid": 0 with "uid": 1000
# and do a similar thing for gid.
@@ -100,7 +100,7 @@ function teardown() {
@test "runc exec [tty owner]" {
# tty chmod is not doable in rootless containers without idmap.
# TODO: this can be made as a change to the gid test.
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_idmap
[ $EUID -ne 0 ] && requires rootless_idmap
# run busybox detached
runc run -d --console-socket "$CONSOLE_SOCKET" test_busybox
@@ -119,7 +119,7 @@ function teardown() {
@test "runc exec [tty owner] ({u,g}id != 0)" {
# tty chmod is not doable in rootless containers without idmap.
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_idmap
[ $EUID -ne 0 ] && requires rootless_idmap
# replace "uid": 0 with "uid": 1000
# and do a similar thing for gid.
+13 -13
View File
@@ -21,7 +21,7 @@ function setup() {
# Tests whatever limits are (more or less) common between cgroup
# v1 and v2: memory/swap, pids, and cpuset.
@test "update cgroup v1/v2 common limits" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
requires cgroups_memory cgroups_pids cgroups_cpuset
init_cgroup_paths
@@ -259,7 +259,7 @@ EOF
}
@test "update cgroup cpu limits" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
# run a few busyboxes detached
runc run -d --console-socket "$CONSOLE_SOCKET" test_update
@@ -333,7 +333,7 @@ EOF
}
@test "set cpu period with no quota" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
update_config '.linux.resources.cpu |= { "period": 1000000 }'
@@ -344,7 +344,7 @@ EOF
}
@test "set cpu period with no quota (invalid period)" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
update_config '.linux.resources.cpu |= { "period": 100 }'
@@ -353,7 +353,7 @@ EOF
}
@test "set cpu quota with no period" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
update_config '.linux.resources.cpu |= { "quota": 5000 }'
@@ -363,7 +363,7 @@ EOF
}
@test "update cpu period with no previous period/quota set" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
update_config '.linux.resources.cpu |= {}'
@@ -377,7 +377,7 @@ EOF
}
@test "update cpu quota with no previous period/quota set" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
update_config '.linux.resources.cpu |= {}'
@@ -392,7 +392,7 @@ EOF
@test "update cpu period in a pod cgroup with pod limit set" {
requires cgroups_v1
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
set_cgroups_path "pod_${RANDOM}"
@@ -426,7 +426,7 @@ EOF
}
@test "update cgroup v2 resources via unified map" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
requires cgroups_v2
runc run -d --console-socket "$CONSOLE_SOCKET" test_update
@@ -455,7 +455,7 @@ EOF
}
@test "update cpuset parameters via resources.CPU" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
requires smp cgroups_cpuset
local AllowedCPUs='AllowedCPUs' AllowedMemoryNodes='AllowedMemoryNodes'
@@ -511,7 +511,7 @@ EOF
@test "update cpuset parameters via v2 unified map" {
# This test assumes systemd >= v244
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
requires cgroups_v2 smp cgroups_cpuset
update_config ' .linux.resources.unified |= {
@@ -558,7 +558,7 @@ EOF
}
@test "update rt period and runtime" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
[ $EUID -ne 0 ] && requires rootless_cgroup
requires cgroups_v1 cgroups_rt no_systemd
local cgroup_cpu="${CGROUP_CPU_BASE_PATH}/${REL_CGROUPS_PATH}"
@@ -678,8 +678,8 @@ EOF
}
@test "update paused container" {
[[ "$ROOTLESS" -ne 0 ]] && requires rootless_cgroup
requires cgroups_freezer
[ $EUID -ne 0 ] && requires rootless_cgroup
# Run the container in the background.
runc run -d --console-socket "$CONSOLE_SOCKET" test_update
+1 -1
View File
@@ -15,7 +15,7 @@ function setup() {
mkdir -p rootfs/{proc,sys,tmp}
mkdir -p rootfs/tmp/mount-{1,2}
if [ "$ROOTLESS" -eq 0 ]; then
if [ $EUID -eq 0 ]; then
update_config ' .linux.namespaces += [{"type": "user"}]
| .linux.uidMappings += [{"hostID": 100000, "containerID": 0, "size": 65534}]
| .linux.gidMappings += [{"hostID": 100000, "containerID": 0, "size": 65534}] '