github.com/containers/podman/v4@v4.9.4/test/e2e/pod_stop_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 pod stop", func() {
    11  
    12  	It("podman pod stop bogus pod", func() {
    13  		session := podmanTest.Podman([]string{"pod", "stop", "123"})
    14  		session.WaitWithDefaultTimeout()
    15  		Expect(session).Should(Exit(125))
    16  	})
    17  
    18  	It("podman pod stop --ignore bogus pod", func() {
    19  
    20  		session := podmanTest.Podman([]string{"pod", "stop", "--ignore", "123"})
    21  		session.WaitWithDefaultTimeout()
    22  		Expect(session).Should(ExitCleanly())
    23  	})
    24  
    25  	It("podman stop bogus pod and a running pod", func() {
    26  		_, ec, podid1 := podmanTest.CreatePod(nil)
    27  		Expect(ec).To(Equal(0))
    28  
    29  		session := podmanTest.RunTopContainerInPod("test1", podid1)
    30  		session.WaitWithDefaultTimeout()
    31  		Expect(session).Should(ExitCleanly())
    32  
    33  		session = podmanTest.Podman([]string{"pod", "stop", "bogus", "test1"})
    34  		session.WaitWithDefaultTimeout()
    35  		Expect(session).Should(Exit(125))
    36  	})
    37  
    38  	It("podman stop --ignore bogus pod and a running pod", func() {
    39  
    40  		_, ec, podid1 := podmanTest.CreatePod(nil)
    41  		Expect(ec).To(Equal(0))
    42  
    43  		session := podmanTest.RunTopContainerInPod("test1", podid1)
    44  		session.WaitWithDefaultTimeout()
    45  		Expect(session).Should(ExitCleanly())
    46  
    47  		session = podmanTest.Podman([]string{"pod", "stop", "--ignore", "bogus", "test1"})
    48  		session.WaitWithDefaultTimeout()
    49  		Expect(session).Should(ExitCleanly())
    50  
    51  		session = podmanTest.Podman([]string{"pod", "stop", "-t", "-1", "--ignore", "test1", "bogus"})
    52  		session.WaitWithDefaultTimeout()
    53  		Expect(session).Should(ExitCleanly())
    54  	})
    55  
    56  	It("podman pod stop single empty pod", func() {
    57  		_, ec, podid := podmanTest.CreatePod(nil)
    58  		Expect(ec).To(Equal(0))
    59  
    60  		session := podmanTest.Podman([]string{"pod", "stop", podid})
    61  		session.WaitWithDefaultTimeout()
    62  		Expect(session).Should(ExitCleanly())
    63  	})
    64  
    65  	It("podman pod stop single pod by name", func() {
    66  		_, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
    67  		Expect(ec).To(Equal(0))
    68  
    69  		session := podmanTest.RunTopContainerInPod("", "foobar99")
    70  		session.WaitWithDefaultTimeout()
    71  		Expect(session).Should(ExitCleanly())
    72  
    73  		session = podmanTest.Podman([]string{"pod", "stop", "foobar99"})
    74  		session.WaitWithDefaultTimeout()
    75  		Expect(session).Should(ExitCleanly())
    76  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
    77  	})
    78  
    79  	It("podman pod stop multiple pods", func() {
    80  		_, ec, podid1 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
    81  		Expect(ec).To(Equal(0))
    82  
    83  		session := podmanTest.RunTopContainerInPod("", "foobar99")
    84  		session.WaitWithDefaultTimeout()
    85  		Expect(session).Should(ExitCleanly())
    86  
    87  		_, ec2, podid2 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}})
    88  		Expect(ec2).To(Equal(0))
    89  
    90  		session = podmanTest.RunTopContainerInPod("", "foobar100")
    91  		session.WaitWithDefaultTimeout()
    92  		Expect(session).Should(ExitCleanly())
    93  
    94  		session = podmanTest.Podman([]string{"pod", "stop", podid1, podid2})
    95  		session.WaitWithDefaultTimeout()
    96  		Expect(session).Should(ExitCleanly())
    97  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
    98  	})
    99  
   100  	It("podman pod stop all pods", func() {
   101  		_, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
   102  		Expect(ec).To(Equal(0))
   103  
   104  		session := podmanTest.RunTopContainerInPod("", "foobar99")
   105  		session.WaitWithDefaultTimeout()
   106  		Expect(session).Should(ExitCleanly())
   107  
   108  		_, ec, _ = podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}})
   109  		Expect(ec).To(Equal(0))
   110  
   111  		session = podmanTest.RunTopContainerInPod("", "foobar100")
   112  		session.WaitWithDefaultTimeout()
   113  		Expect(session).Should(ExitCleanly())
   114  
   115  		session = podmanTest.Podman([]string{"pod", "stop", "--all"})
   116  		session.WaitWithDefaultTimeout()
   117  		Expect(session).Should(ExitCleanly())
   118  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
   119  	})
   120  
   121  	It("podman pod stop latest pod", func() {
   122  		_, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
   123  		Expect(ec).To(Equal(0))
   124  
   125  		session := podmanTest.RunTopContainerInPod("", "foobar99")
   126  		session.WaitWithDefaultTimeout()
   127  		Expect(session).Should(ExitCleanly())
   128  
   129  		_, ec, _ = podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}})
   130  		Expect(ec).To(Equal(0))
   131  
   132  		session = podmanTest.RunTopContainerInPod("", "foobar100")
   133  		session.WaitWithDefaultTimeout()
   134  		Expect(session).Should(ExitCleanly())
   135  
   136  		podid := "--latest"
   137  		if IsRemote() {
   138  			podid = "foobar100"
   139  		}
   140  		session = podmanTest.Podman([]string{"pod", "stop", podid})
   141  		session.WaitWithDefaultTimeout()
   142  		Expect(session).Should(ExitCleanly())
   143  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1))
   144  	})
   145  
   146  	It("podman pod stop multiple pods with bogus", func() {
   147  		_, ec, podid1 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
   148  		Expect(ec).To(Equal(0))
   149  
   150  		session := podmanTest.RunTopContainerInPod("", "foobar99")
   151  		session.WaitWithDefaultTimeout()
   152  		Expect(session).Should(ExitCleanly())
   153  
   154  		session = podmanTest.Podman([]string{"pod", "stop", podid1, "doesnotexist"})
   155  		session.WaitWithDefaultTimeout()
   156  		Expect(session).Should(Exit(125))
   157  	})
   158  
   159  	It("podman pod start/stop single pod via --pod-id-file", func() {
   160  		tmpDir := GinkgoT().TempDir()
   161  		tmpFile := tmpDir + "podID"
   162  
   163  		podName := "rudolph"
   164  
   165  		// Create a pod with --pod-id-file.
   166  		session := podmanTest.Podman([]string{"pod", "create", "--name", podName, "--pod-id-file", tmpFile})
   167  		session.WaitWithDefaultTimeout()
   168  		Expect(session).Should(ExitCleanly())
   169  
   170  		// Create container inside the pod.
   171  		session = podmanTest.Podman([]string{"create", "--pod", podName, ALPINE, "top"})
   172  		session.WaitWithDefaultTimeout()
   173  		Expect(session).Should(ExitCleanly())
   174  
   175  		session = podmanTest.Podman([]string{"pod", "start", "--pod-id-file", tmpFile})
   176  		session.WaitWithDefaultTimeout()
   177  		Expect(session).Should(ExitCleanly())
   178  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(2)) // infra+top
   179  
   180  		session = podmanTest.Podman([]string{"pod", "stop", "--pod-id-file", tmpFile})
   181  		session.WaitWithDefaultTimeout()
   182  		Expect(session).Should(ExitCleanly())
   183  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
   184  	})
   185  
   186  	It("podman pod start/stop multiple pods via --pod-id-file", func() {
   187  		tmpDir := GinkgoT().TempDir()
   188  
   189  		podIDFiles := []string{}
   190  		for _, i := range "0123456789" {
   191  			tmpFile := tmpDir + "cid" + string(i)
   192  			podName := "rudolph" + string(i)
   193  			// Create a pod with --pod-id-file.
   194  			session := podmanTest.Podman([]string{"pod", "create", "--name", podName, "--pod-id-file", tmpFile})
   195  			session.WaitWithDefaultTimeout()
   196  			Expect(session).Should(ExitCleanly())
   197  
   198  			// Create container inside the pod.
   199  			session = podmanTest.Podman([]string{"create", "--pod", podName, ALPINE, "top"})
   200  			session.WaitWithDefaultTimeout()
   201  			Expect(session).Should(ExitCleanly())
   202  
   203  			// Append the id files along with the command.
   204  			podIDFiles = append(podIDFiles, "--pod-id-file")
   205  			podIDFiles = append(podIDFiles, tmpFile)
   206  		}
   207  
   208  		cmd := []string{"pod", "start"}
   209  		cmd = append(cmd, podIDFiles...)
   210  		session := podmanTest.Podman(cmd)
   211  		session.WaitWithDefaultTimeout()
   212  		Expect(session).Should(ExitCleanly())
   213  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(20)) // 10*(infra+top)
   214  
   215  		cmd = []string{"pod", "stop"}
   216  		cmd = append(cmd, podIDFiles...)
   217  		session = podmanTest.Podman(cmd)
   218  		session.WaitWithDefaultTimeout()
   219  		Expect(session).Should(ExitCleanly())
   220  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
   221  	})
   222  })