github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/start_test.go (about) 1 package integration 2 3 import ( 4 "os" 5 6 . "github.com/containers/podman/v2/test/utils" 7 . "github.com/onsi/ginkgo" 8 . "github.com/onsi/gomega" 9 . "github.com/onsi/gomega/gexec" 10 ) 11 12 var _ = Describe("Podman start", func() { 13 var ( 14 tempdir string 15 err error 16 podmanTest *PodmanTestIntegration 17 ) 18 19 BeforeEach(func() { 20 tempdir, err = CreateTempDirInTempDir() 21 if err != nil { 22 os.Exit(1) 23 } 24 podmanTest = PodmanTestCreate(tempdir) 25 podmanTest.Setup() 26 podmanTest.SeedImages() 27 }) 28 29 AfterEach(func() { 30 podmanTest.Cleanup() 31 f := CurrentGinkgoTestDescription() 32 processTestResult(f) 33 34 }) 35 36 It("podman start bogus container", func() { 37 session := podmanTest.Podman([]string{"start", "123"}) 38 session.WaitWithDefaultTimeout() 39 Expect(session.ExitCode()).To(Equal(125)) 40 }) 41 42 It("podman start single container by id", func() { 43 session := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 44 session.WaitWithDefaultTimeout() 45 Expect(session.ExitCode()).To(Equal(0)) 46 cid := session.OutputToString() 47 session = podmanTest.Podman([]string{"start", cid}) 48 session.WaitWithDefaultTimeout() 49 Expect(session.ExitCode()).To(Equal(0)) 50 }) 51 52 It("podman container start single container by id", func() { 53 session := podmanTest.Podman([]string{"container", "create", ALPINE, "ls"}) 54 session.WaitWithDefaultTimeout() 55 Expect(session.ExitCode()).To(Equal(0)) 56 cid := session.OutputToString() 57 session = podmanTest.Podman([]string{"container", "start", cid}) 58 session.WaitWithDefaultTimeout() 59 Expect(session.ExitCode()).To(Equal(0)) 60 Expect(session.OutputToString()).To(Equal(cid)) 61 }) 62 63 It("podman container start single container by short id", func() { 64 session := podmanTest.Podman([]string{"container", "create", ALPINE, "ls"}) 65 session.WaitWithDefaultTimeout() 66 Expect(session.ExitCode()).To(Equal(0)) 67 cid := session.OutputToString() 68 shortID := cid[0:10] 69 session = podmanTest.Podman([]string{"container", "start", shortID}) 70 session.WaitWithDefaultTimeout() 71 Expect(session.ExitCode()).To(Equal(0)) 72 Expect(session.OutputToString()).To(Equal(shortID)) 73 }) 74 75 It("podman start single container by name", func() { 76 name := "foobar99" 77 session := podmanTest.Podman([]string{"create", "--name", name, ALPINE, "ls"}) 78 session.WaitWithDefaultTimeout() 79 Expect(session.ExitCode()).To(Equal(0)) 80 session = podmanTest.Podman([]string{"start", name}) 81 session.WaitWithDefaultTimeout() 82 Expect(session.ExitCode()).To(Equal(0)) 83 if podmanTest.RemoteTest { 84 Skip("Container-start name check doesn't work on remote client. It always returns the full ID.") 85 } 86 Expect(session.OutputToString()).To(Equal(name)) 87 }) 88 89 It("podman start single container with attach and test the signal", func() { 90 session := podmanTest.Podman([]string{"create", "--entrypoint", "sh", ALPINE, "-c", "exit 1"}) 91 session.WaitWithDefaultTimeout() 92 Expect(session.ExitCode()).To(Equal(0)) 93 cid := session.OutputToString() 94 session = podmanTest.Podman([]string{"start", "--attach", cid}) 95 session.WaitWithDefaultTimeout() 96 // It should forward the signal 97 Expect(session.ExitCode()).To(Equal(1)) 98 }) 99 100 It("podman start multiple containers", func() { 101 session := podmanTest.Podman([]string{"create", "--name", "foobar99", ALPINE, "ls"}) 102 session.WaitWithDefaultTimeout() 103 cid1 := session.OutputToString() 104 session2 := podmanTest.Podman([]string{"create", "--name", "foobar100", ALPINE, "ls"}) 105 session2.WaitWithDefaultTimeout() 106 cid2 := session2.OutputToString() 107 session = podmanTest.Podman([]string{"start", cid1, cid2}) 108 session.WaitWithDefaultTimeout() 109 Expect(session.ExitCode()).To(Equal(0)) 110 }) 111 112 It("podman start multiple containers with bogus", func() { 113 session := podmanTest.Podman([]string{"create", "--name", "foobar99", ALPINE, "ls"}) 114 session.WaitWithDefaultTimeout() 115 cid1 := session.OutputToString() 116 session = podmanTest.Podman([]string{"start", cid1, "doesnotexist"}) 117 session.WaitWithDefaultTimeout() 118 Expect(session.ExitCode()).To(Equal(125)) 119 }) 120 121 It("podman multiple containers -- attach should fail", func() { 122 session := podmanTest.Podman([]string{"create", "--name", "foobar1", ALPINE, "ls"}) 123 session.WaitWithDefaultTimeout() 124 Expect(session.ExitCode()).To(Equal(0)) 125 session = podmanTest.Podman([]string{"create", "--name", "foobar2", ALPINE, "ls"}) 126 session.WaitWithDefaultTimeout() 127 Expect(session.ExitCode()).To(Equal(0)) 128 session = podmanTest.Podman([]string{"start", "-a", "foobar1", "foobar2"}) 129 session.WaitWithDefaultTimeout() 130 Expect(session.ExitCode()).To(Equal(125)) 131 }) 132 133 It("podman failed to start with --rm should delete the container", func() { 134 session := podmanTest.Podman([]string{"create", "--name", "test1", "-it", "--rm", ALPINE, "foo"}) 135 session.WaitWithDefaultTimeout() 136 Expect(session.ExitCode()).To(Equal(0)) 137 138 start := podmanTest.Podman([]string{"start", "test1"}) 139 start.WaitWithDefaultTimeout() 140 141 wait := podmanTest.Podman([]string{"wait", "test1"}) 142 wait.WaitWithDefaultTimeout() 143 Expect(wait).To(ExitWithError()) 144 145 Eventually(podmanTest.NumberOfContainers(), defaultWaitTimeout, 3.0).Should(BeZero()) 146 }) 147 148 It("podman failed to start without --rm should NOT delete the container", func() { 149 session := podmanTest.Podman([]string{"create", "-it", ALPINE, "foo"}) 150 session.WaitWithDefaultTimeout() 151 Expect(session).Should(Exit(0)) 152 153 start := podmanTest.Podman([]string{"start", session.OutputToString()}) 154 start.WaitWithDefaultTimeout() 155 Expect(start).To(ExitWithError()) 156 157 Eventually(podmanTest.NumberOfContainers(), defaultWaitTimeout, 3.0).Should(Equal(1)) 158 }) 159 160 It("podman start --sig-proxy should not work without --attach", func() { 161 session := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 162 session.WaitWithDefaultTimeout() 163 Expect(session).Should(Exit(0)) 164 165 session = podmanTest.Podman([]string{"start", "-l", "--sig-proxy"}) 166 session.WaitWithDefaultTimeout() 167 Expect(session).Should(Exit(125)) 168 }) 169 })