github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/stop_test.go (about)

     1  package integration
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"strings"
     7  
     8  	. "github.com/containers/libpod/test/utils"
     9  	. "github.com/onsi/ginkgo"
    10  	. "github.com/onsi/gomega"
    11  )
    12  
    13  var _ = Describe("Podman 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 stop bogus container", func() {
    38  		session := podmanTest.Podman([]string{"stop", "foobar"})
    39  		session.WaitWithDefaultTimeout()
    40  		Expect(session.ExitCode()).To(Equal(125))
    41  	})
    42  
    43  	It("podman stop --ignore bogus container", func() {
    44  		SkipIfRemote()
    45  
    46  		session := podmanTest.RunTopContainer("")
    47  		session.WaitWithDefaultTimeout()
    48  		Expect(session.ExitCode()).To(Equal(0))
    49  		cid := session.OutputToString()
    50  
    51  		session = podmanTest.Podman([]string{"stop", "--ignore", "foobar", cid})
    52  		session.WaitWithDefaultTimeout()
    53  		Expect(session.ExitCode()).To(Equal(0))
    54  		output := session.OutputToString()
    55  		Expect(output).To(ContainSubstring(cid))
    56  	})
    57  
    58  	It("podman stop container by id", func() {
    59  		session := podmanTest.RunTopContainer("")
    60  		session.WaitWithDefaultTimeout()
    61  		Expect(session.ExitCode()).To(Equal(0))
    62  		cid := session.OutputToString()
    63  		session = podmanTest.Podman([]string{"stop", cid})
    64  		session.WaitWithDefaultTimeout()
    65  		Expect(session.ExitCode()).To(Equal(0))
    66  
    67  		finalCtrs := podmanTest.Podman([]string{"ps", "-q"})
    68  		finalCtrs.WaitWithDefaultTimeout()
    69  		Expect(finalCtrs.ExitCode()).To(Equal(0))
    70  		Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal(""))
    71  	})
    72  
    73  	It("podman stop container by name", func() {
    74  		session := podmanTest.RunTopContainer("test1")
    75  		session.WaitWithDefaultTimeout()
    76  		Expect(session.ExitCode()).To(Equal(0))
    77  		session = podmanTest.Podman([]string{"stop", "test1"})
    78  		session.WaitWithDefaultTimeout()
    79  		Expect(session.ExitCode()).To(Equal(0))
    80  
    81  		finalCtrs := podmanTest.Podman([]string{"ps", "-q"})
    82  		finalCtrs.WaitWithDefaultTimeout()
    83  		Expect(finalCtrs.ExitCode()).To(Equal(0))
    84  		Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal(""))
    85  	})
    86  
    87  	It("podman container stop by name", func() {
    88  		session := podmanTest.RunTopContainer("test1")
    89  		session.WaitWithDefaultTimeout()
    90  		Expect(session.ExitCode()).To(Equal(0))
    91  		session = podmanTest.Podman([]string{"container", "stop", "test1"})
    92  		session.WaitWithDefaultTimeout()
    93  		Expect(session.ExitCode()).To(Equal(0))
    94  
    95  		finalCtrs := podmanTest.Podman([]string{"ps", "-q"})
    96  		finalCtrs.WaitWithDefaultTimeout()
    97  		Expect(finalCtrs.ExitCode()).To(Equal(0))
    98  		Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal(""))
    99  	})
   100  
   101  	It("podman stop stopped container", func() {
   102  		session := podmanTest.RunTopContainer("test1")
   103  		session.WaitWithDefaultTimeout()
   104  		Expect(session.ExitCode()).To(Equal(0))
   105  
   106  		session2 := podmanTest.Podman([]string{"stop", "test1"})
   107  		session2.WaitWithDefaultTimeout()
   108  		Expect(session2.ExitCode()).To(Equal(0))
   109  
   110  		session3 := podmanTest.Podman([]string{"stop", "test1"})
   111  		session3.WaitWithDefaultTimeout()
   112  		Expect(session3.ExitCode()).To(Equal(0))
   113  
   114  		finalCtrs := podmanTest.Podman([]string{"ps", "-q"})
   115  		finalCtrs.WaitWithDefaultTimeout()
   116  		Expect(finalCtrs.ExitCode()).To(Equal(0))
   117  		Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal(""))
   118  	})
   119  
   120  	It("podman stop all containers -t", func() {
   121  		session := podmanTest.RunTopContainer("test1")
   122  		session.WaitWithDefaultTimeout()
   123  		Expect(session.ExitCode()).To(Equal(0))
   124  		cid1 := session.OutputToString()
   125  
   126  		session = podmanTest.RunTopContainer("test2")
   127  		session.WaitWithDefaultTimeout()
   128  		Expect(session.ExitCode()).To(Equal(0))
   129  		cid2 := session.OutputToString()
   130  
   131  		session = podmanTest.RunTopContainer("test3")
   132  		session.WaitWithDefaultTimeout()
   133  		Expect(session.ExitCode()).To(Equal(0))
   134  		cid3 := session.OutputToString()
   135  
   136  		session = podmanTest.Podman([]string{"stop", "-a", "-t", "1"})
   137  		session.WaitWithDefaultTimeout()
   138  		Expect(session.ExitCode()).To(Equal(0))
   139  		output := session.OutputToString()
   140  		Expect(output).To(ContainSubstring(cid1))
   141  		Expect(output).To(ContainSubstring(cid2))
   142  		Expect(output).To(ContainSubstring(cid3))
   143  
   144  		finalCtrs := podmanTest.Podman([]string{"ps", "-q"})
   145  		finalCtrs.WaitWithDefaultTimeout()
   146  		Expect(finalCtrs.ExitCode()).To(Equal(0))
   147  		Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal(""))
   148  	})
   149  
   150  	It("podman stop container --time", func() {
   151  		session := podmanTest.RunTopContainer("test4")
   152  		session.WaitWithDefaultTimeout()
   153  		Expect(session.ExitCode()).To(Equal(0))
   154  		cid1 := session.OutputToString()
   155  
   156  		session = podmanTest.Podman([]string{"stop", "--time", "1", "test4"})
   157  		session.WaitWithDefaultTimeout()
   158  		Expect(session.ExitCode()).To(Equal(0))
   159  		output := session.OutputToString()
   160  		Expect(output).To(ContainSubstring(cid1))
   161  
   162  		finalCtrs := podmanTest.Podman([]string{"ps", "-q"})
   163  		finalCtrs.WaitWithDefaultTimeout()
   164  		Expect(finalCtrs.ExitCode()).To(Equal(0))
   165  		Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal(""))
   166  	})
   167  
   168  	It("podman stop container --timeout", func() {
   169  		session := podmanTest.RunTopContainer("test5")
   170  		session.WaitWithDefaultTimeout()
   171  		Expect(session.ExitCode()).To(Equal(0))
   172  		cid1 := session.OutputToString()
   173  
   174  		session = podmanTest.Podman([]string{"stop", "--timeout", "1", "test5"})
   175  		session.WaitWithDefaultTimeout()
   176  		Expect(session.ExitCode()).To(Equal(0))
   177  		output := session.OutputToString()
   178  		Expect(output).To(ContainSubstring(cid1))
   179  
   180  		finalCtrs := podmanTest.Podman([]string{"ps", "-q"})
   181  		finalCtrs.WaitWithDefaultTimeout()
   182  		Expect(finalCtrs.ExitCode()).To(Equal(0))
   183  		Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal(""))
   184  	})
   185  
   186  	It("podman stop latest containers", func() {
   187  		session := podmanTest.RunTopContainer("test1")
   188  		session.WaitWithDefaultTimeout()
   189  		Expect(session.ExitCode()).To(Equal(0))
   190  		session = podmanTest.Podman([]string{"stop", "-l", "-t", "1"})
   191  		session.WaitWithDefaultTimeout()
   192  		Expect(session.ExitCode()).To(Equal(0))
   193  		finalCtrs := podmanTest.Podman([]string{"ps", "-q"})
   194  		finalCtrs.WaitWithDefaultTimeout()
   195  		Expect(finalCtrs.ExitCode()).To(Equal(0))
   196  		Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal(""))
   197  	})
   198  
   199  	It("podman stop all containers with one stopped", func() {
   200  		session := podmanTest.RunTopContainer("test1")
   201  		session.WaitWithDefaultTimeout()
   202  		Expect(session.ExitCode()).To(Equal(0))
   203  		session2 := podmanTest.RunTopContainer("test2")
   204  		session2.WaitWithDefaultTimeout()
   205  		Expect(session2.ExitCode()).To(Equal(0))
   206  		session3 := podmanTest.Podman([]string{"stop", "-l", "-t", "1"})
   207  		session3.WaitWithDefaultTimeout()
   208  		Expect(session3.ExitCode()).To(Equal(0))
   209  		session4 := podmanTest.Podman([]string{"stop", "-a", "-t", "1"})
   210  		session4.WaitWithDefaultTimeout()
   211  		Expect(session4.ExitCode()).To(Equal(0))
   212  		finalCtrs := podmanTest.Podman([]string{"ps", "-q"})
   213  		finalCtrs.WaitWithDefaultTimeout()
   214  		Expect(finalCtrs.ExitCode()).To(Equal(0))
   215  		Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal(""))
   216  	})
   217  
   218  	It("podman stop all containers with one created", func() {
   219  		session := podmanTest.RunTopContainer("test1")
   220  		session.WaitWithDefaultTimeout()
   221  		Expect(session.ExitCode()).To(Equal(0))
   222  		session2 := podmanTest.Podman([]string{"create", ALPINE, "/bin/sh"})
   223  		session2.WaitWithDefaultTimeout()
   224  		Expect(session2.ExitCode()).To(Equal(0))
   225  		session3 := podmanTest.Podman([]string{"stop", "-a", "-t", "1"})
   226  		session3.WaitWithDefaultTimeout()
   227  		Expect(session3.ExitCode()).To(Equal(0))
   228  		finalCtrs := podmanTest.Podman([]string{"ps", "-q"})
   229  		finalCtrs.WaitWithDefaultTimeout()
   230  		Expect(finalCtrs.ExitCode()).To(Equal(0))
   231  		Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal(""))
   232  	})
   233  
   234  	It("podman stop --cidfile", func() {
   235  		SkipIfRemote()
   236  
   237  		tmpDir, err := ioutil.TempDir("", "")
   238  		Expect(err).To(BeNil())
   239  		tmpFile := tmpDir + "cid"
   240  
   241  		defer os.RemoveAll(tmpDir)
   242  
   243  		session := podmanTest.Podman([]string{"create", "--cidfile", tmpFile, "-d", ALPINE, "top"})
   244  		session.WaitWithDefaultTimeout()
   245  		Expect(session.ExitCode()).To(Equal(0))
   246  		cid := session.OutputToStringArray()[0]
   247  
   248  		session = podmanTest.Podman([]string{"start", cid})
   249  		session.WaitWithDefaultTimeout()
   250  		Expect(session.ExitCode()).To(Equal(0))
   251  
   252  		result := podmanTest.Podman([]string{"stop", "--cidfile", tmpFile})
   253  		result.WaitWithDefaultTimeout()
   254  		Expect(result.ExitCode()).To(Equal(0))
   255  		output := result.OutputToString()
   256  		Expect(output).To(ContainSubstring(cid))
   257  	})
   258  
   259  	It("podman stop multiple --cidfile", func() {
   260  		SkipIfRemote()
   261  
   262  		tmpDir, err := ioutil.TempDir("", "")
   263  		Expect(err).To(BeNil())
   264  		tmpFile1 := tmpDir + "cid-1"
   265  		tmpFile2 := tmpDir + "cid-2"
   266  
   267  		defer os.RemoveAll(tmpDir)
   268  
   269  		session := podmanTest.Podman([]string{"run", "--cidfile", tmpFile1, "-d", ALPINE, "top"})
   270  		session.WaitWithDefaultTimeout()
   271  		Expect(session.ExitCode()).To(Equal(0))
   272  		cid1 := session.OutputToStringArray()[0]
   273  		Expect(podmanTest.NumberOfContainers()).To(Equal(1))
   274  
   275  		session = podmanTest.Podman([]string{"run", "--cidfile", tmpFile2, "-d", ALPINE, "top"})
   276  		session.WaitWithDefaultTimeout()
   277  		Expect(session.ExitCode()).To(Equal(0))
   278  		cid2 := session.OutputToStringArray()[0]
   279  		Expect(podmanTest.NumberOfContainers()).To(Equal(2))
   280  
   281  		result := podmanTest.Podman([]string{"stop", "--cidfile", tmpFile1, "--cidfile", tmpFile2})
   282  		result.WaitWithDefaultTimeout()
   283  		Expect(result.ExitCode()).To(Equal(0))
   284  		output := result.OutputToString()
   285  		Expect(output).To(ContainSubstring(cid1))
   286  		Expect(output).To(ContainSubstring(cid2))
   287  		Expect(podmanTest.NumberOfContainers()).To(Equal(2))
   288  	})
   289  
   290  	It("podman stop invalid --latest and --cidfile and --all", func() {
   291  		SkipIfRemote()
   292  
   293  		result := podmanTest.Podman([]string{"stop", "--cidfile", "foobar", "--latest"})
   294  		result.WaitWithDefaultTimeout()
   295  		Expect(result.ExitCode()).To(Equal(125))
   296  
   297  		result = podmanTest.Podman([]string{"stop", "--cidfile", "foobar", "--all"})
   298  		result.WaitWithDefaultTimeout()
   299  		Expect(result.ExitCode()).To(Equal(125))
   300  
   301  		result = podmanTest.Podman([]string{"stop", "--cidfile", "foobar", "--all", "--latest"})
   302  		result.WaitWithDefaultTimeout()
   303  		Expect(result.ExitCode()).To(Equal(125))
   304  
   305  		result = podmanTest.Podman([]string{"stop", "--latest", "--all"})
   306  		result.WaitWithDefaultTimeout()
   307  		Expect(result.ExitCode()).To(Equal(125))
   308  	})
   309  })