github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/stop_test.go (about) 1 package integration 2 3 import ( 4 "io/ioutil" 5 "os" 6 "strings" 7 8 . "github.com/containers/libpod/test/utils" 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 ) 12 13 var _ = Describe("Podman 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 podmanTest.SeedImages() 28 }) 29 30 AfterEach(func() { 31 podmanTest.Cleanup() 32 f := CurrentGinkgoTestDescription() 33 processTestResult(f) 34 35 }) 36 37 It("podman stop bogus container", func() { 38 session := podmanTest.Podman([]string{"stop", "foobar"}) 39 session.WaitWithDefaultTimeout() 40 Expect(session.ExitCode()).To(Equal(125)) 41 }) 42 43 It("podman stop --ignore bogus container", func() { 44 SkipIfRemote() 45 46 session := podmanTest.RunTopContainer("") 47 session.WaitWithDefaultTimeout() 48 Expect(session.ExitCode()).To(Equal(0)) 49 cid := session.OutputToString() 50 51 session = podmanTest.Podman([]string{"stop", "--ignore", "foobar", cid}) 52 session.WaitWithDefaultTimeout() 53 Expect(session.ExitCode()).To(Equal(0)) 54 output := session.OutputToString() 55 Expect(output).To(ContainSubstring(cid)) 56 }) 57 58 It("podman stop container by id", func() { 59 session := podmanTest.RunTopContainer("") 60 session.WaitWithDefaultTimeout() 61 Expect(session.ExitCode()).To(Equal(0)) 62 cid := session.OutputToString() 63 session = podmanTest.Podman([]string{"stop", cid}) 64 session.WaitWithDefaultTimeout() 65 Expect(session.ExitCode()).To(Equal(0)) 66 67 finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) 68 finalCtrs.WaitWithDefaultTimeout() 69 Expect(finalCtrs.ExitCode()).To(Equal(0)) 70 Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) 71 }) 72 73 It("podman stop container by name", func() { 74 session := podmanTest.RunTopContainer("test1") 75 session.WaitWithDefaultTimeout() 76 Expect(session.ExitCode()).To(Equal(0)) 77 session = podmanTest.Podman([]string{"stop", "test1"}) 78 session.WaitWithDefaultTimeout() 79 Expect(session.ExitCode()).To(Equal(0)) 80 81 finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) 82 finalCtrs.WaitWithDefaultTimeout() 83 Expect(finalCtrs.ExitCode()).To(Equal(0)) 84 Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) 85 }) 86 87 It("podman container stop by name", func() { 88 session := podmanTest.RunTopContainer("test1") 89 session.WaitWithDefaultTimeout() 90 Expect(session.ExitCode()).To(Equal(0)) 91 session = podmanTest.Podman([]string{"container", "stop", "test1"}) 92 session.WaitWithDefaultTimeout() 93 Expect(session.ExitCode()).To(Equal(0)) 94 95 finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) 96 finalCtrs.WaitWithDefaultTimeout() 97 Expect(finalCtrs.ExitCode()).To(Equal(0)) 98 Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) 99 }) 100 101 It("podman stop stopped container", func() { 102 session := podmanTest.RunTopContainer("test1") 103 session.WaitWithDefaultTimeout() 104 Expect(session.ExitCode()).To(Equal(0)) 105 106 session2 := podmanTest.Podman([]string{"stop", "test1"}) 107 session2.WaitWithDefaultTimeout() 108 Expect(session2.ExitCode()).To(Equal(0)) 109 110 session3 := podmanTest.Podman([]string{"stop", "test1"}) 111 session3.WaitWithDefaultTimeout() 112 Expect(session3.ExitCode()).To(Equal(0)) 113 114 finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) 115 finalCtrs.WaitWithDefaultTimeout() 116 Expect(finalCtrs.ExitCode()).To(Equal(0)) 117 Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) 118 }) 119 120 It("podman stop all containers -t", func() { 121 session := podmanTest.RunTopContainer("test1") 122 session.WaitWithDefaultTimeout() 123 Expect(session.ExitCode()).To(Equal(0)) 124 cid1 := session.OutputToString() 125 126 session = podmanTest.RunTopContainer("test2") 127 session.WaitWithDefaultTimeout() 128 Expect(session.ExitCode()).To(Equal(0)) 129 cid2 := session.OutputToString() 130 131 session = podmanTest.RunTopContainer("test3") 132 session.WaitWithDefaultTimeout() 133 Expect(session.ExitCode()).To(Equal(0)) 134 cid3 := session.OutputToString() 135 136 session = podmanTest.Podman([]string{"stop", "-a", "-t", "1"}) 137 session.WaitWithDefaultTimeout() 138 Expect(session.ExitCode()).To(Equal(0)) 139 output := session.OutputToString() 140 Expect(output).To(ContainSubstring(cid1)) 141 Expect(output).To(ContainSubstring(cid2)) 142 Expect(output).To(ContainSubstring(cid3)) 143 144 finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) 145 finalCtrs.WaitWithDefaultTimeout() 146 Expect(finalCtrs.ExitCode()).To(Equal(0)) 147 Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) 148 }) 149 150 It("podman stop container --time", func() { 151 session := podmanTest.RunTopContainer("test4") 152 session.WaitWithDefaultTimeout() 153 Expect(session.ExitCode()).To(Equal(0)) 154 cid1 := session.OutputToString() 155 156 session = podmanTest.Podman([]string{"stop", "--time", "1", "test4"}) 157 session.WaitWithDefaultTimeout() 158 Expect(session.ExitCode()).To(Equal(0)) 159 output := session.OutputToString() 160 Expect(output).To(ContainSubstring(cid1)) 161 162 finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) 163 finalCtrs.WaitWithDefaultTimeout() 164 Expect(finalCtrs.ExitCode()).To(Equal(0)) 165 Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) 166 }) 167 168 It("podman stop container --timeout", func() { 169 session := podmanTest.RunTopContainer("test5") 170 session.WaitWithDefaultTimeout() 171 Expect(session.ExitCode()).To(Equal(0)) 172 cid1 := session.OutputToString() 173 174 session = podmanTest.Podman([]string{"stop", "--timeout", "1", "test5"}) 175 session.WaitWithDefaultTimeout() 176 Expect(session.ExitCode()).To(Equal(0)) 177 output := session.OutputToString() 178 Expect(output).To(ContainSubstring(cid1)) 179 180 finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) 181 finalCtrs.WaitWithDefaultTimeout() 182 Expect(finalCtrs.ExitCode()).To(Equal(0)) 183 Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) 184 }) 185 186 It("podman stop latest containers", func() { 187 session := podmanTest.RunTopContainer("test1") 188 session.WaitWithDefaultTimeout() 189 Expect(session.ExitCode()).To(Equal(0)) 190 session = podmanTest.Podman([]string{"stop", "-l", "-t", "1"}) 191 session.WaitWithDefaultTimeout() 192 Expect(session.ExitCode()).To(Equal(0)) 193 finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) 194 finalCtrs.WaitWithDefaultTimeout() 195 Expect(finalCtrs.ExitCode()).To(Equal(0)) 196 Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) 197 }) 198 199 It("podman stop all containers with one stopped", func() { 200 session := podmanTest.RunTopContainer("test1") 201 session.WaitWithDefaultTimeout() 202 Expect(session.ExitCode()).To(Equal(0)) 203 session2 := podmanTest.RunTopContainer("test2") 204 session2.WaitWithDefaultTimeout() 205 Expect(session2.ExitCode()).To(Equal(0)) 206 session3 := podmanTest.Podman([]string{"stop", "-l", "-t", "1"}) 207 session3.WaitWithDefaultTimeout() 208 Expect(session3.ExitCode()).To(Equal(0)) 209 session4 := podmanTest.Podman([]string{"stop", "-a", "-t", "1"}) 210 session4.WaitWithDefaultTimeout() 211 Expect(session4.ExitCode()).To(Equal(0)) 212 finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) 213 finalCtrs.WaitWithDefaultTimeout() 214 Expect(finalCtrs.ExitCode()).To(Equal(0)) 215 Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) 216 }) 217 218 It("podman stop all containers with one created", func() { 219 session := podmanTest.RunTopContainer("test1") 220 session.WaitWithDefaultTimeout() 221 Expect(session.ExitCode()).To(Equal(0)) 222 session2 := podmanTest.Podman([]string{"create", ALPINE, "/bin/sh"}) 223 session2.WaitWithDefaultTimeout() 224 Expect(session2.ExitCode()).To(Equal(0)) 225 session3 := podmanTest.Podman([]string{"stop", "-a", "-t", "1"}) 226 session3.WaitWithDefaultTimeout() 227 Expect(session3.ExitCode()).To(Equal(0)) 228 finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) 229 finalCtrs.WaitWithDefaultTimeout() 230 Expect(finalCtrs.ExitCode()).To(Equal(0)) 231 Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) 232 }) 233 234 It("podman stop --cidfile", func() { 235 SkipIfRemote() 236 237 tmpDir, err := ioutil.TempDir("", "") 238 Expect(err).To(BeNil()) 239 tmpFile := tmpDir + "cid" 240 241 defer os.RemoveAll(tmpDir) 242 243 session := podmanTest.Podman([]string{"create", "--cidfile", tmpFile, "-d", ALPINE, "top"}) 244 session.WaitWithDefaultTimeout() 245 Expect(session.ExitCode()).To(Equal(0)) 246 cid := session.OutputToStringArray()[0] 247 248 session = podmanTest.Podman([]string{"start", cid}) 249 session.WaitWithDefaultTimeout() 250 Expect(session.ExitCode()).To(Equal(0)) 251 252 result := podmanTest.Podman([]string{"stop", "--cidfile", tmpFile}) 253 result.WaitWithDefaultTimeout() 254 Expect(result.ExitCode()).To(Equal(0)) 255 output := result.OutputToString() 256 Expect(output).To(ContainSubstring(cid)) 257 }) 258 259 It("podman stop multiple --cidfile", func() { 260 SkipIfRemote() 261 262 tmpDir, err := ioutil.TempDir("", "") 263 Expect(err).To(BeNil()) 264 tmpFile1 := tmpDir + "cid-1" 265 tmpFile2 := tmpDir + "cid-2" 266 267 defer os.RemoveAll(tmpDir) 268 269 session := podmanTest.Podman([]string{"run", "--cidfile", tmpFile1, "-d", ALPINE, "top"}) 270 session.WaitWithDefaultTimeout() 271 Expect(session.ExitCode()).To(Equal(0)) 272 cid1 := session.OutputToStringArray()[0] 273 Expect(podmanTest.NumberOfContainers()).To(Equal(1)) 274 275 session = podmanTest.Podman([]string{"run", "--cidfile", tmpFile2, "-d", ALPINE, "top"}) 276 session.WaitWithDefaultTimeout() 277 Expect(session.ExitCode()).To(Equal(0)) 278 cid2 := session.OutputToStringArray()[0] 279 Expect(podmanTest.NumberOfContainers()).To(Equal(2)) 280 281 result := podmanTest.Podman([]string{"stop", "--cidfile", tmpFile1, "--cidfile", tmpFile2}) 282 result.WaitWithDefaultTimeout() 283 Expect(result.ExitCode()).To(Equal(0)) 284 output := result.OutputToString() 285 Expect(output).To(ContainSubstring(cid1)) 286 Expect(output).To(ContainSubstring(cid2)) 287 Expect(podmanTest.NumberOfContainers()).To(Equal(2)) 288 }) 289 290 It("podman stop invalid --latest and --cidfile and --all", func() { 291 SkipIfRemote() 292 293 result := podmanTest.Podman([]string{"stop", "--cidfile", "foobar", "--latest"}) 294 result.WaitWithDefaultTimeout() 295 Expect(result.ExitCode()).To(Equal(125)) 296 297 result = podmanTest.Podman([]string{"stop", "--cidfile", "foobar", "--all"}) 298 result.WaitWithDefaultTimeout() 299 Expect(result.ExitCode()).To(Equal(125)) 300 301 result = podmanTest.Podman([]string{"stop", "--cidfile", "foobar", "--all", "--latest"}) 302 result.WaitWithDefaultTimeout() 303 Expect(result.ExitCode()).To(Equal(125)) 304 305 result = podmanTest.Podman([]string{"stop", "--latest", "--all"}) 306 result.WaitWithDefaultTimeout() 307 Expect(result.ExitCode()).To(Equal(125)) 308 }) 309 })