mirror of
https://github.com/containers/podman.git
synced 2025-08-06 19:44:14 +08:00

Followup to #22270: wherever possible/practical, extend command error checks to include explicit exit status codes and error strings. Because #22346 is stalled, these are some trivial easy-to-review changes that get us closer to the goal. Signed-off-by: Ed Santiago <santiago@redhat.com>
189 lines
6.3 KiB
Go
189 lines
6.3 KiB
Go
package integration
|
|
|
|
import (
|
|
"path/filepath"
|
|
|
|
. "github.com/containers/podman/v5/test/utils"
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Podman kill", func() {
|
|
|
|
It("podman kill bogus container", func() {
|
|
session := podmanTest.Podman([]string{"kill", "foobar"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).To(ExitWithError(125, `no container with name or ID "foobar" found: no such container`))
|
|
})
|
|
|
|
It("podman container kill a running container by id", func() {
|
|
session := podmanTest.RunTopContainer("")
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
cid := session.OutputToString()
|
|
|
|
result := podmanTest.Podman([]string{"container", "kill", cid})
|
|
result.WaitWithDefaultTimeout()
|
|
|
|
Expect(result).Should(ExitCleanly())
|
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
|
|
})
|
|
|
|
It("podman container kill a running container by short id", func() {
|
|
session := podmanTest.RunTopContainer("")
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
cid := session.OutputToString()
|
|
|
|
result := podmanTest.Podman([]string{"container", "kill", cid[:5]})
|
|
result.WaitWithDefaultTimeout()
|
|
Expect(result).Should(ExitCleanly())
|
|
Expect(result.OutputToString()).To(Equal(cid[:5]))
|
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
|
|
})
|
|
|
|
It("podman kill a running container by id", func() {
|
|
session := podmanTest.RunTopContainer("")
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
cid := session.OutputToString()
|
|
|
|
result := podmanTest.Podman([]string{"kill", cid})
|
|
result.WaitWithDefaultTimeout()
|
|
|
|
Expect(result).Should(ExitCleanly())
|
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
|
|
})
|
|
|
|
It("podman kill a running container by id with TERM", func() {
|
|
session := podmanTest.RunTopContainer("")
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
cid := session.OutputToString()
|
|
|
|
result := podmanTest.Podman([]string{"kill", "-s", "9", cid})
|
|
result.WaitWithDefaultTimeout()
|
|
Expect(result).Should(ExitCleanly())
|
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
|
|
})
|
|
|
|
It("podman kill a running container by name", func() {
|
|
session := podmanTest.RunTopContainer("test1")
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
result := podmanTest.Podman([]string{"kill", "-s", "9", "test1"})
|
|
result.WaitWithDefaultTimeout()
|
|
Expect(result).Should(ExitCleanly())
|
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
|
|
})
|
|
|
|
It("podman kill a running container by id with a bogus signal", func() {
|
|
session := podmanTest.RunTopContainer("")
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
cid := session.OutputToString()
|
|
|
|
result := podmanTest.Podman([]string{"kill", "-s", "foobar", cid})
|
|
result.WaitWithDefaultTimeout()
|
|
Expect(result).Should(ExitWithError(125, "invalid signal: foobar"))
|
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1))
|
|
})
|
|
|
|
It("podman kill latest container", func() {
|
|
session := podmanTest.RunTopContainer("test1")
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
cid := "-l"
|
|
if IsRemote() {
|
|
cid = "test1"
|
|
}
|
|
result := podmanTest.Podman([]string{"kill", cid})
|
|
result.WaitWithDefaultTimeout()
|
|
Expect(result).Should(ExitCleanly())
|
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
|
|
})
|
|
|
|
It("podman kill paused container", func() {
|
|
SkipIfRootlessCgroupsV1("pause is not supported for cgroupv1 rootless")
|
|
ctrName := "testctr"
|
|
session := podmanTest.RunTopContainer(ctrName)
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
pause := podmanTest.Podman([]string{"pause", ctrName})
|
|
pause.WaitWithDefaultTimeout()
|
|
Expect(pause).Should(ExitCleanly())
|
|
|
|
kill := podmanTest.Podman([]string{"kill", ctrName})
|
|
kill.WaitWithDefaultTimeout()
|
|
Expect(kill).Should(ExitCleanly())
|
|
|
|
inspect := podmanTest.Podman([]string{"inspect", "-f", "{{.State.Status}}", ctrName})
|
|
inspect.WaitWithDefaultTimeout()
|
|
Expect(inspect).Should(ExitCleanly())
|
|
Expect(inspect.OutputToString()).To(Or(Equal("stopped"), Equal("exited")))
|
|
})
|
|
|
|
It("podman kill --cidfile", func() {
|
|
cidFile := filepath.Join(tempdir, "cid")
|
|
|
|
session := podmanTest.Podman([]string{"run", "-dt", "--cidfile", cidFile, ALPINE, "top"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
cid := session.OutputToStringArray()[0]
|
|
|
|
kill := podmanTest.Podman([]string{"kill", "--cidfile", cidFile})
|
|
kill.WaitWithDefaultTimeout()
|
|
Expect(kill).Should(ExitCleanly())
|
|
|
|
wait := podmanTest.Podman([]string{"wait", "--condition", "exited", cid})
|
|
wait.WaitWithDefaultTimeout()
|
|
Expect(wait).Should(ExitCleanly())
|
|
})
|
|
|
|
It("podman kill multiple --cidfile", func() {
|
|
cidFile1 := filepath.Join(tempdir, "cid1")
|
|
cidFile2 := filepath.Join(tempdir, "cid2")
|
|
|
|
session := podmanTest.Podman([]string{"run", "-dt", "--cidfile", cidFile1, ALPINE, "top"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
cid1 := session.OutputToStringArray()[0]
|
|
|
|
session2 := podmanTest.Podman([]string{"run", "-dt", "--cidfile", cidFile2, ALPINE, "top"})
|
|
session2.WaitWithDefaultTimeout()
|
|
Expect(session2).Should(ExitCleanly())
|
|
cid2 := session2.OutputToStringArray()[0]
|
|
|
|
kill := podmanTest.Podman([]string{"kill", "--cidfile", cidFile1, "--cidfile", cidFile2})
|
|
kill.WaitWithDefaultTimeout()
|
|
Expect(kill).Should(ExitCleanly())
|
|
|
|
wait := podmanTest.Podman([]string{"wait", "--condition", "exited", cid1})
|
|
wait.WaitWithDefaultTimeout()
|
|
Expect(wait).Should(ExitCleanly())
|
|
wait = podmanTest.Podman([]string{"wait", "--condition", "exited", cid2})
|
|
wait.WaitWithDefaultTimeout()
|
|
Expect(wait).Should(ExitCleanly())
|
|
})
|
|
|
|
It("podman kill --all", func() {
|
|
session := podmanTest.RunTopContainer("")
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1))
|
|
|
|
session = podmanTest.RunTopContainer("")
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(2))
|
|
|
|
session = podmanTest.Podman([]string{"kill", "--all"})
|
|
session.WaitWithDefaultTimeout()
|
|
Expect(session).Should(ExitCleanly())
|
|
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
|
|
})
|
|
})
|