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