github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/pod_stats_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 pod stats", func() { 15 var ( 16 tempdir string 17 podmanTest *PodmanTestIntegration 18 ) 19 20 BeforeEach(func() { 21 cgroupsv2, err := cgroups.IsCgroup2UnifiedMode() 22 Expect(err).To(BeNil()) 23 24 if os.Geteuid() != 0 && !cgroupsv2 { 25 Skip("This function is not enabled for rootless podman not running on cgroups v2") 26 } 27 28 tempdir, err = CreateTempDirInTempDir() 29 if err != nil { 30 os.Exit(1) 31 } 32 podmanTest = PodmanTestCreate(tempdir) 33 podmanTest.Setup() 34 podmanTest.SeedImages() 35 }) 36 37 AfterEach(func() { 38 podmanTest.CleanupPod() 39 f := CurrentGinkgoTestDescription() 40 processTestResult(f) 41 42 }) 43 It("podman stats should run with no pods", func() { 44 session := podmanTest.Podman([]string{"pod", "stats", "--no-stream"}) 45 session.WaitWithDefaultTimeout() 46 Expect(session.ExitCode()).To(Equal(0)) 47 }) 48 49 It("podman stats with a bogus pod", func() { 50 session := podmanTest.Podman([]string{"pod", "stats", "foobar"}) 51 session.WaitWithDefaultTimeout() 52 Expect(session.ExitCode()).To(Equal(125)) 53 }) 54 55 It("podman stats on a specific running pod", func() { 56 _, ec, podid := podmanTest.CreatePod("") 57 Expect(ec).To(Equal(0)) 58 59 session := podmanTest.RunTopContainerInPod("", podid) 60 session.WaitWithDefaultTimeout() 61 Expect(session.ExitCode()).To(Equal(0)) 62 63 session = podmanTest.RunTopContainerInPod("", podid) 64 session.WaitWithDefaultTimeout() 65 Expect(session.ExitCode()).To(Equal(0)) 66 67 stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", podid}) 68 stats.WaitWithDefaultTimeout() 69 Expect(stats.ExitCode()).To(Equal(0)) 70 }) 71 72 It("podman stats on a specific running pod with shortID", func() { 73 _, ec, podid := podmanTest.CreatePod("") 74 Expect(ec).To(Equal(0)) 75 76 session := podmanTest.RunTopContainerInPod("", podid) 77 session.WaitWithDefaultTimeout() 78 Expect(session.ExitCode()).To(Equal(0)) 79 80 session = podmanTest.RunTopContainerInPod("", podid) 81 session.WaitWithDefaultTimeout() 82 Expect(session.ExitCode()).To(Equal(0)) 83 84 stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", podid[:5]}) 85 stats.WaitWithDefaultTimeout() 86 Expect(stats.ExitCode()).To(Equal(0)) 87 }) 88 89 It("podman stats on a specific running pod with name", func() { 90 _, ec, podid := podmanTest.CreatePod("test") 91 Expect(ec).To(Equal(0)) 92 93 session := podmanTest.RunTopContainerInPod("", podid) 94 session.WaitWithDefaultTimeout() 95 Expect(session.ExitCode()).To(Equal(0)) 96 97 session = podmanTest.RunTopContainerInPod("", podid) 98 session.WaitWithDefaultTimeout() 99 Expect(session.ExitCode()).To(Equal(0)) 100 101 stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", "test"}) 102 stats.WaitWithDefaultTimeout() 103 Expect(stats.ExitCode()).To(Equal(0)) 104 }) 105 106 It("podman stats on running pods", func() { 107 _, ec, podid := podmanTest.CreatePod("") 108 Expect(ec).To(Equal(0)) 109 110 session := podmanTest.RunTopContainerInPod("", podid) 111 session.WaitWithDefaultTimeout() 112 Expect(session.ExitCode()).To(Equal(0)) 113 114 session = podmanTest.RunTopContainerInPod("", podid) 115 session.WaitWithDefaultTimeout() 116 Expect(session.ExitCode()).To(Equal(0)) 117 118 stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream"}) 119 stats.WaitWithDefaultTimeout() 120 Expect(stats.ExitCode()).To(Equal(0)) 121 }) 122 123 It("podman stats on all pods", func() { 124 _, ec, podid := podmanTest.CreatePod("") 125 Expect(ec).To(Equal(0)) 126 127 session := podmanTest.RunTopContainerInPod("", podid) 128 session.WaitWithDefaultTimeout() 129 Expect(session.ExitCode()).To(Equal(0)) 130 131 session = podmanTest.RunTopContainerInPod("", podid) 132 session.WaitWithDefaultTimeout() 133 Expect(session.ExitCode()).To(Equal(0)) 134 135 stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", "-a"}) 136 stats.WaitWithDefaultTimeout() 137 Expect(stats.ExitCode()).To(Equal(0)) 138 }) 139 140 It("podman stats with json output", func() { 141 _, ec, podid := podmanTest.CreatePod("") 142 Expect(ec).To(Equal(0)) 143 144 session := podmanTest.RunTopContainerInPod("", podid) 145 session.WaitWithDefaultTimeout() 146 Expect(session.ExitCode()).To(Equal(0)) 147 148 session = podmanTest.RunTopContainerInPod("", podid) 149 session.WaitWithDefaultTimeout() 150 Expect(session.ExitCode()).To(Equal(0)) 151 152 stats := podmanTest.Podman([]string{"pod", "stats", "--format", "json", "--no-stream", "-a"}) 153 stats.WaitWithDefaultTimeout() 154 Expect(stats.ExitCode()).To(Equal(0)) 155 Expect(stats.IsJSONOutputValid()).To(BeTrue()) 156 }) 157 It("podman stats with GO template", func() { 158 _, ec, podid := podmanTest.CreatePod("") 159 Expect(ec).To(Equal(0)) 160 161 session := podmanTest.RunTopContainerInPod("", podid) 162 session.WaitWithDefaultTimeout() 163 Expect(session.ExitCode()).To(Equal(0)) 164 stats := podmanTest.Podman([]string{"pod", "stats", "-a", "--no-reset", "--no-stream", "--format", "\"table {{.CID}} {{.Pod}} {{.Mem}} {{.MemUsage}} {{.CPU}} {{.NetIO}} {{.BlockIO}} {{.PIDS}} {{.Pod}}\""}) 165 stats.WaitWithDefaultTimeout() 166 Expect(stats.ExitCode()).To(Equal(0)) 167 }) 168 169 It("podman stats with invalid GO template", func() { 170 _, ec, podid := podmanTest.CreatePod("") 171 Expect(ec).To(Equal(0)) 172 173 session := podmanTest.RunTopContainerInPod("", podid) 174 session.WaitWithDefaultTimeout() 175 Expect(session.ExitCode()).To(Equal(0)) 176 stats := podmanTest.Podman([]string{"pod", "stats", "-a", "--no-reset", "--no-stream", "--format", "\"table {{.ID}} \""}) 177 stats.WaitWithDefaultTimeout() 178 Expect(stats).To(ExitWithError()) 179 }) 180 181 })