github.com/containers/podman/v4@v4.9.4/test/e2e/kill_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 kill", func() { 11 12 It("podman kill bogus container", func() { 13 session := podmanTest.Podman([]string{"kill", "foobar"}) 14 session.WaitWithDefaultTimeout() 15 Expect(session).To(ExitWithError()) 16 }) 17 18 It("podman container kill a running container by id", func() { 19 session := podmanTest.RunTopContainer("") 20 session.WaitWithDefaultTimeout() 21 Expect(session).Should(ExitCleanly()) 22 cid := session.OutputToString() 23 24 result := podmanTest.Podman([]string{"container", "kill", cid}) 25 result.WaitWithDefaultTimeout() 26 27 Expect(result).Should(ExitCleanly()) 28 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 29 }) 30 31 It("podman container kill a running container by short id", func() { 32 session := podmanTest.RunTopContainer("") 33 session.WaitWithDefaultTimeout() 34 Expect(session).Should(ExitCleanly()) 35 cid := session.OutputToString() 36 37 result := podmanTest.Podman([]string{"container", "kill", cid[:5]}) 38 result.WaitWithDefaultTimeout() 39 Expect(result).Should(ExitCleanly()) 40 Expect(result.OutputToString()).To(Equal(cid[:5])) 41 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 42 }) 43 44 It("podman kill a running container by id", func() { 45 session := podmanTest.RunTopContainer("") 46 session.WaitWithDefaultTimeout() 47 Expect(session).Should(ExitCleanly()) 48 cid := session.OutputToString() 49 50 result := podmanTest.Podman([]string{"kill", cid}) 51 result.WaitWithDefaultTimeout() 52 53 Expect(result).Should(ExitCleanly()) 54 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 55 }) 56 57 It("podman kill a running container by id with TERM", func() { 58 session := podmanTest.RunTopContainer("") 59 session.WaitWithDefaultTimeout() 60 Expect(session).Should(ExitCleanly()) 61 cid := session.OutputToString() 62 63 result := podmanTest.Podman([]string{"kill", "-s", "9", cid}) 64 result.WaitWithDefaultTimeout() 65 Expect(result).Should(ExitCleanly()) 66 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 67 }) 68 69 It("podman kill a running container by name", func() { 70 session := podmanTest.RunTopContainer("test1") 71 session.WaitWithDefaultTimeout() 72 Expect(session).Should(ExitCleanly()) 73 74 result := podmanTest.Podman([]string{"kill", "-s", "9", "test1"}) 75 result.WaitWithDefaultTimeout() 76 Expect(result).Should(ExitCleanly()) 77 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 78 }) 79 80 It("podman kill a running container by id with a bogus signal", func() { 81 session := podmanTest.RunTopContainer("") 82 session.WaitWithDefaultTimeout() 83 Expect(session).Should(ExitCleanly()) 84 cid := session.OutputToString() 85 86 result := podmanTest.Podman([]string{"kill", "-s", "foobar", cid}) 87 result.WaitWithDefaultTimeout() 88 Expect(result).Should(Exit(125)) 89 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1)) 90 }) 91 92 It("podman kill latest container", func() { 93 session := podmanTest.RunTopContainer("test1") 94 session.WaitWithDefaultTimeout() 95 Expect(session).Should(ExitCleanly()) 96 97 cid := "-l" 98 if IsRemote() { 99 cid = "test1" 100 } 101 result := podmanTest.Podman([]string{"kill", cid}) 102 result.WaitWithDefaultTimeout() 103 Expect(result).Should(ExitCleanly()) 104 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 105 }) 106 107 It("podman kill paused container", func() { 108 SkipIfRootlessCgroupsV1("pause is not supported for cgroupv1 rootless") 109 ctrName := "testctr" 110 session := podmanTest.RunTopContainer(ctrName) 111 session.WaitWithDefaultTimeout() 112 Expect(session).Should(ExitCleanly()) 113 114 pause := podmanTest.Podman([]string{"pause", ctrName}) 115 pause.WaitWithDefaultTimeout() 116 Expect(pause).Should(ExitCleanly()) 117 118 kill := podmanTest.Podman([]string{"kill", ctrName}) 119 kill.WaitWithDefaultTimeout() 120 Expect(kill).Should(ExitCleanly()) 121 122 inspect := podmanTest.Podman([]string{"inspect", "-f", "{{.State.Status}}", ctrName}) 123 inspect.WaitWithDefaultTimeout() 124 Expect(inspect).Should(ExitCleanly()) 125 Expect(inspect.OutputToString()).To(Or(Equal("stopped"), Equal("exited"))) 126 }) 127 128 It("podman kill --cidfile", func() { 129 tmpDir := GinkgoT().TempDir() 130 tmpFile := tmpDir + "cid" 131 132 session := podmanTest.Podman([]string{"run", "-dt", "--cidfile", tmpFile, ALPINE, "top"}) 133 session.WaitWithDefaultTimeout() 134 Expect(session).Should(ExitCleanly()) 135 cid := session.OutputToStringArray()[0] 136 137 kill := podmanTest.Podman([]string{"kill", "--cidfile", tmpFile}) 138 kill.WaitWithDefaultTimeout() 139 Expect(kill).Should(ExitCleanly()) 140 141 wait := podmanTest.Podman([]string{"wait", "--condition", "exited", cid}) 142 wait.WaitWithDefaultTimeout() 143 Expect(wait).Should(ExitCleanly()) 144 }) 145 146 It("podman kill multiple --cidfile", func() { 147 tmpDir1 := GinkgoT().TempDir() 148 tmpFile1 := tmpDir1 + "cid" 149 150 tmpDir2 := GinkgoT().TempDir() 151 tmpFile2 := tmpDir2 + "cid" 152 153 session := podmanTest.Podman([]string{"run", "-dt", "--cidfile", tmpFile1, ALPINE, "top"}) 154 session.WaitWithDefaultTimeout() 155 Expect(session).Should(ExitCleanly()) 156 cid1 := session.OutputToStringArray()[0] 157 158 session2 := podmanTest.Podman([]string{"run", "-dt", "--cidfile", tmpFile2, ALPINE, "top"}) 159 session2.WaitWithDefaultTimeout() 160 Expect(session2).Should(ExitCleanly()) 161 cid2 := session2.OutputToStringArray()[0] 162 163 kill := podmanTest.Podman([]string{"kill", "--cidfile", tmpFile1, "--cidfile", tmpFile2}) 164 kill.WaitWithDefaultTimeout() 165 Expect(kill).Should(ExitCleanly()) 166 167 wait := podmanTest.Podman([]string{"wait", "--condition", "exited", cid1}) 168 wait.WaitWithDefaultTimeout() 169 Expect(wait).Should(ExitCleanly()) 170 wait = podmanTest.Podman([]string{"wait", "--condition", "exited", cid2}) 171 wait.WaitWithDefaultTimeout() 172 Expect(wait).Should(ExitCleanly()) 173 }) 174 175 It("podman kill --all", func() { 176 session := podmanTest.RunTopContainer("") 177 session.WaitWithDefaultTimeout() 178 Expect(session).Should(ExitCleanly()) 179 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1)) 180 181 session = podmanTest.RunTopContainer("") 182 session.WaitWithDefaultTimeout() 183 Expect(session).Should(ExitCleanly()) 184 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(2)) 185 186 session = podmanTest.Podman([]string{"kill", "--all"}) 187 session.WaitWithDefaultTimeout() 188 Expect(session).Should(ExitCleanly()) 189 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0)) 190 }) 191 })