github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/port_test.go (about) 1 // +build !remoteclient 2 3 package integration 4 5 import ( 6 "fmt" 7 "os" 8 "strings" 9 10 . "github.com/containers/libpod/test/utils" 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 ) 14 15 var _ = Describe("Podman port", 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 port all and latest", func() { 40 result := podmanTest.Podman([]string{"port", "-a", "-l"}) 41 result.WaitWithDefaultTimeout() 42 Expect(result).To(ExitWithError()) 43 }) 44 45 It("podman port all and extra", func() { 46 result := podmanTest.Podman([]string{"port", "-a", "foobar"}) 47 result.WaitWithDefaultTimeout() 48 Expect(result).To(ExitWithError()) 49 }) 50 51 It("podman port -l nginx", func() { 52 session, cid := podmanTest.RunNginxWithHealthCheck("") 53 Expect(session.ExitCode()).To(Equal(0)) 54 55 if err := podmanTest.RunHealthCheck(cid); err != nil { 56 Fail(err.Error()) 57 } 58 59 result := podmanTest.Podman([]string{"port", "-l"}) 60 result.WaitWithDefaultTimeout() 61 Expect(result.ExitCode()).To(Equal(0)) 62 port := strings.Split(result.OutputToStringArray()[0], ":")[1] 63 Expect(result.LineInOuputStartsWith(fmt.Sprintf("80/tcp -> 0.0.0.0:%s", port))).To(BeTrue()) 64 }) 65 66 It("podman container port -l nginx", func() { 67 session, cid := podmanTest.RunNginxWithHealthCheck("") 68 Expect(session.ExitCode()).To(Equal(0)) 69 70 if err := podmanTest.RunHealthCheck(cid); err != nil { 71 Fail(err.Error()) 72 } 73 74 result := podmanTest.Podman([]string{"container", "port", "-l"}) 75 result.WaitWithDefaultTimeout() 76 Expect(result.ExitCode()).To(Equal(0)) 77 port := strings.Split(result.OutputToStringArray()[0], ":")[1] 78 Expect(result.LineInOuputStartsWith(fmt.Sprintf("80/tcp -> 0.0.0.0:%s", port))).To(BeTrue()) 79 }) 80 81 It("podman port -l port nginx", func() { 82 session, cid := podmanTest.RunNginxWithHealthCheck("") 83 Expect(session.ExitCode()).To(Equal(0)) 84 85 if err := podmanTest.RunHealthCheck(cid); err != nil { 86 Fail(err.Error()) 87 } 88 89 result := podmanTest.Podman([]string{"port", "-l", "80"}) 90 result.WaitWithDefaultTimeout() 91 Expect(result.ExitCode()).To(Equal(0)) 92 port := strings.Split(result.OutputToStringArray()[0], ":")[1] 93 Expect(result.LineInOuputStartsWith(fmt.Sprintf("0.0.0.0:%s", port))).To(BeTrue()) 94 }) 95 96 It("podman port -a nginx", func() { 97 session, cid := podmanTest.RunNginxWithHealthCheck("") 98 Expect(session.ExitCode()).To(Equal(0)) 99 100 if err := podmanTest.RunHealthCheck(cid); err != nil { 101 Fail(err.Error()) 102 } 103 104 result := podmanTest.Podman([]string{"port", "-a"}) 105 result.WaitWithDefaultTimeout() 106 Expect(result.ExitCode()).To(Equal(0)) 107 }) 108 109 It("podman port nginx by name", func() { 110 session, cid := podmanTest.RunNginxWithHealthCheck("portcheck") 111 Expect(session.ExitCode()).To(Equal(0)) 112 113 if err := podmanTest.RunHealthCheck(cid); err != nil { 114 Fail(err.Error()) 115 } 116 117 result := podmanTest.Podman([]string{"port", "portcheck"}) 118 result.WaitWithDefaultTimeout() 119 Expect(result.ExitCode()).To(Equal(0)) 120 result.LineInOuputStartsWith("80/tcp -> 0.0.0.0:") 121 }) 122 123 It("podman port multiple ports", func() { 124 // Acquire and release locks 125 lock1 := GetPortLock("5000") 126 defer lock1.Unlock() 127 lock2 := GetPortLock("5001") 128 defer lock2.Unlock() 129 130 setup := podmanTest.Podman([]string{"run", "-dt", "-p", "5000:5000", "-p", "5001:5001", ALPINE, "top"}) 131 setup.WaitWithDefaultTimeout() 132 Expect(setup.ExitCode()).To(BeZero()) 133 134 // Check that the first port was honored 135 result1 := podmanTest.Podman([]string{"port", "-l", "5000"}) 136 result1.WaitWithDefaultTimeout() 137 Expect(result1.ExitCode()).To(BeZero()) 138 Expect(result1.LineInOuputStartsWith("0.0.0.0:5000")).To(BeTrue()) 139 140 // Check that the second port was honored 141 result2 := podmanTest.Podman([]string{"port", "-l", "5001"}) 142 result2.WaitWithDefaultTimeout() 143 Expect(result2.ExitCode()).To(BeZero()) 144 Expect(result2.LineInOuputStartsWith("0.0.0.0:5001")).To(BeTrue()) 145 }) 146 })