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