github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/run_memory_test.go (about) 1 // +build !remoteclient 2 3 package integration 4 5 import ( 6 "os" 7 8 "github.com/containers/libpod/pkg/cgroups" 9 . "github.com/containers/libpod/test/utils" 10 . "github.com/onsi/ginkgo" 11 . "github.com/onsi/gomega" 12 ) 13 14 var _ = Describe("Podman run memory", func() { 15 var ( 16 tempdir string 17 err error 18 podmanTest *PodmanTestIntegration 19 ) 20 21 BeforeEach(func() { 22 SkipIfRootless() 23 tempdir, err = CreateTempDirInTempDir() 24 if err != nil { 25 os.Exit(1) 26 } 27 podmanTest = PodmanTestCreate(tempdir) 28 podmanTest.Setup() 29 podmanTest.SeedImages() 30 }) 31 32 AfterEach(func() { 33 podmanTest.Cleanup() 34 f := CurrentGinkgoTestDescription() 35 processTestResult(f) 36 37 }) 38 39 It("podman run memory test", func() { 40 cgroupsv2, err := cgroups.IsCgroup2UnifiedMode() 41 Expect(err).To(BeNil()) 42 43 var session *PodmanSessionIntegration 44 45 if cgroupsv2 { 46 session = podmanTest.Podman([]string{"run", "--memory=40m", ALPINE, "sh", "-c", "cat /sys/fs/cgroup/$(sed -e 's|0::||' < /proc/self/cgroup)/memory.max"}) 47 } else { 48 session = podmanTest.Podman([]string{"run", "--memory=40m", ALPINE, "cat", "/sys/fs/cgroup/memory/memory.limit_in_bytes"}) 49 } 50 session.WaitWithDefaultTimeout() 51 Expect(session.ExitCode()).To(Equal(0)) 52 Expect(session.OutputToString()).To(Equal("41943040")) 53 }) 54 55 It("podman run memory-reservation test", func() { 56 if podmanTest.Host.Distribution == "ubuntu" { 57 Skip("Unable to perform test on Ubuntu distributions due to memory management") 58 } 59 60 cgroupsv2, err := cgroups.IsCgroup2UnifiedMode() 61 Expect(err).To(BeNil()) 62 63 var session *PodmanSessionIntegration 64 65 if cgroupsv2 { 66 session = podmanTest.Podman([]string{"run", "--memory-reservation=40m", ALPINE, "sh", "-c", "cat /sys/fs/cgroup/$(sed -e 's|0::||' < /proc/self/cgroup)/memory.high"}) 67 } else { 68 session = podmanTest.Podman([]string{"run", "--memory-reservation=40m", ALPINE, "cat", "/sys/fs/cgroup/memory/memory.soft_limit_in_bytes"}) 69 } 70 71 session.WaitWithDefaultTimeout() 72 Expect(session.ExitCode()).To(Equal(0)) 73 if cgroupsv2 { 74 Expect(session.OutputToString()).To(Equal("max")) 75 } else { 76 Expect(session.OutputToString()).To(Equal("41943040")) 77 } 78 }) 79 80 It("podman run memory-swappiness test", func() { 81 cgroupsv2, err := cgroups.IsCgroup2UnifiedMode() 82 Expect(err).To(BeNil()) 83 84 if cgroupsv2 { 85 Skip("Memory swappiness not supported on cgroups v2") 86 } 87 88 session := podmanTest.Podman([]string{"run", "--memory-swappiness=15", ALPINE, "cat", "/sys/fs/cgroup/memory/memory.swappiness"}) 89 session.WaitWithDefaultTimeout() 90 Expect(session.ExitCode()).To(Equal(0)) 91 Expect(session.OutputToString()).To(Equal("15")) 92 }) 93 94 It("podman run kernel-memory test", func() { 95 cgroupsv2, err := cgroups.IsCgroup2UnifiedMode() 96 Expect(err).To(BeNil()) 97 98 if cgroupsv2 { 99 Skip("Kernel memory not supported on cgroups v2") 100 } 101 session := podmanTest.Podman([]string{"run", "--kernel-memory=40m", ALPINE, "cat", "/sys/fs/cgroup/memory/memory.kmem.limit_in_bytes"}) 102 session.WaitWithDefaultTimeout() 103 Expect(session.ExitCode()).To(Equal(0)) 104 Expect(session.OutputToString()).To(Equal("41943040")) 105 }) 106 })