github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/restart_test.go (about) 1 package integration 2 3 import ( 4 "os" 5 "time" 6 7 . "github.com/containers/podman/v2/test/utils" 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 ) 11 12 var _ = Describe("Podman restart", 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 restart 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 restart stopped container by name", func() { 43 _, exitCode, _ := podmanTest.RunLsContainer("test1") 44 Expect(exitCode).To(Equal(0)) 45 startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1"}) 46 startTime.WaitWithDefaultTimeout() 47 48 session := podmanTest.Podman([]string{"restart", "test1"}) 49 session.WaitWithDefaultTimeout() 50 Expect(session.ExitCode()).To(Equal(0)) 51 restartTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1"}) 52 restartTime.WaitWithDefaultTimeout() 53 Expect(restartTime.OutputToString()).To(Not(Equal(startTime.OutputToString()))) 54 }) 55 56 It("Podman restart stopped container by ID", func() { 57 session := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 58 session.WaitWithDefaultTimeout() 59 Expect(session.ExitCode()).To(Equal(0)) 60 cid := session.OutputToString() 61 startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", cid}) 62 startTime.WaitWithDefaultTimeout() 63 64 startSession := podmanTest.Podman([]string{"start", cid}) 65 startSession.WaitWithDefaultTimeout() 66 Expect(startSession.ExitCode()).To(Equal(0)) 67 68 session2 := podmanTest.Podman([]string{"restart", cid}) 69 session2.WaitWithDefaultTimeout() 70 Expect(session2.ExitCode()).To(Equal(0)) 71 restartTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", cid}) 72 restartTime.WaitWithDefaultTimeout() 73 Expect(restartTime.OutputToString()).To(Not(Equal(startTime.OutputToString()))) 74 }) 75 76 It("Podman restart running container", func() { 77 _ = podmanTest.RunTopContainer("test1") 78 ok := WaitForContainer(podmanTest) 79 Expect(ok).To(BeTrue()) 80 startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1"}) 81 startTime.WaitWithDefaultTimeout() 82 83 session := podmanTest.Podman([]string{"restart", "test1"}) 84 session.WaitWithDefaultTimeout() 85 Expect(session.ExitCode()).To(Equal(0)) 86 restartTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1"}) 87 restartTime.WaitWithDefaultTimeout() 88 Expect(restartTime.OutputToString()).To(Not(Equal(startTime.OutputToString()))) 89 }) 90 91 It("Podman container restart running container", func() { 92 _ = podmanTest.RunTopContainer("test1") 93 ok := WaitForContainer(podmanTest) 94 Expect(ok).To(BeTrue()) 95 startTime := podmanTest.Podman([]string{"container", "inspect", "--format='{{.State.StartedAt}}'", "test1"}) 96 startTime.WaitWithDefaultTimeout() 97 98 session := podmanTest.Podman([]string{"container", "restart", "test1"}) 99 session.WaitWithDefaultTimeout() 100 Expect(session.ExitCode()).To(Equal(0)) 101 restartTime := podmanTest.Podman([]string{"container", "inspect", "--format='{{.State.StartedAt}}'", "test1"}) 102 restartTime.WaitWithDefaultTimeout() 103 Expect(restartTime.OutputToString()).To(Not(Equal(startTime.OutputToString()))) 104 }) 105 106 It("Podman restart multiple containers", func() { 107 _, exitCode, _ := podmanTest.RunLsContainer("test1") 108 Expect(exitCode).To(Equal(0)) 109 110 _, exitCode, _ = podmanTest.RunLsContainer("test2") 111 Expect(exitCode).To(Equal(0)) 112 startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 113 startTime.WaitWithDefaultTimeout() 114 115 session := podmanTest.Podman([]string{"restart", "test1", "test2"}) 116 session.WaitWithDefaultTimeout() 117 Expect(session.ExitCode()).To(Equal(0)) 118 restartTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 119 restartTime.WaitWithDefaultTimeout() 120 Expect(restartTime.OutputToStringArray()[0]).To(Not(Equal(startTime.OutputToStringArray()[0]))) 121 Expect(restartTime.OutputToStringArray()[1]).To(Not(Equal(startTime.OutputToStringArray()[1]))) 122 }) 123 124 It("Podman restart the latest container", func() { 125 _, exitCode, _ := podmanTest.RunLsContainer("test1") 126 Expect(exitCode).To(Equal(0)) 127 128 _, exitCode, _ = podmanTest.RunLsContainer("test2") 129 Expect(exitCode).To(Equal(0)) 130 131 startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 132 startTime.WaitWithDefaultTimeout() 133 134 cid := "-l" 135 if IsRemote() { 136 cid = "test2" 137 } 138 session := podmanTest.Podman([]string{"restart", cid}) 139 session.WaitWithDefaultTimeout() 140 Expect(session.ExitCode()).To(Equal(0)) 141 restartTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 142 restartTime.WaitWithDefaultTimeout() 143 Expect(restartTime.OutputToStringArray()[0]).To(Equal(startTime.OutputToStringArray()[0])) 144 Expect(restartTime.OutputToStringArray()[1]).To(Not(Equal(startTime.OutputToStringArray()[1]))) 145 }) 146 147 It("Podman restart non-stop container with short timeout", func() { 148 session := podmanTest.Podman([]string{"run", "-d", "--name", "test1", "--env", "STOPSIGNAL=SIGKILL", ALPINE, "sleep", "999"}) 149 session.WaitWithDefaultTimeout() 150 Expect(session.ExitCode()).To(Equal(0)) 151 startTime := time.Now() 152 session = podmanTest.Podman([]string{"restart", "-t", "2", "test1"}) 153 session.WaitWithDefaultTimeout() 154 Expect(session.ExitCode()).To(Equal(0)) 155 timeSince := time.Since(startTime) 156 Expect(timeSince < 10*time.Second).To(BeTrue()) 157 Expect(timeSince > 2*time.Second).To(BeTrue()) 158 }) 159 160 It("Podman restart --all", func() { 161 _, exitCode, _ := podmanTest.RunLsContainer("test1") 162 Expect(exitCode).To(Equal(0)) 163 164 test2 := podmanTest.RunTopContainer("test2") 165 test2.WaitWithDefaultTimeout() 166 Expect(test2.ExitCode()).To(Equal(0)) 167 168 startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 169 startTime.WaitWithDefaultTimeout() 170 171 session := podmanTest.Podman([]string{"restart", "--all"}) 172 session.WaitWithDefaultTimeout() 173 Expect(session.ExitCode()).To(Equal(0)) 174 restartTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 175 restartTime.WaitWithDefaultTimeout() 176 Expect(restartTime.OutputToStringArray()[0]).To(Not(Equal(startTime.OutputToStringArray()[0]))) 177 Expect(restartTime.OutputToStringArray()[1]).To(Not(Equal(startTime.OutputToStringArray()[1]))) 178 }) 179 180 It("Podman restart --all --running", func() { 181 _, exitCode, _ := podmanTest.RunLsContainer("test1") 182 Expect(exitCode).To(Equal(0)) 183 184 test2 := podmanTest.RunTopContainer("test2") 185 test2.WaitWithDefaultTimeout() 186 Expect(test2.ExitCode()).To(Equal(0)) 187 188 startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 189 startTime.WaitWithDefaultTimeout() 190 191 session := podmanTest.Podman([]string{"restart", "-a", "--running"}) 192 session.WaitWithDefaultTimeout() 193 Expect(session.ExitCode()).To(Equal(0)) 194 restartTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 195 restartTime.WaitWithDefaultTimeout() 196 Expect(restartTime.OutputToStringArray()[0]).To(Equal(startTime.OutputToStringArray()[0])) 197 Expect(restartTime.OutputToStringArray()[1]).To(Not(Equal(startTime.OutputToStringArray()[1]))) 198 }) 199 })