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