Make all Skips specify a reason

Always use CGROUPV2 rather then reading from system all the time.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
Daniel J Walsh
2020-09-28 09:17:27 -04:00
parent 453333a35c
commit b496802413
33 changed files with 126 additions and 154 deletions

View File

@ -27,7 +27,7 @@ var _ = Describe("Podman checkpoint", func() {
) )
BeforeEach(func() { BeforeEach(func() {
SkipIfRootless() //checkpoint not supported in rootless mode SkipIfRootless("checkpoint not supported in rootless mode")
tempdir, err = CreateTempDirInTempDir() tempdir, err = CreateTempDirInTempDir()
if err != nil { if err != nil {
os.Exit(1) os.Exit(1)

View File

@ -599,6 +599,24 @@ func (p *PodmanTestIntegration) CreateSeccompJson(in []byte) (string, error) {
return jsonFile, nil return jsonFile, nil
} }
func SkipIfRootlessCgroupsV1(reason string) {
if len(reason) < 5 {
panic("SkipIfRootlessCgroupsV1 must specify a reason to skip")
}
if os.Geteuid() != 0 && !CGROUPSV2 {
Skip("[rootless]: " + reason)
}
}
func SkipIfRootless(reason string) {
if len(reason) < 5 {
panic("SkipIfRootless must specify a reason to skip")
}
if os.Geteuid() != 0 {
ginkgo.Skip("[rootless]: " + reason)
}
}
func SkipIfNotFedora() { func SkipIfNotFedora() {
info := GetHostDistributionInfo() info := GetHostDistributionInfo()
if info.Distribution != "fedora" { if info.Distribution != "fedora" {
@ -610,21 +628,21 @@ func isRootless() bool {
return os.Geteuid() != 0 return os.Geteuid() != 0
} }
func SkipIfCgroupV1() { func SkipIfCgroupV1(reason string) {
cgroupsv2, err := cgroups.IsCgroup2UnifiedMode() if len(reason) < 5 {
Expect(err).To(BeNil()) panic("SkipIfCgroupV1 must specify a reason to skip")
}
if !cgroupsv2 { if !CGROUPSV2 {
Skip("Skip on systems with cgroup V1 systems") Skip(reason)
} }
} }
func SkipIfCgroupV2() { func SkipIfCgroupV2(reason string) {
cgroupsv2, err := cgroups.IsCgroup2UnifiedMode() if len(reason) < 5 {
Expect(err).To(BeNil()) panic("SkipIfCgroupV2 must specify a reason to skip")
}
if cgroupsv2 { if CGROUPSV2 {
Skip("Skip on systems with cgroup V2 systems") Skip(reason)
} }
} }

View File

@ -23,8 +23,4 @@ var (
// This image has a bogus/invalid seccomp profile which should // This image has a bogus/invalid seccomp profile which should
// yield a json error when being read. // yield a json error when being read.
alpineBogusSeccomp = "docker.io/libpod/alpine-with-bogus-seccomp:label" alpineBogusSeccomp = "docker.io/libpod/alpine-with-bogus-seccomp:label"
// v2fail is a temporary variable to help us track
// tests that fail in v2
v2fail = "does not pass integration tests with v2 podman"
) )

View File

@ -41,7 +41,7 @@ var _ = Describe("Podman run", func() {
}) })
It("podman run limits test", func() { It("podman run limits test", func() {
SkipIfRootlessCgroupsV1() SkipIfRootlessCgroupsV1("Setting limits not supported on cgroupv1 for rootless users")
//containers.conf is set to "nofile=500:500" //containers.conf is set to "nofile=500:500"
session := podmanTest.Podman([]string{"run", "--rm", fedoraMinimal, "ulimit", "-n"}) session := podmanTest.Podman([]string{"run", "--rm", fedoraMinimal, "ulimit", "-n"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()

View File

@ -49,7 +49,7 @@ var _ = Describe("Podman create with --ip flag", func() {
}) })
It("Podman create --ip with non-allocatable IP", func() { It("Podman create --ip with non-allocatable IP", func() {
SkipIfRootless() // --ip is not supported in rootless mode SkipIfRootless("--ip is not supported in rootless mode")
result := podmanTest.Podman([]string{"create", "--name", "test", "--ip", "203.0.113.124", ALPINE, "ls"}) result := podmanTest.Podman([]string{"create", "--name", "test", "--ip", "203.0.113.124", ALPINE, "ls"})
result.WaitWithDefaultTimeout() result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0)) Expect(result.ExitCode()).To(Equal(0))
@ -81,7 +81,7 @@ var _ = Describe("Podman create with --ip flag", func() {
}) })
It("Podman create two containers with the same IP", func() { It("Podman create two containers with the same IP", func() {
SkipIfRootless() // --ip not supported in rootless mode SkipIfRootless("--ip not supported in rootless mode")
ip := GetRandomIPAddress() ip := GetRandomIPAddress()
result := podmanTest.Podman([]string{"create", "--name", "test1", "--ip", ip, ALPINE, "sleep", "999"}) result := podmanTest.Podman([]string{"create", "--name", "test1", "--ip", ip, ALPINE, "sleep", "999"})
result.WaitWithDefaultTimeout() result.WaitWithDefaultTimeout()

View File

@ -552,7 +552,7 @@ var _ = Describe("Podman create", func() {
}) })
It("create container in pod with IP should fail", func() { It("create container in pod with IP should fail", func() {
SkipIfRootless() //Setting IP not supported in rootless mode SkipIfRootless("Setting IP not supported in rootless mode")
name := "createwithstaticip" name := "createwithstaticip"
pod := podmanTest.RunTopContainerInPod("", "new:"+name) pod := podmanTest.RunTopContainerInPod("", "new:"+name)
pod.WaitWithDefaultTimeout() pod.WaitWithDefaultTimeout()
@ -564,7 +564,7 @@ var _ = Describe("Podman create", func() {
}) })
It("create container in pod with mac should fail", func() { It("create container in pod with mac should fail", func() {
SkipIfRootless() //Setting MAC Address not supported in rootless mode SkipIfRootless("Setting MAC Address not supported in rootless mode")
name := "createwithstaticmac" name := "createwithstaticmac"
pod := podmanTest.RunTopContainerInPod("", "new:"+name) pod := podmanTest.RunTopContainerInPod("", "new:"+name)
pod.WaitWithDefaultTimeout() pod.WaitWithDefaultTimeout()

View File

@ -24,16 +24,10 @@ func IsRemote() bool {
} }
func SkipIfRemote(reason string) { func SkipIfRemote(reason string) {
ginkgo.Skip("[remote]: " + reason) if len(reason) < 5 {
} panic("SkipIfRemote must specify a reason to skip")
func SkipIfRootlessCgroupsV1() {
}
func SkipIfRootless() {
if os.Geteuid() != 0 {
ginkgo.Skip("This function is not enabled for rootless podman")
} }
ginkgo.Skip("[remote]: " + reason)
} }
// Podman is the exec call to podman on the filesystem // Podman is the exec call to podman on the filesystem

View File

@ -8,8 +8,6 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"strings" "strings"
. "github.com/onsi/ginkgo"
) )
func IsRemote() bool { func IsRemote() bool {
@ -19,18 +17,6 @@ func IsRemote() bool {
func SkipIfRemote(string) { func SkipIfRemote(string) {
} }
func SkipIfRootlessCgroupsV1() {
if os.Geteuid() != 0 && !CGROUPSV2 {
Skip("Rooless requires cgroupsV2 to set limits")
}
}
func SkipIfRootless() {
if os.Geteuid() != 0 {
Skip("This function is not enabled for rootless podman")
}
}
// Podman is the exec call to podman on the filesystem // Podman is the exec call to podman on the filesystem
func (p *PodmanTestIntegration) Podman(args []string) *PodmanSessionIntegration { func (p *PodmanTestIntegration) Podman(args []string) *PodmanSessionIntegration {
podmanSession := p.PodmanBase(args, false, false) podmanSession := p.PodmanBase(args, false, false)

View File

@ -23,19 +23,10 @@ func IsRemote() bool {
return true return true
} }
func SkipIfRootlessCgroupsV1() {
}
func SkipIfRemote(reason string) { func SkipIfRemote(reason string) {
ginkgo.Skip("[remote]: " + reason) ginkgo.Skip("[remote]: " + reason)
} }
func SkipIfRootless() {
if os.Geteuid() != 0 {
ginkgo.Skip("This function is not enabled for rootless podman")
}
}
// Podman is the exec call to podman on the filesystem // Podman is the exec call to podman on the filesystem
func (p *PodmanTestIntegration) Podman(args []string) *PodmanSessionIntegration { func (p *PodmanTestIntegration) Podman(args []string) *PodmanSessionIntegration {
podmanSession := p.PodmanBase(args, false, false) podmanSession := p.PodmanBase(args, false, false)

View File

@ -47,7 +47,7 @@ var _ = Describe("Podman login and logout", func() {
se := SystemExec("setenforce", []string{"0"}) se := SystemExec("setenforce", []string{"0"})
se.WaitWithDefaultTimeout() se.WaitWithDefaultTimeout()
if se.ExitCode() != 0 { if se.ExitCode() != 0 {
Skip("Can not disable selinux, this may cause problem for reading cert files inside container.") Skip("Cannot disable selinux, this may cause problem for reading cert files inside container.")
} }
defer SystemExec("setenforce", []string{"1"}) defer SystemExec("setenforce", []string{"1"})
} }
@ -87,7 +87,7 @@ var _ = Describe("Podman login and logout", func() {
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))
if !WaitContainerReady(podmanTest, "registry", "listening on", 20, 1) { if !WaitContainerReady(podmanTest, "registry", "listening on", 20, 1) {
Skip("Can not start docker registry.") Skip("Cannot start docker registry.")
} }
}) })
@ -116,8 +116,6 @@ var _ = Describe("Podman login and logout", func() {
}) })
It("podman login and logout without registry parameter", func() { It("podman login and logout without registry parameter", func() {
SkipIfRootless()
registriesConf, err := ioutil.TempFile("", "TestLoginWithoutParameter") registriesConf, err := ioutil.TempFile("", "TestLoginWithoutParameter")
Expect(err).To(BeNil()) Expect(err).To(BeNil())
defer registriesConf.Close() defer registriesConf.Close()
@ -231,7 +229,7 @@ var _ = Describe("Podman login and logout", func() {
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))
if !WaitContainerReady(podmanTest, "registry1", "listening on", 20, 1) { if !WaitContainerReady(podmanTest, "registry1", "listening on", 20, 1) {
Skip("Can not start docker registry.") Skip("Cannot start docker registry.")
} }
session = podmanTest.Podman([]string{"login", "--username", "podmantest", "--password", "test", server}) session = podmanTest.Podman([]string{"login", "--username", "podmantest", "--password", "test", server})

View File

@ -18,7 +18,7 @@ var _ = Describe("Podman mount", func() {
) )
BeforeEach(func() { BeforeEach(func() {
SkipIfRootless() SkipIfRootless("Podman mount requires podman unshare first to work")
tempdir, err = CreateTempDirInTempDir() tempdir, err = CreateTempDirInTempDir()
if err != nil { if err != nil {
os.Exit(1) os.Exit(1)
@ -189,7 +189,7 @@ var _ = Describe("Podman mount", func() {
}) })
It("podman list running container", func() { It("podman list running container", func() {
SkipIfRootless() // FIXME: We need to do a podman unshare before executing this code. SkipIfRootless("FIXME: We need to do a podman unshare before executing this code.")
setup := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"}) setup := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"})
setup.WaitWithDefaultTimeout() setup.WaitWithDefaultTimeout()
@ -212,7 +212,7 @@ var _ = Describe("Podman mount", func() {
}) })
It("podman list multiple mounted containers", func() { It("podman list multiple mounted containers", func() {
SkipIfRootless() // FIXME: We need to do a podman unshare before executing this code. SkipIfRootless("FIXME: We need to do a podman unshare before executing this code.")
setup := podmanTest.Podman([]string{"create", ALPINE, "ls"}) setup := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup.WaitWithDefaultTimeout() setup.WaitWithDefaultTimeout()
@ -257,7 +257,7 @@ var _ = Describe("Podman mount", func() {
}) })
It("podman list mounted container", func() { It("podman list mounted container", func() {
SkipIfRootless() // FIXME: We need to do a podman unshare before executing this code. SkipIfRootless("FIXME: We need to do a podman unshare before executing this code.")
setup := podmanTest.Podman([]string{"create", ALPINE, "ls"}) setup := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup.WaitWithDefaultTimeout() setup.WaitWithDefaultTimeout()

View File

@ -178,7 +178,7 @@ var _ = Describe("Podman network create", func() {
}) })
It("podman network create with name and IPv6 subnet", func() { It("podman network create with name and IPv6 subnet", func() {
SkipIfRootless() // FIXME I believe this should work in rootlessmode SkipIfRootless("FIXME I believe this should work in rootlessmode")
var ( var (
results []network.NcList results []network.NcList

View File

@ -135,7 +135,7 @@ var _ = Describe("Podman network", func() {
}) })
It("podman network rm", func() { It("podman network rm", func() {
SkipIfRootless() // FIXME: This one is definitely broken in rootless mode SkipIfRootless("FIXME: This one is definitely broken in rootless mode")
// Setup, use uuid to prevent conflict with other tests // Setup, use uuid to prevent conflict with other tests
uuid := stringid.GenerateNonCryptoID() uuid := stringid.GenerateNonCryptoID()
secondPath := filepath.Join(podmanTest.CNIConfigDir, fmt.Sprintf("%s.conflist", uuid)) secondPath := filepath.Join(podmanTest.CNIConfigDir, fmt.Sprintf("%s.conflist", uuid))

View File

@ -7,7 +7,6 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
"github.com/containers/podman/v2/pkg/cgroups"
. "github.com/containers/podman/v2/test/utils" . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
@ -24,16 +23,13 @@ var _ = Describe("Podman pause", func() {
createdState := "created" createdState := "created"
BeforeEach(func() { BeforeEach(func() {
SkipIfRootlessCgroupsV1() // Pause is not supported in cgroups v1 SkipIfRootlessCgroupsV1("Pause is not supported in cgroups v1")
tempdir, err = CreateTempDirInTempDir() tempdir, err = CreateTempDirInTempDir()
if err != nil { if err != nil {
os.Exit(1) os.Exit(1)
} }
cgroupsv2, err := cgroups.IsCgroup2UnifiedMode() if CGROUPSV2 {
Expect(err).To(BeNil())
if cgroupsv2 {
b, err := ioutil.ReadFile("/proc/self/cgroup") b, err := ioutil.ReadFile("/proc/self/cgroup")
if err != nil { if err != nil {
Skip("cannot read self cgroup") Skip("cannot read self cgroup")

View File

@ -18,7 +18,7 @@ var _ = Describe("Podman pod pause", func() {
pausedState := "paused" pausedState := "paused"
BeforeEach(func() { BeforeEach(func() {
SkipIfRootlessCgroupsV1() // Pause is not supported in cgroups v1 SkipIfRootlessCgroupsV1("Pause is not supported in cgroups v1")
tempdir, err = CreateTempDirInTempDir() tempdir, err = CreateTempDirInTempDir()
if err != nil { if err != nil {
os.Exit(1) os.Exit(1)

View File

@ -17,7 +17,7 @@ var _ = Describe("Podman pod stats", func() {
BeforeEach(func() { BeforeEach(func() {
if os.Geteuid() != 0 { if os.Geteuid() != 0 {
SkipIfCgroupV2() SkipIfCgroupV2("--cgroup-manager=cgroupfs which doesn't work in rootless mode")
} }
tempdir, err = CreateTempDirInTempDir() tempdir, err = CreateTempDirInTempDir()
@ -175,7 +175,7 @@ var _ = Describe("Podman pod stats", func() {
It("podman stats on net=host post", func() { It("podman stats on net=host post", func() {
// --net=host not supported for rootless pods at present // --net=host not supported for rootless pods at present
SkipIfRootlessCgroupsV1() // Pause stats not supported in cgroups v1 SkipIfRootlessCgroupsV1("Pause stats not supported in cgroups v1")
podName := "testPod" podName := "testPod"
podCreate := podmanTest.Podman([]string{"pod", "create", "--net=host", "--name", podName}) podCreate := podmanTest.Podman([]string{"pod", "create", "--net=host", "--name", podName})
podCreate.WaitWithDefaultTimeout() podCreate.WaitWithDefaultTimeout()

View File

@ -206,7 +206,7 @@ var _ = Describe("Podman ps", func() {
}) })
It("podman ps namespace flag with go template format", func() { It("podman ps namespace flag with go template format", func() {
Skip(v2fail) Skip("FIXME: table still not supported in podman ps command")
_, ec, _ := podmanTest.RunLsContainer("test1") _, ec, _ := podmanTest.RunLsContainer("test1")
Expect(ec).To(Equal(0)) Expect(ec).To(Equal(0))

View File

@ -70,7 +70,7 @@ var _ = Describe("Podman push", func() {
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))
if !WaitContainerReady(podmanTest, "registry", "listening on", 20, 1) { if !WaitContainerReady(podmanTest, "registry", "listening on", 20, 1) {
Skip("Can not start docker registry.") Skip("Cannot start docker registry.")
} }
push := podmanTest.PodmanNoCache([]string{"push", "--tls-verify=false", "--remove-signatures", ALPINE, "localhost:5000/my-alpine"}) push := podmanTest.PodmanNoCache([]string{"push", "--tls-verify=false", "--remove-signatures", ALPINE, "localhost:5000/my-alpine"})
@ -87,7 +87,7 @@ var _ = Describe("Podman push", func() {
}) })
It("podman push to local registry with authorization", func() { It("podman push to local registry with authorization", func() {
SkipIfRootless() // FIXME: Creating content in certs.d we use directories in homedir SkipIfRootless("FIXME: Creating content in certs.d we use directories in homedir")
if podmanTest.Host.Arch == "ppc64le" { if podmanTest.Host.Arch == "ppc64le" {
Skip("No registry image for ppc64le") Skip("No registry image for ppc64le")
} }
@ -132,7 +132,7 @@ var _ = Describe("Podman push", func() {
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))
if !WaitContainerReady(podmanTest, "registry", "listening on", 20, 1) { if !WaitContainerReady(podmanTest, "registry", "listening on", 20, 1) {
Skip("Can not start docker registry.") Skip("Cannot start docker registry.")
} }
session = podmanTest.PodmanNoCache([]string{"logs", "registry"}) session = podmanTest.PodmanNoCache([]string{"logs", "registry"})

View File

@ -18,7 +18,7 @@ var _ = Describe("Podman run with --cgroup-parent", func() {
) )
BeforeEach(func() { BeforeEach(func() {
SkipIfRootlessCgroupsV1() // cgroup parent is not supported in cgroups v1 SkipIfRootlessCgroupsV1("cgroup parent is not supported in cgroups v1")
tempdir, err = CreateTempDirInTempDir() tempdir, err = CreateTempDirInTempDir()
if err != nil { if err != nil {
os.Exit(1) os.Exit(1)
@ -48,7 +48,7 @@ var _ = Describe("Podman run with --cgroup-parent", func() {
}) })
Specify("no --cgroup-parent", func() { Specify("no --cgroup-parent", func() {
SkipIfRootless() // FIXME This seems to be broken in rootless mode SkipIfRootless("FIXME This seems to be broken in rootless mode")
cgroup := "/libpod_parent" cgroup := "/libpod_parent"
if !Containerized() && podmanTest.CgroupManager != "cgroupfs" { if !Containerized() && podmanTest.CgroupManager != "cgroupfs" {
cgroup = "/machine.slice" cgroup = "/machine.slice"

View File

@ -34,7 +34,7 @@ var _ = Describe("Podman run exit", func() {
It("podman run -d mount cleanup test", func() { It("podman run -d mount cleanup test", func() {
SkipIfRemote("podman-remote does not support mount") SkipIfRemote("podman-remote does not support mount")
SkipIfRootless() // FIXME podman mount requires podman unshare first SkipIfRootless("FIXME podman mount requires podman unshare first")
result := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"}) result := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"})
result.WaitWithDefaultTimeout() result.WaitWithDefaultTimeout()

View File

@ -4,7 +4,6 @@ import (
"io/ioutil" "io/ioutil"
"os" "os"
"github.com/containers/podman/v2/pkg/cgroups"
. "github.com/containers/podman/v2/test/utils" . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
@ -18,17 +17,14 @@ var _ = Describe("Podman run cpu", func() {
) )
BeforeEach(func() { BeforeEach(func() {
SkipIfRootlessCgroupsV1() SkipIfRootlessCgroupsV1("Setting CPU not supported on cgroupv1 for rootless users")
tempdir, err = CreateTempDirInTempDir() tempdir, err = CreateTempDirInTempDir()
if err != nil { if err != nil {
os.Exit(1) os.Exit(1)
} }
cgroupsv2, err := cgroups.IsCgroup2UnifiedMode() if CGROUPSV2 {
Expect(err).To(BeNil())
if cgroupsv2 {
if err := ioutil.WriteFile("/sys/fs/cgroup/cgroup.subtree_control", []byte("+cpuset"), 0644); err != nil { if err := ioutil.WriteFile("/sys/fs/cgroup/cgroup.subtree_control", []byte("+cpuset"), 0644); err != nil {
Skip("cpuset controller not available on the current kernel") Skip("cpuset controller not available on the current kernel")
} }

View File

@ -72,7 +72,7 @@ var _ = Describe("Podman run device", func() {
}) })
It("podman run device host device and container device parameter are directories", func() { It("podman run device host device and container device parameter are directories", func() {
SkipIfRootless() // Can not create devices in /dev in rootless mode SkipIfRootless("Cannot create devices in /dev in rootless mode")
Expect(os.MkdirAll("/dev/foodevdir", os.ModePerm)).To(BeNil()) Expect(os.MkdirAll("/dev/foodevdir", os.ModePerm)).To(BeNil())
defer os.RemoveAll("/dev/foodevdir") defer os.RemoveAll("/dev/foodevdir")

View File

@ -3,7 +3,6 @@ package integration
import ( import (
"os" "os"
"github.com/containers/podman/v2/pkg/cgroups"
. "github.com/containers/podman/v2/test/utils" . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
@ -17,9 +16,9 @@ var _ = Describe("Podman run memory", func() {
) )
BeforeEach(func() { BeforeEach(func() {
SkipIfRootlessCgroupsV1() SkipIfRootlessCgroupsV1("Setting Memory not supported on cgroupv1 for rootless users")
SkipIfRootless() SkipIfRootless("FIXME: This should work on cgroups V2 systems")
tempdir, err = CreateTempDirInTempDir() tempdir, err = CreateTempDirInTempDir()
if err != nil { if err != nil {
os.Exit(1) os.Exit(1)
@ -37,12 +36,9 @@ var _ = Describe("Podman run memory", func() {
}) })
It("podman run memory test", func() { It("podman run memory test", func() {
cgroupsv2, err := cgroups.IsCgroup2UnifiedMode()
Expect(err).To(BeNil())
var session *PodmanSessionIntegration var session *PodmanSessionIntegration
if cgroupsv2 { if CGROUPSV2 {
session = podmanTest.Podman([]string{"run", "--memory=40m", ALPINE, "sh", "-c", "cat /sys/fs/cgroup/$(sed -e 's|0::||' < /proc/self/cgroup)/memory.max"}) session = podmanTest.Podman([]string{"run", "--memory=40m", ALPINE, "sh", "-c", "cat /sys/fs/cgroup/$(sed -e 's|0::||' < /proc/self/cgroup)/memory.max"})
} else { } else {
session = podmanTest.Podman([]string{"run", "--memory=40m", ALPINE, "cat", "/sys/fs/cgroup/memory/memory.limit_in_bytes"}) session = podmanTest.Podman([]string{"run", "--memory=40m", ALPINE, "cat", "/sys/fs/cgroup/memory/memory.limit_in_bytes"})
@ -57,28 +53,21 @@ var _ = Describe("Podman run memory", func() {
Skip("Unable to perform test on Ubuntu distributions due to memory management") Skip("Unable to perform test on Ubuntu distributions due to memory management")
} }
cgroupsv2, err := cgroups.IsCgroup2UnifiedMode()
Expect(err).To(BeNil())
var session *PodmanSessionIntegration var session *PodmanSessionIntegration
if cgroupsv2 { if CGROUPSV2 {
session = podmanTest.Podman([]string{"run", "--memory-reservation=40m", ALPINE, "sh", "-c", "cat /sys/fs/cgroup/$(sed -e 's|0::||' < /proc/self/cgroup)/memory.high"}) session = podmanTest.Podman([]string{"run", "--memory-reservation=40m", ALPINE, "sh", "-c", "cat /sys/fs/cgroup/$(sed -e 's|0::||' < /proc/self/cgroup)/memory.low"})
} else { } else {
session = podmanTest.Podman([]string{"run", "--memory-reservation=40m", ALPINE, "cat", "/sys/fs/cgroup/memory/memory.soft_limit_in_bytes"}) session = podmanTest.Podman([]string{"run", "--memory-reservation=40m", ALPINE, "cat", "/sys/fs/cgroup/memory/memory.soft_limit_in_bytes"})
} }
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))
if cgroupsv2 {
Expect(session.OutputToString()).To(Equal("max"))
} else {
Expect(session.OutputToString()).To(Equal("41943040")) Expect(session.OutputToString()).To(Equal("41943040"))
}
}) })
It("podman run memory-swappiness test", func() { It("podman run memory-swappiness test", func() {
SkipIfCgroupV2() SkipIfCgroupV2("memory-swappiness not supported on cgroupV2")
session := podmanTest.Podman([]string{"run", "--memory-swappiness=15", ALPINE, "cat", "/sys/fs/cgroup/memory/memory.swappiness"}) session := podmanTest.Podman([]string{"run", "--memory-swappiness=15", ALPINE, "cat", "/sys/fs/cgroup/memory/memory.swappiness"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))
@ -86,8 +75,18 @@ var _ = Describe("Podman run memory", func() {
}) })
It("podman run kernel-memory test", func() { It("podman run kernel-memory test", func() {
SkipIfCgroupV2() if podmanTest.Host.Distribution == "ubuntu" {
session := podmanTest.Podman([]string{"run", "--kernel-memory=40m", ALPINE, "cat", "/sys/fs/cgroup/memory/memory.kmem.limit_in_bytes"}) Skip("Unable to perform test on Ubuntu distributions due to memory management")
}
var session *PodmanSessionIntegration
if CGROUPSV2 {
session = podmanTest.Podman([]string{"run", "--memory-reservation=40m", ALPINE, "sh", "-c", "cat /sys/fs/cgroup/$(sed -e 's|0::||' < /proc/self/cgroup)/memory.low"})
} else {
session = podmanTest.Podman([]string{"run", "--memory-reservation=40m", ALPINE, "cat", "/sys/fs/cgroup/memory/memory.soft_limit_in_bytes"})
}
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))
Expect(session.OutputToString()).To(Equal("41943040")) Expect(session.OutputToString()).To(Equal("41943040"))

View File

@ -55,7 +55,7 @@ var _ = Describe("Podman run networking", func() {
}) })
It("podman run network expose port 222", func() { It("podman run network expose port 222", func() {
SkipIfRootless() // iptables is not supported for rootless users SkipIfRootless("iptables is not supported for rootless users")
session := podmanTest.Podman([]string{"run", "-dt", "--expose", "222-223", "-P", ALPINE, "/bin/sh"}) session := podmanTest.Podman([]string{"run", "-dt", "--expose", "222-223", "-P", ALPINE, "/bin/sh"})
session.Wait(30) session.Wait(30)
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))
@ -252,7 +252,7 @@ var _ = Describe("Podman run networking", func() {
}) })
It("podman run network expose host port 80 to container port 8000", func() { It("podman run network expose host port 80 to container port 8000", func() {
SkipIfRootless() // iptables is not supported for rootless users SkipIfRootless("iptables is not supported for rootless users")
session := podmanTest.Podman([]string{"run", "-dt", "-p", "80:8000", ALPINE, "/bin/sh"}) session := podmanTest.Podman([]string{"run", "-dt", "-p", "80:8000", ALPINE, "/bin/sh"})
session.Wait(30) session.Wait(30)
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))
@ -367,7 +367,7 @@ var _ = Describe("Podman run networking", func() {
}) })
It("podman run network expose duplicate host port results in error", func() { It("podman run network expose duplicate host port results in error", func() {
SkipIfRootless() // FIXME we should be able to run this test in rootless mode with different ports SkipIfRootless("FIXME we should be able to run this test in rootless mode with different ports")
session := podmanTest.Podman([]string{"run", "--name", "test", "-dt", "-p", "80", ALPINE, "/bin/sh"}) session := podmanTest.Podman([]string{"run", "--name", "test", "-dt", "-p", "80", ALPINE, "/bin/sh"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
@ -478,9 +478,9 @@ var _ = Describe("Podman run networking", func() {
}) })
It("podman run network in user created network namespace", func() { It("podman run network in user created network namespace", func() {
SkipIfRootless() // ip netns is not supported for rootless users SkipIfRootless("ip netns is not supported for rootless users")
if Containerized() { if Containerized() {
Skip("Can not be run within a container.") Skip("Cannot be run within a container.")
} }
addXXX := SystemExec("ip", []string{"netns", "add", "xxx"}) addXXX := SystemExec("ip", []string{"netns", "add", "xxx"})
Expect(addXXX.ExitCode()).To(Equal(0)) Expect(addXXX.ExitCode()).To(Equal(0))
@ -495,9 +495,9 @@ var _ = Describe("Podman run networking", func() {
}) })
It("podman run n user created network namespace with resolv.conf", func() { It("podman run n user created network namespace with resolv.conf", func() {
SkipIfRootless() // ip netns is not supported for rootless users SkipIfRootless("ip netns is not supported for rootless users")
if Containerized() { if Containerized() {
Skip("Can not be run within a container.") Skip("Cannot be run within a container.")
} }
addXXX2 := SystemExec("ip", []string{"netns", "add", "xxx2"}) addXXX2 := SystemExec("ip", []string{"netns", "add", "xxx2"})
Expect(addXXX2.ExitCode()).To(Equal(0)) Expect(addXXX2.ExitCode()).To(Equal(0))
@ -527,7 +527,7 @@ var _ = Describe("Podman run networking", func() {
}) })
It("podman run in custom CNI network with --static-ip", func() { It("podman run in custom CNI network with --static-ip", func() {
SkipIfRootless() //Rootless mode does not support --ip SkipIfRootless("Rootless mode does not support --ip")
netName := "podmantestnetwork" netName := "podmantestnetwork"
ipAddr := "10.25.30.128" ipAddr := "10.25.30.128"
create := podmanTest.Podman([]string{"network", "create", "--subnet", "10.25.30.0/24", netName}) create := podmanTest.Podman([]string{"network", "create", "--subnet", "10.25.30.0/24", netName})
@ -542,7 +542,7 @@ var _ = Describe("Podman run networking", func() {
}) })
It("podman run with new:pod and static-ip", func() { It("podman run with new:pod and static-ip", func() {
SkipIfRootless() // Rootless does not support --ip SkipIfRootless("Rootless does not support --ip")
netName := "podmantestnetwork2" netName := "podmantestnetwork2"
ipAddr := "10.25.40.128" ipAddr := "10.25.40.128"
podname := "testpod" podname := "testpod"

View File

@ -106,7 +106,7 @@ var _ = Describe("Podman privileged container tests", func() {
}) })
It("podman privileged should inherit host devices", func() { It("podman privileged should inherit host devices", func() {
SkipIfRootless() // FIXME: This seems to be broken for rootless mode, /dev/ is close to the same SkipIfRootless("FIXME: This seems to be broken for rootless mode, /dev/ is close to the same")
session := podmanTest.Podman([]string{"run", "--privileged", ALPINE, "ls", "-l", "/dev"}) session := podmanTest.Podman([]string{"run", "--privileged", ALPINE, "ls", "-l", "/dev"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))

View File

@ -19,7 +19,7 @@ var _ = Describe("Podman run with --ip flag", func() {
) )
BeforeEach(func() { BeforeEach(func() {
SkipIfRootless() //rootless does not support --ip SkipIfRootless("rootless does not support --ip")
tempdir, err = CreateTempDirInTempDir() tempdir, err = CreateTempDirInTempDir()
if err != nil { if err != nil {
os.Exit(1) os.Exit(1)

View File

@ -309,7 +309,7 @@ USER bin`
}) })
It("podman run limits test", func() { It("podman run limits test", func() {
SkipIfRootlessCgroupsV1() SkipIfRootlessCgroupsV1("Setting limits not supported on cgroupv1 for rootless users")
if !isRootless() { if !isRootless() {
session := podmanTest.Podman([]string{"run", "--rm", "--ulimit", "rtprio=99", "--cap-add=sys_nice", fedoraMinimal, "cat", "/proc/self/sched"}) session := podmanTest.Podman([]string{"run", "--rm", "--ulimit", "rtprio=99", "--cap-add=sys_nice", fedoraMinimal, "cat", "/proc/self/sched"})
@ -368,7 +368,7 @@ USER bin`
}) })
It("podman run sysctl test", func() { It("podman run sysctl test", func() {
SkipIfRootless() // Network sysclts are not avalable root rootless SkipIfRootless("Network sysctls are not avalable root rootless")
session := podmanTest.Podman([]string{"run", "--rm", "--sysctl", "net.core.somaxconn=65535", ALPINE, "sysctl", "net.core.somaxconn"}) session := podmanTest.Podman([]string{"run", "--rm", "--sysctl", "net.core.somaxconn=65535", ALPINE, "sysctl", "net.core.somaxconn"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))
@ -381,8 +381,8 @@ USER bin`
}) })
It("podman run blkio-weight test", func() { It("podman run blkio-weight test", func() {
SkipIfRootless() // FIXME: This is blowing up because of no /sys/fs/cgroup/user.slice/user-14467.slice/user@14467.service/cgroup.subtree_control file SkipIfRootless("FIXME: This is blowing up because of no /sys/fs/cgroup/user.slice/user-14467.slice/user@14467.service/cgroup.subtree_control file")
// SkipIfRootlessCgroupsV1() SkipIfRootlessCgroupsV1("Setting blkio-weight not supported on cgroupv1 for rootless users")
if !CGROUPSV2 { if !CGROUPSV2 {
if _, err := os.Stat("/sys/fs/cgroup/blkio/blkio.weight"); os.IsNotExist(err) { if _, err := os.Stat("/sys/fs/cgroup/blkio/blkio.weight"); os.IsNotExist(err) {
Skip("Kernel does not support blkio.weight") Skip("Kernel does not support blkio.weight")
@ -404,8 +404,9 @@ USER bin`
}) })
It("podman run device-read-bps test", func() { It("podman run device-read-bps test", func() {
SkipIfRootless() // FIXME: Missing /sys/fs/cgroup/user.slice/user-14467.slice/user@14467.service/cgroup.subtree_control SkipIfRootless("FIXME: Missing /sys/fs/cgroup/user.slice/user-14467.slice/user@14467.service/cgroup.subtree_control")
SkipIfRootlessCgroupsV1() SkipIfRootlessCgroupsV1("Setting device-read-bps not supported on cgroupv1 for rootless users")
var session *PodmanSessionIntegration var session *PodmanSessionIntegration
if CGROUPSV2 { if CGROUPSV2 {
@ -422,8 +423,9 @@ USER bin`
}) })
It("podman run device-write-bps test", func() { It("podman run device-write-bps test", func() {
SkipIfRootless() // FIXME /sys/fs/cgroup/user.slice/user-14467.slice/user@14467.service/cgroup.subtree_control does not exist SkipIfRootless("FIXME /sys/fs/cgroup/user.slice/user-14467.slice/user@14467.service/cgroup.subtree_control does not exist")
SkipIfRootlessCgroupsV1() SkipIfRootlessCgroupsV1("Setting device-write-bps not supported on cgroupv1 for rootless users")
var session *PodmanSessionIntegration var session *PodmanSessionIntegration
if CGROUPSV2 { if CGROUPSV2 {
@ -439,8 +441,8 @@ USER bin`
}) })
It("podman run device-read-iops test", func() { It("podman run device-read-iops test", func() {
SkipIfRootless() // FIXME /sys/fs/cgroup/user.slice/user-14467.slice/user@14467.service/cgroup.subtree_control does not exist SkipIfRootless("FIXME /sys/fs/cgroup/user.slice/user-14467.slice/user@14467.service/cgroup.subtree_control does not exist")
SkipIfRootlessCgroupsV1() SkipIfRootlessCgroupsV1("Setting device-read-iops not supported on cgroupv1 for rootless users")
var session *PodmanSessionIntegration var session *PodmanSessionIntegration
if CGROUPSV2 { if CGROUPSV2 {
@ -457,8 +459,8 @@ USER bin`
}) })
It("podman run device-write-iops test", func() { It("podman run device-write-iops test", func() {
SkipIfRootless() // FIXME /sys/fs/cgroup/user.slice/user-14467.slice/user@14467.service/cgroup.subtree_control does not exist SkipIfRootless("FIXME /sys/fs/cgroup/user.slice/user-14467.slice/user@14467.service/cgroup.subtree_control does not exist")
SkipIfRootlessCgroupsV1() SkipIfRootlessCgroupsV1("Setting device-write-iops not supported on cgroupv1 for rootless users")
var session *PodmanSessionIntegration var session *PodmanSessionIntegration
if CGROUPSV2 { if CGROUPSV2 {
@ -575,7 +577,7 @@ USER bin`
}) })
It("podman run with FIPS mode secrets", func() { It("podman run with FIPS mode secrets", func() {
SkipIfRootless() // rootless can not manipulate system-fips file SkipIfRootless("rootless can not manipulate system-fips file")
fipsFile := "/etc/system-fips" fipsFile := "/etc/system-fips"
err = ioutil.WriteFile(fipsFile, []byte{}, 0755) err = ioutil.WriteFile(fipsFile, []byte{}, 0755)
Expect(err).To(BeNil()) Expect(err).To(BeNil())
@ -894,7 +896,7 @@ USER mail`
}) })
It("podman run --mount type=bind,bind-nonrecursive", func() { It("podman run --mount type=bind,bind-nonrecursive", func() {
SkipIfRootless() // rootless users are not allowed to mount bind-nonrecursive (Could this be a Kernel bug? SkipIfRootless("FIXME: rootless users are not allowed to mount bind-nonrecursive (Could this be a Kernel bug?")
session := podmanTest.Podman([]string{"run", "--mount", "type=bind,bind-nonrecursive,slave,src=/,target=/host", fedoraMinimal, "findmnt", "-nR", "/host"}) session := podmanTest.Podman([]string{"run", "--mount", "type=bind,bind-nonrecursive,slave,src=/,target=/host", fedoraMinimal, "findmnt", "-nR", "/host"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))
@ -1054,8 +1056,8 @@ USER mail`
}) })
It("podman run with cgroups=disabled runs without cgroups", func() { It("podman run with cgroups=disabled runs without cgroups", func() {
SkipIfRootless() // FIXME: I believe this should work but need to fix this test SkipIfRootless("FIXME: I believe this should work but need to fix this test")
SkipIfRootlessCgroupsV1() SkipIfRootlessCgroupsV1("Disable cgroups not supported on cgroupv1 for rootless users")
// Only works on crun // Only works on crun
if !strings.Contains(podmanTest.OCIRuntime, "crun") { if !strings.Contains(podmanTest.OCIRuntime, "crun") {
Skip("Test only works on crun") Skip("Test only works on crun")
@ -1087,7 +1089,7 @@ USER mail`
}) })
It("podman run with cgroups=enabled makes cgroups", func() { It("podman run with cgroups=enabled makes cgroups", func() {
SkipIfRootlessCgroupsV1() SkipIfRootlessCgroupsV1("Enable cgroups not supported on cgroupv1 for rootless users")
// Only works on crun // Only works on crun
if !strings.Contains(podmanTest.OCIRuntime, "crun") { if !strings.Contains(podmanTest.OCIRuntime, "crun") {
Skip("Test only works on crun") Skip("Test only works on crun")
@ -1130,7 +1132,7 @@ USER mail`
}) })
It("podman run --device-cgroup-rule", func() { It("podman run --device-cgroup-rule", func() {
SkipIfRootless() // rootless users are not allowed to mknod SkipIfRootless("rootless users are not allowed to mknod")
deviceCgroupRule := "c 42:* rwm" deviceCgroupRule := "c 42:* rwm"
session := podmanTest.Podman([]string{"run", "--name", "test", "-d", "--device-cgroup-rule", deviceCgroupRule, ALPINE, "top"}) session := podmanTest.Podman([]string{"run", "--name", "test", "-d", "--device-cgroup-rule", deviceCgroupRule, ALPINE, "top"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
@ -1208,7 +1210,7 @@ USER mail`
}) })
It("podman run verify pids-limit", func() { It("podman run verify pids-limit", func() {
SkipIfCgroupV1() SkipIfCgroupV1("pids-limit not supported on cgroup V1")
limit := "4321" limit := "4321"
session := podmanTest.Podman([]string{"run", "--pids-limit", limit, "--rm", ALPINE, "cat", "/sys/fs/cgroup/pids.max"}) session := podmanTest.Podman([]string{"run", "--pids-limit", limit, "--rm", ALPINE, "cat", "/sys/fs/cgroup/pids.max"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()

View File

@ -227,7 +227,7 @@ var _ = Describe("Podman run with volumes", func() {
}) })
It("podman run with tmpfs named volume mounts and unmounts", func() { It("podman run with tmpfs named volume mounts and unmounts", func() {
SkipIfRootless() // FIXME: rootless podman mount requires you to be in a user namespace SkipIfRootless("FIXME: rootless podman mount requires you to be in a user namespace")
SkipIfRemote("podman-remote does not support --volumes this test could be simplified to be tested on Remote.") SkipIfRemote("podman-remote does not support --volumes this test could be simplified to be tested on Remote.")
volName := "testvol" volName := "testvol"
mkVolume := podmanTest.Podman([]string{"volume", "create", "--opt", "type=tmpfs", "--opt", "device=tmpfs", "--opt", "o=nodev", "testvol"}) mkVolume := podmanTest.Podman([]string{"volume", "create", "--opt", "type=tmpfs", "--opt", "device=tmpfs", "--opt", "o=nodev", "testvol"})

View File

@ -186,7 +186,7 @@ registries = ['{{.Host}}:{{.Port}}']`
Expect(fakereg.ExitCode()).To(Equal(0)) Expect(fakereg.ExitCode()).To(Equal(0))
if !WaitContainerReady(podmanTest, "registry", "listening on", 20, 1) { if !WaitContainerReady(podmanTest, "registry", "listening on", 20, 1) {
Skip("Can not start docker registry.") Skip("Cannot start docker registry.")
} }
search := podmanTest.Podman([]string{"search", search := podmanTest.Podman([]string{"search",
@ -213,7 +213,7 @@ registries = ['{{.Host}}:{{.Port}}']`
Expect(registry.ExitCode()).To(Equal(0)) Expect(registry.ExitCode()).To(Equal(0))
if !WaitContainerReady(podmanTest, "registry3", "listening on", 20, 1) { if !WaitContainerReady(podmanTest, "registry3", "listening on", 20, 1) {
Skip("Can not start docker registry.") Skip("Cannot start docker registry.")
} }
podmanTest.RestoreArtifact(ALPINE) podmanTest.RestoreArtifact(ALPINE)
@ -250,7 +250,7 @@ registries = ['{{.Host}}:{{.Port}}']`
Expect(registry.ExitCode()).To(Equal(0)) Expect(registry.ExitCode()).To(Equal(0))
if !WaitContainerReady(podmanTest, "registry4", "listening on", 20, 1) { if !WaitContainerReady(podmanTest, "registry4", "listening on", 20, 1) {
Skip("Can not start docker registry.") Skip("Cannot start docker registry.")
} }
podmanTest.RestoreArtifact(ALPINE) podmanTest.RestoreArtifact(ALPINE)
@ -290,7 +290,7 @@ registries = ['{{.Host}}:{{.Port}}']`
Expect(registry.ExitCode()).To(Equal(0)) Expect(registry.ExitCode()).To(Equal(0))
if !WaitContainerReady(podmanTest, "registry5", "listening on", 20, 1) { if !WaitContainerReady(podmanTest, "registry5", "listening on", 20, 1) {
Skip("Can not start docker registry.") Skip("Cannot start docker registry.")
} }
podmanTest.RestoreArtifact(ALPINE) podmanTest.RestoreArtifact(ALPINE)
@ -329,7 +329,7 @@ registries = ['{{.Host}}:{{.Port}}']`
Expect(registry.ExitCode()).To(Equal(0)) Expect(registry.ExitCode()).To(Equal(0))
if !WaitContainerReady(podmanTest, "registry6", "listening on", 20, 1) { if !WaitContainerReady(podmanTest, "registry6", "listening on", 20, 1) {
Skip("Can not start docker registry.") Skip("Cannot start docker registry.")
} }
podmanTest.RestoreArtifact(ALPINE) podmanTest.RestoreArtifact(ALPINE)
@ -371,7 +371,7 @@ registries = ['{{.Host}}:{{.Port}}']`
Expect(registryLocal.ExitCode()).To(Equal(0)) Expect(registryLocal.ExitCode()).To(Equal(0))
if !WaitContainerReady(podmanTest, "registry7", "listening on", 20, 1) { if !WaitContainerReady(podmanTest, "registry7", "listening on", 20, 1) {
Skip("Can not start docker registry.") Skip("Cannot start docker registry.")
} }
registryLocal = podmanTest.Podman([]string{"run", "-d", "-p", "6000:5000", "--name", "registry8", registry}) registryLocal = podmanTest.Podman([]string{"run", "-d", "-p", "6000:5000", "--name", "registry8", registry})
@ -379,7 +379,7 @@ registries = ['{{.Host}}:{{.Port}}']`
Expect(registryLocal.ExitCode()).To(Equal(0)) Expect(registryLocal.ExitCode()).To(Equal(0))
if !WaitContainerReady(podmanTest, "registry8", "listening on", 20, 1) { if !WaitContainerReady(podmanTest, "registry8", "listening on", 20, 1) {
Skip("Can not start docker registry.") Skip("Cannot start docker registry.")
} }
podmanTest.RestoreArtifact(ALPINE) podmanTest.RestoreArtifact(ALPINE)

View File

@ -21,9 +21,7 @@ var _ = Describe("Podman stats", func() {
) )
BeforeEach(func() { BeforeEach(func() {
if os.Geteuid() != 0 { SkipIfRootlessCgroupsV1("stats not supported on cgroupv1 for rootless users")
SkipIfCgroupV1()
}
var err error var err error
tempdir, err = CreateTempDirInTempDir() tempdir, err = CreateTempDirInTempDir()
if err != nil { if err != nil {

View File

@ -47,7 +47,7 @@ WantedBy=multi-user.target
}) })
It("podman start container by systemd", func() { It("podman start container by systemd", func() {
SkipIfRootless() // rootless can not write to /etc SkipIfRootless("rootless can not write to /etc")
if os.Getenv("SKIP_USERNS") != "" { if os.Getenv("SKIP_USERNS") != "" {
Skip("Skip userns tests.") Skip("Skip userns tests.")
} }

View File

@ -34,9 +34,7 @@ var _ = Describe("Podman image tree", func() {
}) })
It("podman image tree", func() { It("podman image tree", func() {
if podmanTest.RemoteTest { SkipIfRemote("Does not work on remote client")
Skip("Does not work on remote client")
}
dockerfile := `FROM docker.io/library/busybox:latest dockerfile := `FROM docker.io/library/busybox:latest
RUN mkdir hello RUN mkdir hello
RUN touch test.txt RUN touch test.txt

View File

@ -56,7 +56,7 @@ var _ = Describe("Podman volume ls", func() {
}) })
It("podman ls volume with Go template", func() { It("podman ls volume with Go template", func() {
Skip(v2fail) Skip("FIXME: table still not supported in podman volume command")
session := podmanTest.Podman([]string{"volume", "create", "myvol"}) session := podmanTest.Podman([]string{"volume", "create", "myvol"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0)) Expect(session.ExitCode()).To(Equal(0))