github.com/containers/podman/v4@v4.9.4/test/e2e/pod_stats_test.go (about) 1 package integration 2 3 import ( 4 . "github.com/containers/podman/v4/test/utils" 5 . "github.com/onsi/ginkgo/v2" 6 . "github.com/onsi/gomega" 7 . "github.com/onsi/gomega/gexec" 8 ) 9 10 var _ = Describe("Podman pod stats", func() { 11 12 BeforeEach(func() { 13 SkipIfRootlessCgroupsV1("Tests fail with both CGv1 + required --cgroup-manager=cgroupfs") 14 if isContainerized() { 15 SkipIfCgroupV1("All tests fail Error: unable to load cgroup at ...: cgroup deleted") 16 } 17 }) 18 19 It("podman pod stats should run with no pods", func() { 20 session := podmanTest.Podman([]string{"pod", "stats", "--no-stream"}) 21 session.WaitWithDefaultTimeout() 22 Expect(session).Should(ExitCleanly()) 23 }) 24 25 It("podman pod stats with a bogus pod", func() { 26 session := podmanTest.Podman([]string{"pod", "stats", "foobar"}) 27 session.WaitWithDefaultTimeout() 28 Expect(session).Should(Exit(125)) 29 }) 30 31 It("podman pod stats on a specific running pod", func() { 32 _, ec, podid := podmanTest.CreatePod(nil) 33 Expect(ec).To(Equal(0)) 34 35 session := podmanTest.RunTopContainerInPod("", podid) 36 session.WaitWithDefaultTimeout() 37 Expect(session).Should(ExitCleanly()) 38 39 session = podmanTest.RunTopContainerInPod("", podid) 40 session.WaitWithDefaultTimeout() 41 Expect(session).Should(ExitCleanly()) 42 43 stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", podid}) 44 stats.WaitWithDefaultTimeout() 45 Expect(stats).Should(ExitCleanly()) 46 }) 47 48 It("podman pod stats on a specific running pod with shortID", func() { 49 _, ec, podid := podmanTest.CreatePod(nil) 50 Expect(ec).To(Equal(0)) 51 52 session := podmanTest.RunTopContainerInPod("", podid) 53 session.WaitWithDefaultTimeout() 54 Expect(session).Should(ExitCleanly()) 55 56 session = podmanTest.RunTopContainerInPod("", podid) 57 session.WaitWithDefaultTimeout() 58 Expect(session).Should(ExitCleanly()) 59 60 stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", podid[:5]}) 61 stats.WaitWithDefaultTimeout() 62 Expect(stats).Should(ExitCleanly()) 63 }) 64 65 It("podman pod stats on a specific running pod with name", func() { 66 _, ec, podid := podmanTest.CreatePod(map[string][]string{"--name": {"test"}}) 67 Expect(ec).To(Equal(0)) 68 69 session := podmanTest.RunTopContainerInPod("", podid) 70 session.WaitWithDefaultTimeout() 71 Expect(session).Should(ExitCleanly()) 72 73 session = podmanTest.RunTopContainerInPod("", podid) 74 session.WaitWithDefaultTimeout() 75 Expect(session).Should(ExitCleanly()) 76 77 stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", "test"}) 78 stats.WaitWithDefaultTimeout() 79 Expect(stats).Should(ExitCleanly()) 80 }) 81 82 It("podman pod stats on running pods", func() { 83 _, ec, podid := podmanTest.CreatePod(nil) 84 Expect(ec).To(Equal(0)) 85 86 session := podmanTest.RunTopContainerInPod("", podid) 87 session.WaitWithDefaultTimeout() 88 Expect(session).Should(ExitCleanly()) 89 90 session = podmanTest.RunTopContainerInPod("", podid) 91 session.WaitWithDefaultTimeout() 92 Expect(session).Should(ExitCleanly()) 93 94 stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream"}) 95 stats.WaitWithDefaultTimeout() 96 Expect(stats).Should(ExitCleanly()) 97 }) 98 99 It("podman pod stats on all pods", func() { 100 _, ec, podid := podmanTest.CreatePod(nil) 101 Expect(ec).To(Equal(0)) 102 103 session := podmanTest.RunTopContainerInPod("", podid) 104 session.WaitWithDefaultTimeout() 105 Expect(session).Should(ExitCleanly()) 106 107 session = podmanTest.RunTopContainerInPod("", podid) 108 session.WaitWithDefaultTimeout() 109 Expect(session).Should(ExitCleanly()) 110 111 stats := podmanTest.Podman([]string{"pod", "stats", "--no-stream", "-a"}) 112 stats.WaitWithDefaultTimeout() 113 Expect(stats).Should(ExitCleanly()) 114 }) 115 116 It("podman pod stats with json output", func() { 117 _, ec, podid := podmanTest.CreatePod(nil) 118 Expect(ec).To(Equal(0)) 119 120 session := podmanTest.RunTopContainerInPod("", podid) 121 session.WaitWithDefaultTimeout() 122 Expect(session).Should(ExitCleanly()) 123 124 session = podmanTest.RunTopContainerInPod("", podid) 125 session.WaitWithDefaultTimeout() 126 Expect(session).Should(ExitCleanly()) 127 128 stats := podmanTest.Podman([]string{"pod", "stats", "--format", "json", "--no-stream", "-a"}) 129 stats.WaitWithDefaultTimeout() 130 Expect(stats).Should(ExitCleanly()) 131 Expect(stats.OutputToString()).To(BeValidJSON()) 132 }) 133 It("podman pod stats with GO template", func() { 134 _, ec, podid := podmanTest.CreatePod(nil) 135 Expect(ec).To(Equal(0)) 136 137 session := podmanTest.RunTopContainerInPod("", podid) 138 session.WaitWithDefaultTimeout() 139 Expect(session).Should(ExitCleanly()) 140 stats := podmanTest.Podman([]string{"pod", "stats", "-a", "--no-reset", "--no-stream", "--format", "table {{.CID}} {{.Pod}} {{.Mem}} {{.MemUsage}} {{.CPU}} {{.NetIO}} {{.BlockIO}} {{.PIDS}} {{.Pod}}"}) 141 stats.WaitWithDefaultTimeout() 142 Expect(stats).To(ExitCleanly()) 143 }) 144 145 It("podman pod stats with invalid GO template", func() { 146 _, ec, podid := podmanTest.CreatePod(nil) 147 Expect(ec).To(Equal(0)) 148 149 session := podmanTest.RunTopContainerInPod("", podid) 150 session.WaitWithDefaultTimeout() 151 Expect(session).Should(ExitCleanly()) 152 stats := podmanTest.Podman([]string{"pod", "stats", "-a", "--no-reset", "--no-stream", "--format", "\"table {{.ID}} \""}) 153 stats.WaitWithDefaultTimeout() 154 Expect(stats).To(ExitWithError()) 155 }) 156 157 It("podman pod stats on net=host post", func() { 158 SkipIfRootless("--net=host not supported for rootless pods at present") 159 podName := "testPod" 160 podCreate := podmanTest.Podman([]string{"pod", "create", "--net=host", "--name", podName}) 161 podCreate.WaitWithDefaultTimeout() 162 Expect(podCreate).Should(ExitCleanly()) 163 164 ctrRun := podmanTest.Podman([]string{"run", "-d", "--pod", podName, ALPINE, "top"}) 165 ctrRun.WaitWithDefaultTimeout() 166 Expect(ctrRun).Should(ExitCleanly()) 167 168 stats := podmanTest.Podman([]string{"pod", "stats", "--format", "json", "--no-stream", podName}) 169 stats.WaitWithDefaultTimeout() 170 Expect(stats).Should(ExitCleanly()) 171 Expect(stats.OutputToString()).To(BeValidJSON()) 172 }) 173 })