github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/pod_ps_test.go (about) 1 package integration 2 3 import ( 4 "fmt" 5 "os" 6 "sort" 7 8 . "github.com/containers/podman/v2/test/utils" 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 . "github.com/onsi/gomega/gexec" 12 ) 13 14 var _ = Describe("Podman ps", func() { 15 var ( 16 tempdir string 17 err error 18 podmanTest *PodmanTestIntegration 19 ) 20 21 BeforeEach(func() { 22 tempdir, err = CreateTempDirInTempDir() 23 if err != nil { 24 os.Exit(1) 25 } 26 podmanTest = PodmanTestCreate(tempdir) 27 podmanTest.Setup() 28 podmanTest.SeedImages() 29 }) 30 31 AfterEach(func() { 32 podmanTest.Cleanup() 33 f := CurrentGinkgoTestDescription() 34 processTestResult(f) 35 36 }) 37 38 It("podman pod ps no pods", func() { 39 session := podmanTest.Podman([]string{"pod", "ps"}) 40 session.WaitWithDefaultTimeout() 41 Expect(session.ExitCode()).To(Equal(0)) 42 }) 43 44 It("podman pod ps default", func() { 45 _, ec, podid := podmanTest.CreatePod("") 46 Expect(ec).To(Equal(0)) 47 48 session := podmanTest.RunTopContainerInPod("", podid) 49 session.WaitWithDefaultTimeout() 50 Expect(session.ExitCode()).To(Equal(0)) 51 52 result := podmanTest.Podman([]string{"pod", "ps"}) 53 result.WaitWithDefaultTimeout() 54 Expect(result.ExitCode()).To(Equal(0)) 55 Expect(len(result.OutputToStringArray())).Should(BeNumerically(">", 0)) 56 }) 57 58 It("podman pod ps quiet flag", func() { 59 _, ec, podid := podmanTest.CreatePod("") 60 Expect(ec).To(Equal(0)) 61 62 _, ec, _ = podmanTest.RunLsContainerInPod("", podid) 63 Expect(ec).To(Equal(0)) 64 65 result := podmanTest.Podman([]string{"pod", "ps", "-q"}) 66 result.WaitWithDefaultTimeout() 67 Expect(result).To(Exit(0)) 68 Expect(len(result.OutputToStringArray())).Should(BeNumerically(">", 0)) 69 Expect(podid).To(ContainSubstring(result.OutputToStringArray()[0])) 70 }) 71 72 It("podman pod ps no-trunc", func() { 73 _, ec, podid := podmanTest.CreatePod("") 74 Expect(ec).To(Equal(0)) 75 76 _, ec2, _ := podmanTest.RunLsContainerInPod("", podid) 77 Expect(ec2).To(Equal(0)) 78 79 result := podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc"}) 80 result.WaitWithDefaultTimeout() 81 Expect(result.ExitCode()).To(Equal(0)) 82 Expect(len(result.OutputToStringArray())).Should(BeNumerically(">", 0)) 83 Expect(podid).To(Equal(result.OutputToStringArray()[0])) 84 }) 85 86 It("podman pod ps latest", func() { 87 SkipIfRemote("--latest flag n/a") 88 _, ec, podid1 := podmanTest.CreatePod("") 89 Expect(ec).To(Equal(0)) 90 91 _, ec2, podid2 := podmanTest.CreatePod("") 92 Expect(ec2).To(Equal(0)) 93 94 result := podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--latest"}) 95 result.WaitWithDefaultTimeout() 96 Expect(result.ExitCode()).To(Equal(0)) 97 Expect(result.OutputToString()).To(ContainSubstring(podid2)) 98 Expect(result.OutputToString()).To(Not(ContainSubstring(podid1))) 99 }) 100 101 It("podman pod ps id filter flag", func() { 102 _, ec, podid := podmanTest.CreatePod("") 103 Expect(ec).To(Equal(0)) 104 105 result := podmanTest.Podman([]string{"pod", "ps", "--filter", fmt.Sprintf("id=%s", podid)}) 106 result.WaitWithDefaultTimeout() 107 Expect(result.ExitCode()).To(Equal(0)) 108 }) 109 110 It("podman pod ps filter name regexp", func() { 111 _, ec, podid := podmanTest.CreatePod("mypod") 112 Expect(ec).To(Equal(0)) 113 _, ec2, _ := podmanTest.CreatePod("mypod1") 114 Expect(ec2).To(Equal(0)) 115 116 result := podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "name=mypod"}) 117 result.WaitWithDefaultTimeout() 118 Expect(result.ExitCode()).To(Equal(0)) 119 120 output := result.OutputToStringArray() 121 Expect(len(output)).To(Equal(2)) 122 123 result = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "name=mypod$"}) 124 result.WaitWithDefaultTimeout() 125 Expect(result.ExitCode()).To(Equal(0)) 126 127 output = result.OutputToStringArray() 128 Expect(len(output)).To(Equal(1)) 129 Expect(output[0]).To(Equal(podid)) 130 }) 131 132 It("podman pod ps mutually exclusive flags", func() { 133 session := podmanTest.Podman([]string{"pod", "ps", "-q", "--format", "{{.ID}}"}) 134 session.WaitWithDefaultTimeout() 135 Expect(session).To(ExitWithError()) 136 137 }) 138 139 It("podman pod ps --sort by name", func() { 140 _, ec, _ := podmanTest.CreatePod("") 141 Expect(ec).To(Equal(0)) 142 143 _, ec2, _ := podmanTest.CreatePod("") 144 Expect(ec2).To(Equal(0)) 145 146 _, ec3, _ := podmanTest.CreatePod("") 147 Expect(ec3).To(Equal(0)) 148 149 session := podmanTest.Podman([]string{"pod", "ps", "--sort=name", "--format", "{{.Name}}"}) 150 151 session.WaitWithDefaultTimeout() 152 Expect(session.ExitCode()).To(Equal(0)) 153 154 sortedArr := session.OutputToStringArray() 155 156 Expect(sort.SliceIsSorted(sortedArr, func(i, j int) bool { return sortedArr[i] < sortedArr[j] })).To(BeTrue()) 157 }) 158 159 It("podman pod ps --ctr-names", func() { 160 _, ec, podid := podmanTest.CreatePod("") 161 Expect(ec).To(Equal(0)) 162 163 session := podmanTest.RunTopContainerInPod("test1", podid) 164 session.WaitWithDefaultTimeout() 165 Expect(session.ExitCode()).To(Equal(0)) 166 167 _, ec, _ = podmanTest.RunLsContainerInPod("test2", podid) 168 Expect(ec).To(Equal(0)) 169 170 session = podmanTest.Podman([]string{"pod", "ps", "--format={{.ContainerNames}}", "--ctr-names"}) 171 session.WaitWithDefaultTimeout() 172 Expect(session.ExitCode()).To(Equal(0)) 173 Expect(session.OutputToString()).To(ContainSubstring("test1")) 174 Expect(session.OutputToString()).To(ContainSubstring("test2")) 175 }) 176 177 It("podman pod ps filter ctr attributes", func() { 178 _, ec, podid1 := podmanTest.CreatePod("") 179 Expect(ec).To(Equal(0)) 180 181 session := podmanTest.RunTopContainerInPod("test1", podid1) 182 session.WaitWithDefaultTimeout() 183 Expect(session.ExitCode()).To(Equal(0)) 184 185 _, ec2, podid2 := podmanTest.CreatePod("") 186 Expect(ec2).To(Equal(0)) 187 188 _, ec3, cid := podmanTest.RunLsContainerInPod("test2", podid2) 189 Expect(ec3).To(Equal(0)) 190 191 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-names=test1"}) 192 session.WaitWithDefaultTimeout() 193 Expect(session.ExitCode()).To(Equal(0)) 194 Expect(session.OutputToString()).To(ContainSubstring(podid1)) 195 Expect(session.OutputToString()).To(Not(ContainSubstring(podid2))) 196 197 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-names=test", "--filter", "ctr-status=running"}) 198 session.WaitWithDefaultTimeout() 199 Expect(session.ExitCode()).To(Equal(0)) 200 Expect(session.OutputToString()).To(ContainSubstring(podid1)) 201 Expect(session.OutputToString()).To(Not(ContainSubstring(podid2))) 202 203 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", fmt.Sprintf("ctr-ids=%s", cid)}) 204 session.WaitWithDefaultTimeout() 205 Expect(session.ExitCode()).To(Equal(0)) 206 Expect(session.OutputToString()).To(ContainSubstring(podid2)) 207 Expect(session.OutputToString()).To(Not(ContainSubstring(podid1))) 208 209 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-ids=" + cid[:40], "--filter", "ctr-ids=" + cid + "$"}) 210 session.WaitWithDefaultTimeout() 211 Expect(session.ExitCode()).To(Equal(0)) 212 Expect(session.OutputToString()).To(ContainSubstring(podid2)) 213 Expect(session.OutputToString()).To(Not(ContainSubstring(podid1))) 214 215 _, ec3, podid3 := podmanTest.CreatePod("") 216 Expect(ec3).To(Equal(0)) 217 218 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-number=1"}) 219 session.WaitWithDefaultTimeout() 220 Expect(session.ExitCode()).To(Equal(0)) 221 Expect(session.OutputToString()).To(ContainSubstring(podid1)) 222 Expect(session.OutputToString()).To(ContainSubstring(podid2)) 223 Expect(session.OutputToString()).To(Not(ContainSubstring(podid3))) 224 225 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-number=1", "--filter", "ctr-number=0"}) 226 session.WaitWithDefaultTimeout() 227 Expect(session.ExitCode()).To(Equal(0)) 228 Expect(session.OutputToString()).To(ContainSubstring(podid1)) 229 Expect(session.OutputToString()).To(ContainSubstring(podid2)) 230 Expect(session.OutputToString()).To(ContainSubstring(podid3)) 231 232 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-status=running"}) 233 session.WaitWithDefaultTimeout() 234 Expect(session.ExitCode()).To(Equal(0)) 235 Expect(session.OutputToString()).To(ContainSubstring(podid1)) 236 Expect(session.OutputToString()).To(Not(ContainSubstring(podid2))) 237 Expect(session.OutputToString()).To(Not(ContainSubstring(podid3))) 238 239 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-status=exited"}) 240 session.WaitWithDefaultTimeout() 241 Expect(session.ExitCode()).To(Equal(0)) 242 Expect(session.OutputToString()).To(ContainSubstring(podid2)) 243 Expect(session.OutputToString()).To(Not(ContainSubstring(podid1))) 244 Expect(session.OutputToString()).To(Not(ContainSubstring(podid3))) 245 246 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-status=exited", "--filter", "ctr-status=running"}) 247 session.WaitWithDefaultTimeout() 248 Expect(session.ExitCode()).To(Equal(0)) 249 Expect(session.OutputToString()).To(ContainSubstring(podid1)) 250 Expect(session.OutputToString()).To(ContainSubstring(podid2)) 251 Expect(session.OutputToString()).To(Not(ContainSubstring(podid3))) 252 253 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-status=created"}) 254 session.WaitWithDefaultTimeout() 255 Expect(session.ExitCode()).To(Equal(0)) 256 Expect(session.OutputToString()).To(BeEmpty()) 257 }) 258 259 It("podman pod ps filter labels", func() { 260 _, ec, podid1 := podmanTest.CreatePod("") 261 Expect(ec).To(Equal(0)) 262 263 _, ec, podid2 := podmanTest.CreatePodWithLabels("", map[string]string{ 264 "app": "myapp", 265 "io.podman.test.key": "irrelevant-value", 266 }) 267 Expect(ec).To(Equal(0)) 268 269 _, ec, podid3 := podmanTest.CreatePodWithLabels("", map[string]string{ 270 "app": "test", 271 }) 272 Expect(ec).To(Equal(0)) 273 274 session := podmanTest.Podman([]string{"pod", "ps", "--no-trunc", "--filter", "label=app", "--filter", "label=app=myapp"}) 275 session.WaitWithDefaultTimeout() 276 Expect(session.ExitCode()).To(Equal(0)) 277 Expect(session.OutputToString()).To(Not(ContainSubstring(podid1))) 278 Expect(session.OutputToString()).To(ContainSubstring(podid2)) 279 Expect(session.OutputToString()).To(Not(ContainSubstring(podid3))) 280 }) 281 282 It("pod no infra should ps", func() { 283 session := podmanTest.Podman([]string{"pod", "create", "--infra=false"}) 284 session.WaitWithDefaultTimeout() 285 Expect(session.ExitCode()).To(Equal(0)) 286 287 ps := podmanTest.Podman([]string{"pod", "ps"}) 288 ps.WaitWithDefaultTimeout() 289 Expect(ps.ExitCode()).To(Equal(0)) 290 291 infra := podmanTest.Podman([]string{"pod", "ps", "--format", "{{.InfraId}}"}) 292 infra.WaitWithDefaultTimeout() 293 Expect(len(infra.OutputToString())).To(BeZero()) 294 }) 295 296 It("podman pod ps format with labels", func() { 297 _, ec, _ := podmanTest.CreatePod("") 298 Expect(ec).To(Equal(0)) 299 300 _, ec1, _ := podmanTest.CreatePodWithLabels("", map[string]string{ 301 "io.podman.test.label": "value1", 302 "io.podman.test.key": "irrelevant-value", 303 }) 304 Expect(ec1).To(Equal(0)) 305 306 session := podmanTest.Podman([]string{"pod", "ps", "--format", "{{.Labels}}"}) 307 session.WaitWithDefaultTimeout() 308 Expect(session.ExitCode()).To(Equal(0)) 309 Expect(session.OutputToString()).To(ContainSubstring("value1")) 310 }) 311 })