github.com/containers/podman/v4@v4.9.4/test/e2e/attach_test.go (about)

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