From 4739fc2d98baf0ccfc46ae3ef770243bbdcea47a Mon Sep 17 00:00:00 2001 From: Matthew Heon Date: Tue, 13 Mar 2018 15:12:52 -0400 Subject: Add test. Move attach code in start back Signed-off-by: Matthew Heon Closes: #482 Approved by: baude --- cmd/podman/start.go | 20 ++++++++++---------- test/e2e/run_restart_test.go | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 10 deletions(-) create mode 100644 test/e2e/run_restart_test.go diff --git a/cmd/podman/start.go b/cmd/podman/start.go index 243fe71e2..5053abc07 100644 --- a/cmd/podman/start.go +++ b/cmd/podman/start.go @@ -104,18 +104,8 @@ func startCmd(c *cli.Context) error { if err != nil { return errors.Wrapf(err, "unable to parse annotations in %s", ctr.ID()) } - err = ctr.Start() - if err != nil { - if lastError != nil { - fmt.Fprintln(os.Stderr, lastError) - } - lastError = errors.Wrapf(err, "unable to start %s", container) - continue - } // We only get a terminal session if both a tty was specified in the spec and // -a on the command-line was given. - // Must be done after Start() because we might be restarting - // If so, the attach socket might be removed & recreated if attach && tty { // We increment the wg counter because we need to do the attach wg.Add(1) @@ -131,6 +121,14 @@ func startCmd(c *cli.Context) error { return errors.Errorf("unable to attach to container %s", ctr.ID()) } } + err = ctr.Start() + if err != nil { + if lastError != nil { + fmt.Fprintln(os.Stderr, lastError) + } + lastError = errors.Wrapf(err, "unable to start %s", container) + continue + } if !attach { fmt.Println(ctr.ID()) } @@ -147,6 +145,8 @@ func startCmd(c *cli.Context) error { // Otherwise the container is probably still running if attach && tty { lastError = ctr.Cleanup() + // No need for LastError as we can only have one ctr + // with attach } } return lastError diff --git a/test/e2e/run_restart_test.go b/test/e2e/run_restart_test.go new file mode 100644 index 000000000..8737cf4f8 --- /dev/null +++ b/test/e2e/run_restart_test.go @@ -0,0 +1,39 @@ +package integration + +import ( + "os" + + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" +) + +var _ = Describe("Podman run restart containers", func() { + var ( + tempdir string + err error + podmanTest PodmanTest + ) + + BeforeEach(func() { + tempdir, err = CreateTempDirInTempDir() + if err != nil { + os.Exit(1) + } + podmanTest = PodmanCreate(tempdir) + podmanTest.RestoreAllArtifacts() + }) + + AfterEach(func() { + podmanTest.Cleanup() + }) + + It("Podman start after successful run", func() { + session := podmanTest.Podman([]string{"run", ALPINE, "ls"}) + session.WaitWithDefaultTimeout() + Expect(session.ExitCode()).To(Equal(0)) + + session2 := podmanTest.Podman([]string{"start", "--attach", "--latest"}) + session2.WaitWithDefaultTimeout() + Expect(session2.ExitCode()).To(Equal(0)) + }) +}) -- cgit v1.2.3-54-g00ecf