github.com/AbhinandanKurakure/podman/v3@v3.4.10/test/e2e/pod_stop_test.go (about)

     1  package integration
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  
     7  	. "github.com/containers/podman/v3/test/utils"
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  	. "github.com/onsi/gomega/gexec"
    11  )
    12  
    13  var _ = Describe("Podman pod stop", func() {
    14  	var (
    15  		tempdir    string
    16  		err        error
    17  		podmanTest *PodmanTestIntegration
    18  	)
    19  
    20  	BeforeEach(func() {
    21  		tempdir, err = CreateTempDirInTempDir()
    22  		if err != nil {
    23  			os.Exit(1)
    24  		}
    25  		podmanTest = PodmanTestCreate(tempdir)
    26  		podmanTest.Setup()
    27  		podmanTest.SeedImages()
    28  	})
    29  
    30  	AfterEach(func() {
    31  		podmanTest.Cleanup()
    32  		f := CurrentGinkgoTestDescription()
    33  		processTestResult(f)
    34  
    35  	})
    36  
    37  	It("podman pod stop bogus pod", func() {
    38  		session := podmanTest.Podman([]string{"pod", "stop", "123"})
    39  		session.WaitWithDefaultTimeout()
    40  		Expect(session).Should(Exit(125))
    41  	})
    42  
    43  	It("podman pod stop --ignore bogus pod", func() {
    44  
    45  		session := podmanTest.Podman([]string{"pod", "stop", "--ignore", "123"})
    46  		session.WaitWithDefaultTimeout()
    47  		Expect(session).Should(Exit(0))
    48  	})
    49  
    50  	It("podman stop bogus pod and a running pod", func() {
    51  		_, ec, podid1 := podmanTest.CreatePod(nil)
    52  		Expect(ec).To(Equal(0))
    53  
    54  		session := podmanTest.RunTopContainerInPod("test1", podid1)
    55  		session.WaitWithDefaultTimeout()
    56  		Expect(session).Should(Exit(0))
    57  
    58  		session = podmanTest.Podman([]string{"pod", "stop", "bogus", "test1"})
    59  		session.WaitWithDefaultTimeout()
    60  		Expect(session).Should(Exit(125))
    61  	})
    62  
    63  	It("podman stop --ignore bogus pod and a running pod", func() {
    64  
    65  		_, ec, podid1 := podmanTest.CreatePod(nil)
    66  		Expect(ec).To(Equal(0))
    67  
    68  		session := podmanTest.RunTopContainerInPod("test1", podid1)
    69  		session.WaitWithDefaultTimeout()
    70  		Expect(session).Should(Exit(0))
    71  
    72  		session = podmanTest.Podman([]string{"pod", "stop", "--ignore", "bogus", "test1"})
    73  		session.WaitWithDefaultTimeout()
    74  		Expect(session).Should(Exit(0))
    75  
    76  		session = podmanTest.Podman([]string{"pod", "stop", "--ignore", "test1", "bogus"})
    77  		session.WaitWithDefaultTimeout()
    78  		Expect(session).Should(Exit(0))
    79  	})
    80  
    81  	It("podman pod stop single empty pod", func() {
    82  		_, ec, podid := podmanTest.CreatePod(nil)
    83  		Expect(ec).To(Equal(0))
    84  
    85  		session := podmanTest.Podman([]string{"pod", "stop", podid})
    86  		session.WaitWithDefaultTimeout()
    87  		Expect(session).Should(Exit(0))
    88  	})
    89  
    90  	It("podman pod stop single pod by name", func() {
    91  		_, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
    92  		Expect(ec).To(Equal(0))
    93  
    94  		session := podmanTest.RunTopContainerInPod("", "foobar99")
    95  		session.WaitWithDefaultTimeout()
    96  		Expect(session).Should(Exit(0))
    97  
    98  		session = podmanTest.Podman([]string{"pod", "stop", "foobar99"})
    99  		session.WaitWithDefaultTimeout()
   100  		Expect(session).Should(Exit(0))
   101  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
   102  	})
   103  
   104  	It("podman pod stop multiple pods", func() {
   105  		_, ec, podid1 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
   106  		Expect(ec).To(Equal(0))
   107  
   108  		session := podmanTest.RunTopContainerInPod("", "foobar99")
   109  		session.WaitWithDefaultTimeout()
   110  		Expect(session).Should(Exit(0))
   111  
   112  		_, ec2, podid2 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}})
   113  		Expect(ec2).To(Equal(0))
   114  
   115  		session = podmanTest.RunTopContainerInPod("", "foobar100")
   116  		session.WaitWithDefaultTimeout()
   117  		Expect(session).Should(Exit(0))
   118  
   119  		session = podmanTest.Podman([]string{"pod", "stop", podid1, podid2})
   120  		session.WaitWithDefaultTimeout()
   121  		Expect(session).Should(Exit(0))
   122  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
   123  	})
   124  
   125  	It("podman pod stop all pods", func() {
   126  		_, ec, _ := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
   127  		Expect(ec).To(Equal(0))
   128  
   129  		session := podmanTest.RunTopContainerInPod("", "foobar99")
   130  		session.WaitWithDefaultTimeout()
   131  		Expect(session).Should(Exit(0))
   132  
   133  		_, ec, _ = podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}})
   134  		Expect(ec).To(Equal(0))
   135  
   136  		session = podmanTest.RunTopContainerInPod("", "foobar100")
   137  		session.WaitWithDefaultTimeout()
   138  		Expect(session).Should(Exit(0))
   139  
   140  		session = podmanTest.Podman([]string{"pod", "stop", "--all"})
   141  		session.WaitWithDefaultTimeout()
   142  		Expect(session).Should(Exit(0))
   143  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
   144  	})
   145  
   146  	It("podman pod stop latest pod", func() {
   147  		_, ec, _ := 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(Exit(0))
   153  
   154  		_, ec, _ = podmanTest.CreatePod(map[string][]string{"--name": {"foobar100"}})
   155  		Expect(ec).To(Equal(0))
   156  
   157  		session = podmanTest.RunTopContainerInPod("", "foobar100")
   158  		session.WaitWithDefaultTimeout()
   159  		Expect(session).Should(Exit(0))
   160  
   161  		podid := "--latest"
   162  		if IsRemote() {
   163  			podid = "foobar100"
   164  		}
   165  		session = podmanTest.Podman([]string{"pod", "stop", podid})
   166  		session.WaitWithDefaultTimeout()
   167  		Expect(session).Should(Exit(0))
   168  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1))
   169  	})
   170  
   171  	It("podman pod stop multiple pods with bogus", func() {
   172  		_, ec, podid1 := podmanTest.CreatePod(map[string][]string{"--name": {"foobar99"}})
   173  		Expect(ec).To(Equal(0))
   174  
   175  		session := podmanTest.RunTopContainerInPod("", "foobar99")
   176  		session.WaitWithDefaultTimeout()
   177  		Expect(session).Should(Exit(0))
   178  
   179  		session = podmanTest.Podman([]string{"pod", "stop", podid1, "doesnotexist"})
   180  		session.WaitWithDefaultTimeout()
   181  		Expect(session).Should(Exit(125))
   182  	})
   183  
   184  	It("podman pod start/stop single pod via --pod-id-file", func() {
   185  		tmpDir, err := ioutil.TempDir("", "")
   186  		Expect(err).To(BeNil())
   187  		tmpFile := tmpDir + "podID"
   188  		defer os.RemoveAll(tmpDir)
   189  
   190  		podName := "rudolph"
   191  
   192  		// Create a pod with --pod-id-file.
   193  		session := podmanTest.Podman([]string{"pod", "create", "--name", podName, "--pod-id-file", tmpFile})
   194  		session.WaitWithDefaultTimeout()
   195  		Expect(session).Should(Exit(0))
   196  
   197  		// Create container inside the pod.
   198  		session = podmanTest.Podman([]string{"create", "--pod", podName, ALPINE, "top"})
   199  		session.WaitWithDefaultTimeout()
   200  		Expect(session).Should(Exit(0))
   201  
   202  		session = podmanTest.Podman([]string{"pod", "start", "--pod-id-file", tmpFile})
   203  		session.WaitWithDefaultTimeout()
   204  		Expect(session).Should(Exit(0))
   205  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(2)) // infra+top
   206  
   207  		session = podmanTest.Podman([]string{"pod", "stop", "--pod-id-file", tmpFile})
   208  		session.WaitWithDefaultTimeout()
   209  		Expect(session).Should(Exit(0))
   210  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
   211  	})
   212  
   213  	It("podman pod start/stop multiple pods via --pod-id-file", func() {
   214  		tmpDir, err := ioutil.TempDir("", "")
   215  		Expect(err).To(BeNil())
   216  		defer os.RemoveAll(tmpDir)
   217  
   218  		podIDFiles := []string{}
   219  		for _, i := range "0123456789" {
   220  			tmpFile := tmpDir + "cid" + string(i)
   221  			podName := "rudolph" + string(i)
   222  			// Create a pod with --pod-id-file.
   223  			session := podmanTest.Podman([]string{"pod", "create", "--name", podName, "--pod-id-file", tmpFile})
   224  			session.WaitWithDefaultTimeout()
   225  			Expect(session).Should(Exit(0))
   226  
   227  			// Create container inside the pod.
   228  			session = podmanTest.Podman([]string{"create", "--pod", podName, ALPINE, "top"})
   229  			session.WaitWithDefaultTimeout()
   230  			Expect(session).Should(Exit(0))
   231  
   232  			// Append the id files along with the command.
   233  			podIDFiles = append(podIDFiles, "--pod-id-file")
   234  			podIDFiles = append(podIDFiles, tmpFile)
   235  		}
   236  
   237  		cmd := []string{"pod", "start"}
   238  		cmd = append(cmd, podIDFiles...)
   239  		session := podmanTest.Podman(cmd)
   240  		session.WaitWithDefaultTimeout()
   241  		Expect(session).Should(Exit(0))
   242  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(20)) // 10*(infra+top)
   243  
   244  		cmd = []string{"pod", "stop"}
   245  		cmd = append(cmd, podIDFiles...)
   246  		session = podmanTest.Podman(cmd)
   247  		session.WaitWithDefaultTimeout()
   248  		Expect(session).Should(Exit(0))
   249  		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
   250  	})
   251  })