CI: run rootless tests under ubuntu

Reason: to catch errors before they surface in RHEL.

One of the Ubuntus is specially crafted to run with cgroups v1
and runc. Although this isn't quite the same as RHEL, it's as
close as we can come in our CI environment, and I suspect it
would have caught #10234 (a regression).

Sorry, team.

Also: play kube limits test: skip on all rootless, not just
rootless+fedora. There was a complicated and unnecessary
check in there for Fedora.

Also: workaround for bug #10248, a spurious error message on
the first invocation of rootless podman on Ubuntu.Old

Signed-off-by: Ed Santiago <santiago@redhat.com>
This commit is contained in:
Ed Santiago 2021-05-05 15:34:54 -06:00
parent 176ae99187
commit 95a50a936a
4 changed files with 22 additions and 17 deletions

View File

@ -539,7 +539,7 @@ rootless_integration_test_task:
skip: *branches_and_tags skip: *branches_and_tags
depends_on: depends_on:
- unit_test - unit_test
matrix: *fedora_vm_axis matrix: *platform_axis
gce_instance: *standardvm gce_instance: *standardvm
timeout_in: 90m timeout_in: 90m
env: env:
@ -614,7 +614,7 @@ rootless_system_test_task:
only_if: *not_docs only_if: *not_docs
depends_on: depends_on:
- rootless_integration_test - rootless_integration_test
matrix: *fedora_vm_axis matrix: *platform_axis
gce_instance: *standardvm gce_instance: *standardvm
env: env:
TEST_FLAVOR: sys TEST_FLAVOR: sys

View File

@ -605,13 +605,6 @@ func SkipIfRootlessCgroupsV1(reason string) {
} }
} }
func SkipIfUnprivilegedCPULimits() {
info := GetHostDistributionInfo()
if isRootless() && info.Distribution == "fedora" {
ginkgo.Skip("Rootless Fedora doesn't have permission to set CPU limits")
}
}
func SkipIfRootless(reason string) { func SkipIfRootless(reason string) {
checkReason(reason) checkReason(reason)
if os.Geteuid() != 0 { if os.Geteuid() != 0 {

View File

@ -1999,8 +1999,7 @@ VOLUME %s`, ALPINE, hostPathDir+"/")
It("podman play kube allows setting resource limits", func() { It("podman play kube allows setting resource limits", func() {
SkipIfContainerized("Resource limits require a running systemd") SkipIfContainerized("Resource limits require a running systemd")
SkipIfRootlessCgroupsV1("Limits require root or cgroups v2") SkipIfRootless("CPU limits require root")
SkipIfUnprivilegedCPULimits()
podmanTest.CgroupManager = "systemd" podmanTest.CgroupManager = "systemd"
var ( var (

View File

@ -10,16 +10,18 @@ function setup() {
: :
} }
@test "podman --context emits reasonable output" { #### DO NOT ADD ANY TESTS HERE! ADD NEW TESTS AT BOTTOM!
run_podman 125 --context=swarm version
is "$output" "Error: Podman does not support swarm, the only --context value allowed is \"default\"" "--context=default or fail"
run_podman --context=default version
}
@test "podman version emits reasonable output" { @test "podman version emits reasonable output" {
run_podman version run_podman version
# FIXME FIXME FIXME: #10248: nasty message on Ubuntu cgroups v1, rootless
if [[ "$output" =~ "overlay test mount with multiple lowers failed" ]]; then
if is_rootless; then
lines=("${lines[@]:1}")
fi
fi
# First line of podman-remote is "Client:<blank>". # First line of podman-remote is "Client:<blank>".
# Just delete it (i.e. remove the first entry from the 'lines' array) # Just delete it (i.e. remove the first entry from the 'lines' array)
if is_remote; then if is_remote; then
@ -41,6 +43,17 @@ function setup() {
} }
@test "podman --context emits reasonable output" {
# All we care about here is that the command passes
run_podman --context=default version
# This one must fail
run_podman 125 --context=swarm version
is "$output" \
"Error: Podman does not support swarm, the only --context value allowed is \"default\"" \
"--context=default or fail"
}
@test "podman can pull an image" { @test "podman can pull an image" {
run_podman pull $IMAGE run_podman pull $IMAGE
} }