github.com/containers/podman/v4@v4.9.4/test/e2e/pod_stop_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 stop", func() { 11 12 It("podman pod stop bogus pod", func() { 13 session := podmanTest.Podman([]string{"pod", "stop", "123"}) 14 session.WaitWithDefaultTimeout() 15 Expect(session).Should(Exit(125)) 16 }) 17 18 It("podman pod stop --ignore bogus pod", func() { 19 20 session := podmanTest.Podman([]string{"pod", "stop", "--ignore", "123"}) 21 session.WaitWithDefaultTimeout() 22 Expect(session).Should(ExitCleanly()) 23 }) 24 25 It("podman stop bogus pod and a running pod", func() { 26 _, ec, podid1 := podmanTest.CreatePod(nil) 27 Expect(ec).To(Equal(0)) 28 29 session := podmanTest.RunTopContainerInPod("test1", podid1) 30 session.WaitWithDefaultTimeout() 31 Expect(session).Should(ExitCleanly()) 32 33 session = podmanTest.Podman([]string{"pod", "stop", "bogus", "test1"}) 34 session.WaitWithDefaultTimeout() 35 Expect(session).Should(Exit(125)) 36 }) 37 38 It("podman stop --ignore bogus pod and a running pod", func() { 39 40 _, ec, podid1 := podmanTest.CreatePod(nil) 41 Expect(ec).To(Equal(0)) 42 43 session := podmanTest.RunTopContainerInPod("test1", podid1) 44 session.WaitWithDefaultTimeout() 45 Expect(session).Should(ExitCleanly()) 46 47 session = podmanTest.Podman([]string{"pod", "stop", "--ignore", "bogus", "test1"}) 48 session.WaitWithDefaultTimeout() 49 Expect(session).Should(ExitCleanly()) 50 51 session = podmanTest.Podman([]string{"pod", "stop", "-t", "-1", "--ignore", "test1", "bogus"}) 52 session.WaitWithDefaultTimeout() 53 Expect(session).Should(ExitCleanly()) 54 }) 55 56 It("podman pod stop single empty pod", func() { 57 _, ec, podid := podmanTest.CreatePod(nil) 58 Expect(ec).To(Equal(0)) 59 60 session := podmanTest.Podman([]string{"pod", "stop", podid}) 61 session.WaitWithDefaultTimeout() 62 Expect(session).Should(ExitCleanly()) 63 }) 64 65 It("podman pod stop single pod by name", func() { 66 _, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}}) 67 Expect(ec).To(Equal(0)) 68 69 session := podmanTest.RunTopContainerInPod("", "foobar99") 70 session.WaitWithDefaultTimeout() 71 Expect(session).Should(ExitCleanly()) 72 73 session = podmanTest.Podman([]string{"pod", "stop", "foobar99"}) 74 session.WaitWithDefaultTimeout() 75 Expect(session).Should(ExitCleanly()) 76 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 77 }) 78 79 It("podman pod stop multiple pods", func() { 80 _, ec, podid1 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}}) 81 Expect(ec).To(Equal(0)) 82 83 session := podmanTest.RunTopContainerInPod("", "foobar99") 84 session.WaitWithDefaultTimeout() 85 Expect(session).Should(ExitCleanly()) 86 87 _, ec2, podid2 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}}) 88 Expect(ec2).To(Equal(0)) 89 90 session = podmanTest.RunTopContainerInPod("", "foobar100") 91 session.WaitWithDefaultTimeout() 92 Expect(session).Should(ExitCleanly()) 93 94 session = podmanTest.Podman([]string{"pod", "stop", podid1, podid2}) 95 session.WaitWithDefaultTimeout() 96 Expect(session).Should(ExitCleanly()) 97 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 98 }) 99 100 It("podman pod stop all pods", func() { 101 _, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}}) 102 Expect(ec).To(Equal(0)) 103 104 session := podmanTest.RunTopContainerInPod("", "foobar99") 105 session.WaitWithDefaultTimeout() 106 Expect(session).Should(ExitCleanly()) 107 108 _, ec, _ = podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}}) 109 Expect(ec).To(Equal(0)) 110 111 session = podmanTest.RunTopContainerInPod("", "foobar100") 112 session.WaitWithDefaultTimeout() 113 Expect(session).Should(ExitCleanly()) 114 115 session = podmanTest.Podman([]string{"pod", "stop", "--all"}) 116 session.WaitWithDefaultTimeout() 117 Expect(session).Should(ExitCleanly()) 118 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 119 }) 120 121 It("podman pod stop latest pod", func() { 122 _, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}}) 123 Expect(ec).To(Equal(0)) 124 125 session := podmanTest.RunTopContainerInPod("", "foobar99") 126 session.WaitWithDefaultTimeout() 127 Expect(session).Should(ExitCleanly()) 128 129 _, ec, _ = podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}}) 130 Expect(ec).To(Equal(0)) 131 132 session = podmanTest.RunTopContainerInPod("", "foobar100") 133 session.WaitWithDefaultTimeout() 134 Expect(session).Should(ExitCleanly()) 135 136 podid := "--latest" 137 if IsRemote() { 138 podid = "foobar100" 139 } 140 session = podmanTest.Podman([]string{"pod", "stop", podid}) 141 session.WaitWithDefaultTimeout() 142 Expect(session).Should(ExitCleanly()) 143 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1)) 144 }) 145 146 It("podman pod stop multiple pods with bogus", func() { 147 _, ec, podid1 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}}) 148 Expect(ec).To(Equal(0)) 149 150 session := podmanTest.RunTopContainerInPod("", "foobar99") 151 session.WaitWithDefaultTimeout() 152 Expect(session).Should(ExitCleanly()) 153 154 session = podmanTest.Podman([]string{"pod", "stop", podid1, "doesnotexist"}) 155 session.WaitWithDefaultTimeout() 156 Expect(session).Should(Exit(125)) 157 }) 158 159 It("podman pod start/stop single pod via --pod-id-file", func() { 160 tmpDir := GinkgoT().TempDir() 161 tmpFile := tmpDir + "podID" 162 163 podName := "rudolph" 164 165 // Create a pod with --pod-id-file. 166 session := podmanTest.Podman([]string{"pod", "create", "--name", podName, "--pod-id-file", tmpFile}) 167 session.WaitWithDefaultTimeout() 168 Expect(session).Should(ExitCleanly()) 169 170 // Create container inside the pod. 171 session = podmanTest.Podman([]string{"create", "--pod", podName, ALPINE, "top"}) 172 session.WaitWithDefaultTimeout() 173 Expect(session).Should(ExitCleanly()) 174 175 session = podmanTest.Podman([]string{"pod", "start", "--pod-id-file", tmpFile}) 176 session.WaitWithDefaultTimeout() 177 Expect(session).Should(ExitCleanly()) 178 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(2)) // infra+top 179 180 session = podmanTest.Podman([]string{"pod", "stop", "--pod-id-file", tmpFile}) 181 session.WaitWithDefaultTimeout() 182 Expect(session).Should(ExitCleanly()) 183 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 184 }) 185 186 It("podman pod start/stop multiple pods via --pod-id-file", func() { 187 tmpDir := GinkgoT().TempDir() 188 189 podIDFiles := []string{} 190 for _, i := range "0123456789" { 191 tmpFile := tmpDir + "cid" + string(i) 192 podName := "rudolph" + string(i) 193 // Create a pod with --pod-id-file. 194 session := podmanTest.Podman([]string{"pod", "create", "--name", podName, "--pod-id-file", tmpFile}) 195 session.WaitWithDefaultTimeout() 196 Expect(session).Should(ExitCleanly()) 197 198 // Create container inside the pod. 199 session = podmanTest.Podman([]string{"create", "--pod", podName, ALPINE, "top"}) 200 session.WaitWithDefaultTimeout() 201 Expect(session).Should(ExitCleanly()) 202 203 // Append the id files along with the command. 204 podIDFiles = append(podIDFiles, "--pod-id-file") 205 podIDFiles = append(podIDFiles, tmpFile) 206 } 207 208 cmd := []string{"pod", "start"} 209 cmd = append(cmd, podIDFiles...) 210 session := podmanTest.Podman(cmd) 211 session.WaitWithDefaultTimeout() 212 Expect(session).Should(ExitCleanly()) 213 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(20)) // 10*(infra+top) 214 215 cmd = []string{"pod", "stop"} 216 cmd = append(cmd, podIDFiles...) 217 session = podmanTest.Podman(cmd) 218 session.WaitWithDefaultTimeout() 219 Expect(session).Should(ExitCleanly()) 220 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 221 }) 222 })