github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/pod_ps_test.go (about) 1 package integration 2 3 import ( 4 "fmt" 5 "os" 6 "sort" 7 8 . "github.com/containers/libpod/test/utils" 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 ) 12 13 var _ = Describe("Podman ps", func() { 14 var ( 15 tempdir string 16 err error 17 podmanTest *PodmanTestIntegration 18 ) 19 20 BeforeEach(func() { 21 tempdir, err = CreateTempDirInTempDir() 22 if err != nil { 23 os.Exit(1) 24 } 25 podmanTest = PodmanTestCreate(tempdir) 26 podmanTest.Setup() 27 podmanTest.SeedImages() 28 }) 29 30 AfterEach(func() { 31 podmanTest.CleanupPod() 32 f := CurrentGinkgoTestDescription() 33 processTestResult(f) 34 35 }) 36 37 It("podman pod ps no pods", func() { 38 session := podmanTest.Podman([]string{"pod", "ps"}) 39 session.WaitWithDefaultTimeout() 40 Expect(session.ExitCode()).To(Equal(0)) 41 }) 42 43 It("podman pod ps default", func() { 44 _, ec, podid := podmanTest.CreatePod("") 45 Expect(ec).To(Equal(0)) 46 47 session := podmanTest.RunTopContainerInPod("", podid) 48 session.WaitWithDefaultTimeout() 49 Expect(session.ExitCode()).To(Equal(0)) 50 51 result := podmanTest.Podman([]string{"pod", "ps"}) 52 result.WaitWithDefaultTimeout() 53 Expect(result.ExitCode()).To(Equal(0)) 54 Expect(len(result.OutputToStringArray())).Should(BeNumerically(">", 0)) 55 }) 56 57 It("podman pod ps quiet flag", func() { 58 _, ec, podid := podmanTest.CreatePod("") 59 Expect(ec).To(Equal(0)) 60 61 _, ec, _ = podmanTest.RunLsContainerInPod("", podid) 62 Expect(ec).To(Equal(0)) 63 64 result := podmanTest.Podman([]string{"pod", "ps", "-q"}) 65 result.WaitWithDefaultTimeout() 66 Expect(result.ExitCode()).To(Equal(0)) 67 Expect(len(result.OutputToStringArray())).Should(BeNumerically(">", 0)) 68 Expect(podid).To(ContainSubstring(result.OutputToStringArray()[0])) 69 }) 70 71 It("podman pod ps no-trunc", func() { 72 _, ec, podid := podmanTest.CreatePod("") 73 Expect(ec).To(Equal(0)) 74 75 _, ec2, _ := podmanTest.RunLsContainerInPod("", podid) 76 Expect(ec2).To(Equal(0)) 77 78 result := podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc"}) 79 result.WaitWithDefaultTimeout() 80 Expect(result.ExitCode()).To(Equal(0)) 81 Expect(len(result.OutputToStringArray())).Should(BeNumerically(">", 0)) 82 Expect(podid).To(Equal(result.OutputToStringArray()[0])) 83 }) 84 85 It("podman pod ps latest", func() { 86 _, ec, podid1 := podmanTest.CreatePod("") 87 Expect(ec).To(Equal(0)) 88 89 _, ec2, podid2 := podmanTest.CreatePod("") 90 Expect(ec2).To(Equal(0)) 91 92 result := podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--latest"}) 93 result.WaitWithDefaultTimeout() 94 Expect(result.ExitCode()).To(Equal(0)) 95 Expect(result.OutputToString()).To(ContainSubstring(podid2)) 96 Expect(result.OutputToString()).To(Not(ContainSubstring(podid1))) 97 }) 98 It("podman pod ps id filter flag", func() { 99 _, ec, podid := podmanTest.CreatePod("") 100 Expect(ec).To(Equal(0)) 101 102 result := podmanTest.Podman([]string{"pod", "ps", "--filter", fmt.Sprintf("id=%s", podid)}) 103 result.WaitWithDefaultTimeout() 104 Expect(result.ExitCode()).To(Equal(0)) 105 }) 106 107 It("podman pod ps mutually exclusive flags", func() { 108 session := podmanTest.Podman([]string{"pod", "ps", "-q", "--format", "{{.ID}}"}) 109 session.WaitWithDefaultTimeout() 110 Expect(session).To(ExitWithError()) 111 112 }) 113 114 It("podman pod ps --sort by name", func() { 115 _, ec, _ := podmanTest.CreatePod("") 116 Expect(ec).To(Equal(0)) 117 118 _, ec2, _ := podmanTest.CreatePod("") 119 Expect(ec2).To(Equal(0)) 120 121 _, ec3, _ := podmanTest.CreatePod("") 122 Expect(ec3).To(Equal(0)) 123 124 session := podmanTest.Podman([]string{"pod", "ps", "--sort=name", "--format", "{{.Name}}"}) 125 126 session.WaitWithDefaultTimeout() 127 Expect(session.ExitCode()).To(Equal(0)) 128 129 sortedArr := session.OutputToStringArray() 130 131 Expect(sort.SliceIsSorted(sortedArr, func(i, j int) bool { return sortedArr[i] < sortedArr[j] })).To(BeTrue()) 132 }) 133 134 It("podman pod ps --ctr-names", func() { 135 _, ec, podid := podmanTest.CreatePod("") 136 Expect(ec).To(Equal(0)) 137 138 session := podmanTest.RunTopContainerInPod("test1", podid) 139 session.WaitWithDefaultTimeout() 140 Expect(session.ExitCode()).To(Equal(0)) 141 142 _, ec, _ = podmanTest.RunLsContainerInPod("test2", podid) 143 Expect(ec).To(Equal(0)) 144 145 session = podmanTest.Podman([]string{"pod", "ps", "--format={{.ContainerInfo}}", "--ctr-names"}) 146 session.WaitWithDefaultTimeout() 147 Expect(session.ExitCode()).To(Equal(0)) 148 Expect(session.OutputToString()).To(ContainSubstring("test1")) 149 Expect(session.OutputToString()).To(ContainSubstring("test2")) 150 }) 151 152 It("podman pod ps filter ctr attributes", func() { 153 _, ec, podid1 := podmanTest.CreatePod("") 154 Expect(ec).To(Equal(0)) 155 156 session := podmanTest.RunTopContainerInPod("test1", podid1) 157 session.WaitWithDefaultTimeout() 158 Expect(session.ExitCode()).To(Equal(0)) 159 160 _, ec2, podid2 := podmanTest.CreatePod("") 161 Expect(ec2).To(Equal(0)) 162 163 _, ec3, cid := podmanTest.RunLsContainerInPod("test2", podid2) 164 Expect(ec3).To(Equal(0)) 165 166 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-names=test1"}) 167 session.WaitWithDefaultTimeout() 168 Expect(session.ExitCode()).To(Equal(0)) 169 Expect(session.OutputToString()).To(ContainSubstring(podid1)) 170 Expect(session.OutputToString()).To(Not(ContainSubstring(podid2))) 171 172 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", fmt.Sprintf("ctr-ids=%s", cid)}) 173 session.WaitWithDefaultTimeout() 174 Expect(session.ExitCode()).To(Equal(0)) 175 Expect(session.OutputToString()).To(ContainSubstring(podid2)) 176 Expect(session.OutputToString()).To(Not(ContainSubstring(podid1))) 177 178 _, ec3, podid3 := podmanTest.CreatePod("") 179 Expect(ec3).To(Equal(0)) 180 181 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-number=1"}) 182 session.WaitWithDefaultTimeout() 183 Expect(session.ExitCode()).To(Equal(0)) 184 Expect(session.OutputToString()).To(ContainSubstring(podid1)) 185 Expect(session.OutputToString()).To(ContainSubstring(podid2)) 186 Expect(session.OutputToString()).To(Not(ContainSubstring(podid3))) 187 188 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-status=running"}) 189 session.WaitWithDefaultTimeout() 190 Expect(session.ExitCode()).To(Equal(0)) 191 Expect(session.OutputToString()).To(ContainSubstring(podid1)) 192 Expect(session.OutputToString()).To(Not(ContainSubstring(podid2))) 193 Expect(session.OutputToString()).To(Not(ContainSubstring(podid3))) 194 195 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-status=exited"}) 196 session.WaitWithDefaultTimeout() 197 Expect(session.ExitCode()).To(Equal(0)) 198 Expect(session.OutputToString()).To(ContainSubstring(podid2)) 199 Expect(session.OutputToString()).To(Not(ContainSubstring(podid1))) 200 Expect(session.OutputToString()).To(Not(ContainSubstring(podid3))) 201 202 session = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "ctr-status=created"}) 203 session.WaitWithDefaultTimeout() 204 Expect(session.ExitCode()).To(Equal(0)) 205 Expect(session.OutputToString()).To(BeEmpty()) 206 }) 207 208 It("podman pod ps filter labels", func() { 209 _, ec, podid1 := podmanTest.CreatePod("") 210 Expect(ec).To(Equal(0)) 211 212 _, ec, podid2 := podmanTest.CreatePodWithLabels("", map[string]string{ 213 "io.podman.test.label": "value1", 214 "io.podman.test.key": "irrelevant-value", 215 }) 216 Expect(ec).To(Equal(0)) 217 218 _, ec, podid3 := podmanTest.CreatePodWithLabels("", map[string]string{ 219 "io.podman.test.label": "value2", 220 }) 221 Expect(ec).To(Equal(0)) 222 223 session := podmanTest.Podman([]string{"pod", "ps", "--no-trunc", "--filter", "label=io.podman.test.key", "--filter", "label=io.podman.test.label=value1"}) 224 session.WaitWithDefaultTimeout() 225 Expect(session.ExitCode()).To(Equal(0)) 226 Expect(session.OutputToString()).To(Not(ContainSubstring(podid1))) 227 Expect(session.OutputToString()).To(ContainSubstring(podid2)) 228 Expect(session.OutputToString()).To(Not(ContainSubstring(podid3))) 229 }) 230 })