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