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