github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/stats_test.go (about) 1 // +build !remoteclient 2 3 package integration 4 5 import ( 6 "fmt" 7 "os" 8 9 "github.com/containers/libpod/pkg/cgroups" 10 . "github.com/containers/libpod/test/utils" 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 ) 14 15 // TODO: we need to check the output. Currently, we only check the exit codes 16 // which is not enough. 17 var _ = Describe("Podman stats", func() { 18 var ( 19 tempdir string 20 podmanTest *PodmanTestIntegration 21 ) 22 23 BeforeEach(func() { 24 cgroupsv2, err := cgroups.IsCgroup2UnifiedMode() 25 Expect(err).To(BeNil()) 26 27 if os.Geteuid() != 0 && !cgroupsv2 { 28 Skip("This function is not enabled for rootless podman not running on cgroups v2") 29 } 30 tempdir, err = CreateTempDirInTempDir() 31 if err != nil { 32 os.Exit(1) 33 } 34 podmanTest = PodmanTestCreate(tempdir) 35 podmanTest.Setup() 36 podmanTest.SeedImages() 37 }) 38 39 AfterEach(func() { 40 podmanTest.Cleanup() 41 f := CurrentGinkgoTestDescription() 42 processTestResult(f) 43 44 }) 45 46 It("podman stats with bogus container", func() { 47 session := podmanTest.Podman([]string{"stats", "--no-stream", "123"}) 48 session.WaitWithDefaultTimeout() 49 Expect(session.ExitCode()).To(Equal(125)) 50 }) 51 52 It("podman stats on a running container", func() { 53 session := podmanTest.RunTopContainer("") 54 session.WaitWithDefaultTimeout() 55 Expect(session.ExitCode()).To(Equal(0)) 56 cid := session.OutputToString() 57 session = podmanTest.Podman([]string{"stats", "--no-stream", cid}) 58 session.WaitWithDefaultTimeout() 59 Expect(session.ExitCode()).To(Equal(0)) 60 }) 61 62 It("podman stats on all containers", func() { 63 session := podmanTest.RunTopContainer("") 64 session.WaitWithDefaultTimeout() 65 Expect(session.ExitCode()).To(Equal(0)) 66 session = podmanTest.Podman([]string{"stats", "--no-stream", "-a"}) 67 session.WaitWithDefaultTimeout() 68 Expect(session.ExitCode()).To(Equal(0)) 69 }) 70 71 It("podman stats on all running containers", func() { 72 session := podmanTest.RunTopContainer("") 73 session.WaitWithDefaultTimeout() 74 Expect(session.ExitCode()).To(Equal(0)) 75 session = podmanTest.Podman([]string{"stats", "--no-stream"}) 76 session.WaitWithDefaultTimeout() 77 Expect(session.ExitCode()).To(Equal(0)) 78 }) 79 80 It("podman stats only output cids", func() { 81 session := podmanTest.RunTopContainer("") 82 session.WaitWithDefaultTimeout() 83 Expect(session.ExitCode()).To(Equal(0)) 84 session = podmanTest.Podman([]string{"stats", "--all", "--no-stream", "--format", "\"{{.ID}}\""}) 85 session.WaitWithDefaultTimeout() 86 Expect(session.ExitCode()).To(Equal(0)) 87 }) 88 89 It("podman stats with json output", func() { 90 session := podmanTest.RunTopContainer("") 91 session.WaitWithDefaultTimeout() 92 Expect(session.ExitCode()).To(Equal(0)) 93 session = podmanTest.Podman([]string{"stats", "--all", "--no-stream", "--format", "json"}) 94 session.WaitWithDefaultTimeout() 95 Expect(session.ExitCode()).To(Equal(0)) 96 Expect(session.IsJSONOutputValid()).To(BeTrue()) 97 }) 98 99 It("podman stats on a container with no net ns", func() { 100 session := podmanTest.Podman([]string{"run", "-d", "--net", "none", ALPINE, "top"}) 101 session.WaitWithDefaultTimeout() 102 Expect(session.ExitCode()).To(Equal(0)) 103 session = podmanTest.Podman([]string{"stats", "--no-stream", "-a"}) 104 session.WaitWithDefaultTimeout() 105 Expect(session.ExitCode()).To(Equal(0)) 106 }) 107 108 It("podman stats on a container that joined another's net ns", func() { 109 session := podmanTest.RunTopContainer("") 110 session.WaitWithDefaultTimeout() 111 Expect(session.ExitCode()).To(Equal(0)) 112 cid := session.OutputToString() 113 114 session = podmanTest.Podman([]string{"run", "-d", "--net", fmt.Sprintf("container:%s", cid), ALPINE, "top"}) 115 session.WaitWithDefaultTimeout() 116 Expect(session.ExitCode()).To(Equal(0)) 117 118 session = podmanTest.Podman([]string{"stats", "--no-stream", "-a"}) 119 session.WaitWithDefaultTimeout() 120 Expect(session.ExitCode()).To(Equal(0)) 121 }) 122 })