github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/restart_test.go (about) 1 package integration 2 3 import ( 4 "os" 5 "time" 6 7 . "github.com/containers/libpod/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", "-d", 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 session := podmanTest.Podman([]string{"restart", "-l"}) 135 session.WaitWithDefaultTimeout() 136 Expect(session.ExitCode()).To(Equal(0)) 137 restartTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 138 restartTime.WaitWithDefaultTimeout() 139 Expect(restartTime.OutputToStringArray()[0]).To(Equal(startTime.OutputToStringArray()[0])) 140 Expect(restartTime.OutputToStringArray()[1]).To(Not(Equal(startTime.OutputToStringArray()[1]))) 141 }) 142 143 It("Podman restart non-stop container with short timeout", func() { 144 session := podmanTest.Podman([]string{"run", "-d", "--name", "test1", "--env", "STOPSIGNAL=SIGKILL", ALPINE, "sleep", "999"}) 145 session.WaitWithDefaultTimeout() 146 Expect(session.ExitCode()).To(Equal(0)) 147 startTime := time.Now() 148 session = podmanTest.Podman([]string{"restart", "-t", "2", "test1"}) 149 session.WaitWithDefaultTimeout() 150 Expect(session.ExitCode()).To(Equal(0)) 151 timeSince := time.Since(startTime) 152 Expect(timeSince < 10*time.Second).To(BeTrue()) 153 Expect(timeSince > 2*time.Second).To(BeTrue()) 154 }) 155 156 It("Podman restart --all", func() { 157 _, exitCode, _ := podmanTest.RunLsContainer("test1") 158 Expect(exitCode).To(Equal(0)) 159 160 test2 := podmanTest.RunTopContainer("test2") 161 test2.WaitWithDefaultTimeout() 162 Expect(test2.ExitCode()).To(Equal(0)) 163 164 startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 165 startTime.WaitWithDefaultTimeout() 166 167 session := podmanTest.Podman([]string{"restart", "--all"}) 168 session.WaitWithDefaultTimeout() 169 Expect(session.ExitCode()).To(Equal(0)) 170 restartTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 171 restartTime.WaitWithDefaultTimeout() 172 Expect(restartTime.OutputToStringArray()[0]).To(Not(Equal(startTime.OutputToStringArray()[0]))) 173 Expect(restartTime.OutputToStringArray()[1]).To(Not(Equal(startTime.OutputToStringArray()[1]))) 174 }) 175 176 It("Podman restart --all --running", func() { 177 _, exitCode, _ := podmanTest.RunLsContainer("test1") 178 Expect(exitCode).To(Equal(0)) 179 180 test2 := podmanTest.RunTopContainer("test2") 181 test2.WaitWithDefaultTimeout() 182 Expect(test2.ExitCode()).To(Equal(0)) 183 184 startTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 185 startTime.WaitWithDefaultTimeout() 186 187 session := podmanTest.Podman([]string{"restart", "-a", "--running"}) 188 session.WaitWithDefaultTimeout() 189 Expect(session.ExitCode()).To(Equal(0)) 190 restartTime := podmanTest.Podman([]string{"inspect", "--format='{{.State.StartedAt}}'", "test1", "test2"}) 191 restartTime.WaitWithDefaultTimeout() 192 Expect(restartTime.OutputToStringArray()[0]).To(Equal(startTime.OutputToStringArray()[0])) 193 Expect(restartTime.OutputToStringArray()[1]).To(Not(Equal(startTime.OutputToStringArray()[1]))) 194 }) 195 })