mirror of
https://github.com/containers/podman.git
synced 2025-08-06 19:44:14 +08:00

Followup to #22270: wherever possible/practical, extend command error checks to include explicit exit status codes and error strings. This commit handles all remaining test/e2e/p*_test.go Signed-off-by: Ed Santiago <santiago@redhat.com>
135 lines
4.1 KiB
Go
135 lines
4.1 KiB
Go
package integration
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
. "github.com/containers/podman/v5/test/utils"
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Podman port", func() {
|
|
|
|
It("podman port all and latest", func() {
|
|
result := podmanTest.Podman([]string{"port", "-a", "-l"})
|
|
result.WaitWithDefaultTimeout()
|
|
if IsRemote() {
|
|
Expect(result).To(ExitWithError(125, "unknown shorthand flag: 'l' in -l"))
|
|
} else {
|
|
Expect(result).To(ExitWithError(125, "--all and --latest cannot be used together"))
|
|
}
|
|
})
|
|
|
|
It("podman port all and extra", func() {
|
|
result := podmanTest.Podman([]string{"port", "-a", "foobar"})
|
|
result.WaitWithDefaultTimeout()
|
|
Expect(result).To(ExitWithError(125, "no arguments are needed with --all"))
|
|
})
|
|
|
|
It("podman port -l nginx", func() {
|
|
session, cid := podmanTest.RunNginxWithHealthCheck("test1")
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
if err := podmanTest.RunHealthCheck(cid); err != nil {
|
|
Fail(err.Error())
|
|
}
|
|
|
|
if !IsRemote() {
|
|
cid = "-l"
|
|
}
|
|
result := podmanTest.Podman([]string{"port", cid})
|
|
result.WaitWithDefaultTimeout()
|
|
Expect(result).Should(ExitCleanly())
|
|
port := strings.Split(result.OutputToStringArray()[0], ":")[1]
|
|
Expect(result.OutputToStringArray()).To(ContainElement(HavePrefix(fmt.Sprintf("80/tcp -> 0.0.0.0:%s", port))))
|
|
})
|
|
|
|
It("podman container port -l nginx", func() {
|
|
session, cid := podmanTest.RunNginxWithHealthCheck("")
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
if err := podmanTest.RunHealthCheck(cid); err != nil {
|
|
Fail(err.Error())
|
|
}
|
|
|
|
if !IsRemote() {
|
|
cid = "-l"
|
|
}
|
|
result := podmanTest.Podman([]string{"container", "port", cid})
|
|
result.WaitWithDefaultTimeout()
|
|
Expect(result).Should(ExitCleanly())
|
|
port := strings.Split(result.OutputToStringArray()[0], ":")[1]
|
|
Expect(result.OutputToStringArray()).To(ContainElement(HavePrefix(fmt.Sprintf("80/tcp -> 0.0.0.0:%s", port))))
|
|
})
|
|
|
|
It("podman port -l port nginx", func() {
|
|
session, cid := podmanTest.RunNginxWithHealthCheck("")
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
if err := podmanTest.RunHealthCheck(cid); err != nil {
|
|
Fail(err.Error())
|
|
}
|
|
|
|
if !IsRemote() {
|
|
cid = "-l"
|
|
}
|
|
result := podmanTest.Podman([]string{"port", cid, "80"})
|
|
result.WaitWithDefaultTimeout()
|
|
Expect(result).Should(ExitCleanly())
|
|
port := strings.Split(result.OutputToStringArray()[0], ":")[1]
|
|
Expect(result.OutputToStringArray()).To(ContainElement(HavePrefix(fmt.Sprintf("0.0.0.0:%s", port))))
|
|
})
|
|
|
|
It("podman port -a nginx", func() {
|
|
session, cid := podmanTest.RunNginxWithHealthCheck("")
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
if err := podmanTest.RunHealthCheck(cid); err != nil {
|
|
Fail(err.Error())
|
|
}
|
|
|
|
result := podmanTest.Podman([]string{"port", "-a"})
|
|
result.WaitWithDefaultTimeout()
|
|
Expect(result).Should(ExitCleanly())
|
|
})
|
|
|
|
It("podman port nginx by name", func() {
|
|
session, cid := podmanTest.RunNginxWithHealthCheck("portcheck")
|
|
Expect(session).Should(ExitCleanly())
|
|
|
|
if err := podmanTest.RunHealthCheck(cid); err != nil {
|
|
Fail(err.Error())
|
|
}
|
|
|
|
result := podmanTest.Podman([]string{"port", "portcheck"})
|
|
result.WaitWithDefaultTimeout()
|
|
Expect(result).Should(ExitCleanly())
|
|
Expect(result.OutputToStringArray()).To(ContainElement(HavePrefix("80/tcp -> 0.0.0.0:")))
|
|
})
|
|
|
|
It("podman port multiple ports", func() {
|
|
// Acquire and release locks
|
|
lock1 := GetPortLock("5010")
|
|
defer lock1.Unlock()
|
|
lock2 := GetPortLock("5011")
|
|
defer lock2.Unlock()
|
|
|
|
setup := podmanTest.Podman([]string{"run", "--name", "test", "-dt", "-p", "5010:5000", "-p", "5011:5001", ALPINE, "top"})
|
|
setup.WaitWithDefaultTimeout()
|
|
Expect(setup).Should(ExitCleanly())
|
|
|
|
// Check that the first port was honored
|
|
result1 := podmanTest.Podman([]string{"port", "test", "5000"})
|
|
result1.WaitWithDefaultTimeout()
|
|
Expect(result1).Should(ExitCleanly())
|
|
Expect(result1.OutputToStringArray()).To(ContainElement(HavePrefix("0.0.0.0:5010")))
|
|
|
|
// Check that the second port was honored
|
|
result2 := podmanTest.Podman([]string{"port", "test", "5001"})
|
|
result2.WaitWithDefaultTimeout()
|
|
Expect(result2).Should(ExitCleanly())
|
|
Expect(result2.OutputToStringArray()).To(ContainElement(HavePrefix("0.0.0.0:5011")))
|
|
})
|
|
})
|