github.com/hanks177/podman/v4@v4.1.3-0.20220613032544-16d90015bc83/test/e2e/pod_stop_test.go (about) 1 package integration 2 3 import ( 4 "io/ioutil" 5 "os" 6 7 . "github.com/hanks177/podman/v4/test/utils" 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 . "github.com/onsi/gomega/gexec" 11 ) 12 13 var _ = Describe("Podman pod stop", 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 }) 28 29 AfterEach(func() { 30 podmanTest.Cleanup() 31 f := CurrentGinkgoTestDescription() 32 processTestResult(f) 33 34 }) 35 36 It("podman pod stop bogus pod", func() { 37 session := podmanTest.Podman([]string{"pod", "stop", "123"}) 38 session.WaitWithDefaultTimeout() 39 Expect(session).Should(Exit(125)) 40 }) 41 42 It("podman pod stop --ignore bogus pod", func() { 43 44 session := podmanTest.Podman([]string{"pod", "stop", "--ignore", "123"}) 45 session.WaitWithDefaultTimeout() 46 Expect(session).Should(Exit(0)) 47 }) 48 49 It("podman stop bogus pod and a running pod", func() { 50 _, ec, podid1 := podmanTest.CreatePod(nil) 51 Expect(ec).To(Equal(0)) 52 53 session := podmanTest.RunTopContainerInPod("test1", podid1) 54 session.WaitWithDefaultTimeout() 55 Expect(session).Should(Exit(0)) 56 57 session = podmanTest.Podman([]string{"pod", "stop", "bogus", "test1"}) 58 session.WaitWithDefaultTimeout() 59 Expect(session).Should(Exit(125)) 60 }) 61 62 It("podman stop --ignore bogus pod and a running pod", func() { 63 64 _, ec, podid1 := podmanTest.CreatePod(nil) 65 Expect(ec).To(Equal(0)) 66 67 session := podmanTest.RunTopContainerInPod("test1", podid1) 68 session.WaitWithDefaultTimeout() 69 Expect(session).Should(Exit(0)) 70 71 session = podmanTest.Podman([]string{"pod", "stop", "--ignore", "bogus", "test1"}) 72 session.WaitWithDefaultTimeout() 73 Expect(session).Should(Exit(0)) 74 75 session = podmanTest.Podman([]string{"pod", "stop", "--ignore", "test1", "bogus"}) 76 session.WaitWithDefaultTimeout() 77 Expect(session).Should(Exit(0)) 78 }) 79 80 It("podman pod stop single empty pod", func() { 81 _, ec, podid := podmanTest.CreatePod(nil) 82 Expect(ec).To(Equal(0)) 83 84 session := podmanTest.Podman([]string{"pod", "stop", podid}) 85 session.WaitWithDefaultTimeout() 86 Expect(session).Should(Exit(0)) 87 }) 88 89 It("podman pod stop single pod by name", func() { 90 _, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}}) 91 Expect(ec).To(Equal(0)) 92 93 session := podmanTest.RunTopContainerInPod("", "foobar99") 94 session.WaitWithDefaultTimeout() 95 Expect(session).Should(Exit(0)) 96 97 session = podmanTest.Podman([]string{"pod", "stop", "foobar99"}) 98 session.WaitWithDefaultTimeout() 99 Expect(session).Should(Exit(0)) 100 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 101 }) 102 103 It("podman pod stop multiple pods", func() { 104 _, ec, podid1 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}}) 105 Expect(ec).To(Equal(0)) 106 107 session := podmanTest.RunTopContainerInPod("", "foobar99") 108 session.WaitWithDefaultTimeout() 109 Expect(session).Should(Exit(0)) 110 111 _, ec2, podid2 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}}) 112 Expect(ec2).To(Equal(0)) 113 114 session = podmanTest.RunTopContainerInPod("", "foobar100") 115 session.WaitWithDefaultTimeout() 116 Expect(session).Should(Exit(0)) 117 118 session = podmanTest.Podman([]string{"pod", "stop", podid1, podid2}) 119 session.WaitWithDefaultTimeout() 120 Expect(session).Should(Exit(0)) 121 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 122 }) 123 124 It("podman pod stop all pods", func() { 125 _, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}}) 126 Expect(ec).To(Equal(0)) 127 128 session := podmanTest.RunTopContainerInPod("", "foobar99") 129 session.WaitWithDefaultTimeout() 130 Expect(session).Should(Exit(0)) 131 132 _, ec, _ = podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}}) 133 Expect(ec).To(Equal(0)) 134 135 session = podmanTest.RunTopContainerInPod("", "foobar100") 136 session.WaitWithDefaultTimeout() 137 Expect(session).Should(Exit(0)) 138 139 session = podmanTest.Podman([]string{"pod", "stop", "--all"}) 140 session.WaitWithDefaultTimeout() 141 Expect(session).Should(Exit(0)) 142 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 143 }) 144 145 It("podman pod stop latest pod", func() { 146 _, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}}) 147 Expect(ec).To(Equal(0)) 148 149 session := podmanTest.RunTopContainerInPod("", "foobar99") 150 session.WaitWithDefaultTimeout() 151 Expect(session).Should(Exit(0)) 152 153 _, ec, _ = podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}}) 154 Expect(ec).To(Equal(0)) 155 156 session = podmanTest.RunTopContainerInPod("", "foobar100") 157 session.WaitWithDefaultTimeout() 158 Expect(session).Should(Exit(0)) 159 160 podid := "--latest" 161 if IsRemote() { 162 podid = "foobar100" 163 } 164 session = podmanTest.Podman([]string{"pod", "stop", podid}) 165 session.WaitWithDefaultTimeout() 166 Expect(session).Should(Exit(0)) 167 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1)) 168 }) 169 170 It("podman pod stop multiple pods with bogus", func() { 171 _, ec, podid1 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}}) 172 Expect(ec).To(Equal(0)) 173 174 session := podmanTest.RunTopContainerInPod("", "foobar99") 175 session.WaitWithDefaultTimeout() 176 Expect(session).Should(Exit(0)) 177 178 session = podmanTest.Podman([]string{"pod", "stop", podid1, "doesnotexist"}) 179 session.WaitWithDefaultTimeout() 180 Expect(session).Should(Exit(125)) 181 }) 182 183 It("podman pod start/stop single pod via --pod-id-file", func() { 184 tmpDir, err := ioutil.TempDir("", "") 185 Expect(err).To(BeNil()) 186 tmpFile := tmpDir + "podID" 187 defer os.RemoveAll(tmpDir) 188 189 podName := "rudolph" 190 191 // Create a pod with --pod-id-file. 192 session := podmanTest.Podman([]string{"pod", "create", "--name", podName, "--pod-id-file", tmpFile}) 193 session.WaitWithDefaultTimeout() 194 Expect(session).Should(Exit(0)) 195 196 // Create container inside the pod. 197 session = podmanTest.Podman([]string{"create", "--pod", podName, ALPINE, "top"}) 198 session.WaitWithDefaultTimeout() 199 Expect(session).Should(Exit(0)) 200 201 session = podmanTest.Podman([]string{"pod", "start", "--pod-id-file", tmpFile}) 202 session.WaitWithDefaultTimeout() 203 Expect(session).Should(Exit(0)) 204 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(2)) // infra+top 205 206 session = podmanTest.Podman([]string{"pod", "stop", "--pod-id-file", tmpFile}) 207 session.WaitWithDefaultTimeout() 208 Expect(session).Should(Exit(0)) 209 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 210 }) 211 212 It("podman pod start/stop multiple pods via --pod-id-file", func() { 213 tmpDir, err := ioutil.TempDir("", "") 214 Expect(err).To(BeNil()) 215 defer os.RemoveAll(tmpDir) 216 217 podIDFiles := []string{} 218 for _, i := range "0123456789" { 219 tmpFile := tmpDir + "cid" + string(i) 220 podName := "rudolph" + string(i) 221 // Create a pod with --pod-id-file. 222 session := podmanTest.Podman([]string{"pod", "create", "--name", podName, "--pod-id-file", tmpFile}) 223 session.WaitWithDefaultTimeout() 224 Expect(session).Should(Exit(0)) 225 226 // Create container inside the pod. 227 session = podmanTest.Podman([]string{"create", "--pod", podName, ALPINE, "top"}) 228 session.WaitWithDefaultTimeout() 229 Expect(session).Should(Exit(0)) 230 231 // Append the id files along with the command. 232 podIDFiles = append(podIDFiles, "--pod-id-file") 233 podIDFiles = append(podIDFiles, tmpFile) 234 } 235 236 cmd := []string{"pod", "start"} 237 cmd = append(cmd, podIDFiles...) 238 session := podmanTest.Podman(cmd) 239 session.WaitWithDefaultTimeout() 240 Expect(session).Should(Exit(0)) 241 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(20)) // 10*(infra+top) 242 243 cmd = []string{"pod", "stop"} 244 cmd = append(cmd, podIDFiles...) 245 session = podmanTest.Podman(cmd) 246 session.WaitWithDefaultTimeout() 247 Expect(session).Should(Exit(0)) 248 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 249 }) 250 })