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