mirror of
https://github.com/containers/podman.git
synced 2025-06-20 00:51:16 +08:00
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:
@ -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)
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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"
|
|
||||||
)
|
)
|
||||||
|
@ -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()
|
||||||
|
@ -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()
|
||||||
|
@ -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()
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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})
|
||||||
|
@ -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()
|
||||||
|
@ -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
|
||||||
|
@ -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))
|
||||||
|
@ -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")
|
||||||
|
@ -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)
|
||||||
|
@ -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()
|
||||||
|
@ -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))
|
||||||
|
|
||||||
|
@ -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"})
|
||||||
|
@ -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"
|
||||||
|
@ -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()
|
||||||
|
@ -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")
|
||||||
}
|
}
|
||||||
|
@ -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")
|
||||||
|
|
||||||
|
@ -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"))
|
||||||
|
@ -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"
|
||||||
|
@ -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))
|
||||||
|
@ -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)
|
||||||
|
@ -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()
|
||||||
|
@ -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"})
|
||||||
|
@ -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)
|
||||||
|
@ -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 {
|
||||||
|
@ -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.")
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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))
|
||||||
|
Reference in New Issue
Block a user