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  })