diff options
-rw-r--r-- | pkg/adapter/containers.go | 3 | ||||
-rw-r--r-- | test/e2e/stop_test.go | 78 |
2 files changed, 80 insertions, 1 deletions
diff --git a/pkg/adapter/containers.go b/pkg/adapter/containers.go index 5279f11b2..a5b911da1 100644 --- a/pkg/adapter/containers.go +++ b/pkg/adapter/containers.go @@ -92,6 +92,9 @@ func (r *LocalRuntime) StopContainers(ctx context.Context, cli *cliconfig.StopVa if errors.Cause(err) == libpod.ErrCtrStopped { logrus.Debugf("Container %s is already stopped", c.ID()) return nil + } else if cli.All && errors.Cause(err) == libpod.ErrCtrStateInvalid { + logrus.Debugf("Container %s is not running, could not stop", c.ID()) + return nil } logrus.Debugf("Failed to stop container %s: %s", c.ID(), err.Error()) } diff --git a/test/e2e/stop_test.go b/test/e2e/stop_test.go index 97c9287b9..717eea441 100644 --- a/test/e2e/stop_test.go +++ b/test/e2e/stop_test.go @@ -4,6 +4,7 @@ package integration import ( "os" + "strings" . "github.com/containers/libpod/test/utils" . "github.com/onsi/ginkgo" @@ -48,6 +49,11 @@ var _ = Describe("Podman stop", func() { session = podmanTest.Podman([]string{"stop", cid}) session.WaitWithDefaultTimeout() Expect(session.ExitCode()).To(Equal(0)) + + finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) + finalCtrs.WaitWithDefaultTimeout() + Expect(finalCtrs.ExitCode()).To(Equal(0)) + Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) }) It("podman stop container by name", func() { @@ -57,15 +63,25 @@ var _ = Describe("Podman stop", func() { session = podmanTest.Podman([]string{"stop", "test1"}) session.WaitWithDefaultTimeout() Expect(session.ExitCode()).To(Equal(0)) + + finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) + finalCtrs.WaitWithDefaultTimeout() + Expect(finalCtrs.ExitCode()).To(Equal(0)) + Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) }) - It("podman stop container by name", func() { + It("podman container stop by name", func() { session := podmanTest.RunTopContainer("test1") session.WaitWithDefaultTimeout() Expect(session.ExitCode()).To(Equal(0)) session = podmanTest.Podman([]string{"container", "stop", "test1"}) session.WaitWithDefaultTimeout() Expect(session.ExitCode()).To(Equal(0)) + + finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) + finalCtrs.WaitWithDefaultTimeout() + Expect(finalCtrs.ExitCode()).To(Equal(0)) + Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) }) It("podman stop stopped container", func() { @@ -80,6 +96,11 @@ var _ = Describe("Podman stop", func() { session3 := podmanTest.Podman([]string{"stop", "test1"}) session3.WaitWithDefaultTimeout() Expect(session3.ExitCode()).To(Equal(0)) + + finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) + finalCtrs.WaitWithDefaultTimeout() + Expect(finalCtrs.ExitCode()).To(Equal(0)) + Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) }) It("podman stop all containers -t", func() { @@ -105,6 +126,11 @@ var _ = Describe("Podman stop", func() { Expect(output).To(ContainSubstring(cid1)) Expect(output).To(ContainSubstring(cid2)) Expect(output).To(ContainSubstring(cid3)) + + finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) + finalCtrs.WaitWithDefaultTimeout() + Expect(finalCtrs.ExitCode()).To(Equal(0)) + Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) }) It("podman stop container --time", func() { @@ -118,6 +144,11 @@ var _ = Describe("Podman stop", func() { Expect(session.ExitCode()).To(Equal(0)) output := session.OutputToString() Expect(output).To(ContainSubstring(cid1)) + + finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) + finalCtrs.WaitWithDefaultTimeout() + Expect(finalCtrs.ExitCode()).To(Equal(0)) + Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) }) It("podman stop container --timeout", func() { @@ -131,6 +162,11 @@ var _ = Describe("Podman stop", func() { Expect(session.ExitCode()).To(Equal(0)) output := session.OutputToString() Expect(output).To(ContainSubstring(cid1)) + + finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) + finalCtrs.WaitWithDefaultTimeout() + Expect(finalCtrs.ExitCode()).To(Equal(0)) + Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) }) It("podman stop latest containers", func() { @@ -140,5 +176,45 @@ var _ = Describe("Podman stop", func() { session = podmanTest.Podman([]string{"stop", "-l", "-t", "1"}) session.WaitWithDefaultTimeout() Expect(session.ExitCode()).To(Equal(0)) + finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) + finalCtrs.WaitWithDefaultTimeout() + Expect(finalCtrs.ExitCode()).To(Equal(0)) + Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) }) + + It("podman stop all containers with one stopped", func() { + session := podmanTest.RunTopContainer("test1") + session.WaitWithDefaultTimeout() + Expect(session.ExitCode()).To(Equal(0)) + session2 := podmanTest.RunTopContainer("test2") + session2.WaitWithDefaultTimeout() + Expect(session2.ExitCode()).To(Equal(0)) + session3 := podmanTest.Podman([]string{"stop", "-l", "-t", "1"}) + session3.WaitWithDefaultTimeout() + Expect(session3.ExitCode()).To(Equal(0)) + session4 := podmanTest.Podman([]string{"stop", "-a", "-t", "1"}) + session4.WaitWithDefaultTimeout() + Expect(session4.ExitCode()).To(Equal(0)) + finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) + finalCtrs.WaitWithDefaultTimeout() + Expect(finalCtrs.ExitCode()).To(Equal(0)) + Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) + }) + + It("podman stop all containers with one created", func() { + session := podmanTest.RunTopContainer("test1") + session.WaitWithDefaultTimeout() + Expect(session.ExitCode()).To(Equal(0)) + session2 := podmanTest.Podman([]string{"create", ALPINE, "/bin/sh"}) + session2.WaitWithDefaultTimeout() + Expect(session2.ExitCode()).To(Equal(0)) + session3 := podmanTest.Podman([]string{"stop", "-a", "-t", "1"}) + session3.WaitWithDefaultTimeout() + Expect(session3.ExitCode()).To(Equal(0)) + finalCtrs := podmanTest.Podman([]string{"ps", "-q"}) + finalCtrs.WaitWithDefaultTimeout() + Expect(finalCtrs.ExitCode()).To(Equal(0)) + Expect(strings.TrimSpace(finalCtrs.OutputToString())).To(Equal("")) + }) + }) |