github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/stop_test.go (about)

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