github.com/hanks177/podman/v4@v4.1.3-0.20220613032544-16d90015bc83/test/e2e/attach_test.go (about) 1 package integration 2 3 import ( 4 "syscall" 5 "time" 6 7 . "github.com/hanks177/podman/v4/test/utils" 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 . "github.com/onsi/gomega/gexec" 11 ) 12 13 var _ = Describe("Podman attach", func() { 14 var ( 15 tempdir string 16 err error 17 podmanTest *PodmanTestIntegration 18 ) 19 20 BeforeEach(func() { 21 tempdir, err = CreateTempDirInTempDir() 22 Expect(err).To(BeNil()) 23 podmanTest = PodmanTestCreate(tempdir) 24 podmanTest.Setup() 25 }) 26 27 AfterEach(func() { 28 podmanTest.Cleanup() 29 f := CurrentGinkgoTestDescription() 30 processTestResult(f) 31 }) 32 33 It("podman attach to bogus container", func() { 34 session := podmanTest.Podman([]string{"attach", "foobar"}) 35 session.WaitWithDefaultTimeout() 36 Expect(session).Should(Exit(125)) 37 }) 38 39 It("podman attach to non-running container", func() { 40 session := podmanTest.Podman([]string{"create", "--name", "test1", "-i", ALPINE, "ls"}) 41 session.WaitWithDefaultTimeout() 42 Expect(session).Should(Exit(0)) 43 44 results := podmanTest.Podman([]string{"attach", "test1"}) 45 results.WaitWithDefaultTimeout() 46 Expect(results).Should(Exit(125)) 47 }) 48 49 It("podman container attach to non-running container", func() { 50 session := podmanTest.Podman([]string{"container", "create", "--name", "test1", "-i", ALPINE, "ls"}) 51 52 session.WaitWithDefaultTimeout() 53 Expect(session).Should(Exit(0)) 54 55 results := podmanTest.Podman([]string{"container", "attach", "test1"}) 56 results.WaitWithDefaultTimeout() 57 Expect(results).Should(Exit(125)) 58 }) 59 60 It("podman attach to multiple containers", func() { 61 session := podmanTest.RunTopContainer("test1") 62 session.WaitWithDefaultTimeout() 63 Expect(session).Should(Exit(0)) 64 65 session = podmanTest.RunTopContainer("test2") 66 session.WaitWithDefaultTimeout() 67 Expect(session).Should(Exit(0)) 68 69 results := podmanTest.Podman([]string{"attach", "test1", "test2"}) 70 results.WaitWithDefaultTimeout() 71 Expect(results).Should(Exit(125)) 72 }) 73 74 It("podman attach to a running container", func() { 75 session := podmanTest.Podman([]string{"run", "-d", "--name", "test", ALPINE, "/bin/sh", "-c", "while true; do echo test; sleep 1; done"}) 76 session.WaitWithDefaultTimeout() 77 Expect(session).Should(Exit(0)) 78 79 results := podmanTest.Podman([]string{"attach", "test"}) 80 time.Sleep(2 * time.Second) 81 results.Signal(syscall.SIGTSTP) 82 Expect(results.OutputToString()).To(ContainSubstring("test")) 83 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1)) 84 }) 85 It("podman attach to the latest container", func() { 86 session := podmanTest.Podman([]string{"run", "-d", "--name", "test1", ALPINE, "/bin/sh", "-c", "while true; do echo test1; sleep 1; done"}) 87 session.WaitWithDefaultTimeout() 88 Expect(session).Should(Exit(0)) 89 90 session = podmanTest.Podman([]string{"run", "-d", "--name", "test2", ALPINE, "/bin/sh", "-c", "while true; do echo test2; sleep 1; done"}) 91 session.WaitWithDefaultTimeout() 92 Expect(session).Should(Exit(0)) 93 94 cid := "-l" 95 if IsRemote() { 96 cid = "test2" 97 } 98 results := podmanTest.Podman([]string{"attach", cid}) 99 time.Sleep(2 * time.Second) 100 results.Signal(syscall.SIGTSTP) 101 Expect(results.OutputToString()).To(ContainSubstring("test2")) 102 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(2)) 103 }) 104 105 It("podman attach to a container with --sig-proxy set to false", func() { 106 session := podmanTest.Podman([]string{"run", "-d", "--name", "test", ALPINE, "/bin/sh", "-c", "while true; do echo test; sleep 1; done"}) 107 session.WaitWithDefaultTimeout() 108 Expect(session).Should(Exit(0)) 109 110 results := podmanTest.Podman([]string{"attach", "--sig-proxy=false", "test"}) 111 time.Sleep(2 * time.Second) 112 results.Signal(syscall.SIGTERM) 113 results.WaitWithDefaultTimeout() 114 Expect(results.OutputToString()).To(ContainSubstring("test")) 115 Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1)) 116 }) 117 })