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