mirror of
https://github.com/moby/moby.git
synced 2025-07-30 18:23:29 +03:00
Fix filter on expose and publish
- Add tests to ensure it's working - Rename variables for better clarification - Fix validation test - Remove wrong filter assertion based on publish filter - Change port on test Signed-off-by: Jaime Cepeda <jcepedavillamayor@gmail.com>
This commit is contained in:
committed by
Sebastiaan van Stijn
parent
c85b2e5c30
commit
f48b7d66f3
@ -551,23 +551,19 @@ func includeContainerInList(container *container.Snapshot, ctx *listContext) ite
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(ctx.publish) > 0 {
|
if len(ctx.expose) > 0 || len(ctx.publish) > 0 {
|
||||||
shouldSkip := true
|
var (
|
||||||
for port := range ctx.publish {
|
shouldSkip bool = true
|
||||||
if _, ok := container.PortBindings[port]; ok {
|
publishedPort nat.Port
|
||||||
|
exposedPort nat.Port
|
||||||
|
)
|
||||||
|
for _, port := range container.Ports {
|
||||||
|
publishedPort = nat.Port(fmt.Sprintf("%d/%s", port.PublicPort, port.Type))
|
||||||
|
exposedPort = nat.Port(fmt.Sprintf("%d/%s", port.PrivatePort, port.Type))
|
||||||
|
if ok := ctx.publish[publishedPort]; ok {
|
||||||
shouldSkip = false
|
shouldSkip = false
|
||||||
break
|
break
|
||||||
}
|
} else if ok := ctx.expose[exposedPort]; ok {
|
||||||
}
|
|
||||||
if shouldSkip {
|
|
||||||
return excludeContainer
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(ctx.expose) > 0 {
|
|
||||||
shouldSkip := true
|
|
||||||
for port := range ctx.expose {
|
|
||||||
if _, ok := container.ExposedPorts[port]; ok {
|
|
||||||
shouldSkip = false
|
shouldSkip = false
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -816,29 +816,44 @@ func (s *DockerSuite) TestPsListContainersFilterPorts(c *testing.T) {
|
|||||||
out, _ = dockerCmd(c, "run", "-d", "--expose=8080", "busybox", "top")
|
out, _ = dockerCmd(c, "run", "-d", "--expose=8080", "busybox", "top")
|
||||||
id2 := strings.TrimSpace(out)
|
id2 := strings.TrimSpace(out)
|
||||||
|
|
||||||
|
out, _ = dockerCmd(c, "run", "-d", "-p", "1090:90", "busybox", "top")
|
||||||
|
id3 := strings.TrimSpace(out)
|
||||||
|
|
||||||
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q")
|
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q")
|
||||||
assert.Assert(c, strings.Contains(strings.TrimSpace(out), id1))
|
assert.Assert(c, strings.Contains(strings.TrimSpace(out), id1))
|
||||||
assert.Assert(c, strings.Contains(strings.TrimSpace(out), id2))
|
assert.Assert(c, strings.Contains(strings.TrimSpace(out), id2))
|
||||||
|
assert.Assert(c, strings.Contains(strings.TrimSpace(out), id3))
|
||||||
|
|
||||||
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q", "--filter", "publish=80-8080/udp")
|
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q", "--filter", "publish=80-8080/udp")
|
||||||
assert.Assert(c, strings.TrimSpace(out) != id1)
|
assert.Assert(c, strings.TrimSpace(out) != id1)
|
||||||
assert.Assert(c, strings.TrimSpace(out) != id2)
|
assert.Assert(c, strings.TrimSpace(out) != id2)
|
||||||
|
assert.Assert(c, strings.TrimSpace(out) != id3)
|
||||||
|
|
||||||
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q", "--filter", "expose=8081")
|
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q", "--filter", "expose=8081")
|
||||||
assert.Assert(c, strings.TrimSpace(out) != id1)
|
assert.Assert(c, strings.TrimSpace(out) != id1)
|
||||||
assert.Assert(c, strings.TrimSpace(out) != id2)
|
assert.Assert(c, strings.TrimSpace(out) != id2)
|
||||||
|
assert.Assert(c, strings.TrimSpace(out) != id3)
|
||||||
|
|
||||||
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q", "--filter", "publish=80-81")
|
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q", "--filter", "publish=80-81")
|
||||||
assert.Equal(c, strings.TrimSpace(out), id1)
|
assert.Assert(c, strings.TrimSpace(out) != id1)
|
||||||
assert.Assert(c, strings.TrimSpace(out) != id2)
|
assert.Assert(c, strings.TrimSpace(out) != id2)
|
||||||
|
assert.Assert(c, strings.TrimSpace(out) != id3)
|
||||||
|
|
||||||
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q", "--filter", "expose=80/tcp")
|
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q", "--filter", "expose=80/tcp")
|
||||||
assert.Equal(c, strings.TrimSpace(out), id1)
|
assert.Equal(c, strings.TrimSpace(out), id1)
|
||||||
assert.Assert(c, strings.TrimSpace(out) != id2)
|
assert.Assert(c, strings.TrimSpace(out) != id2)
|
||||||
|
assert.Assert(c, strings.TrimSpace(out) != id3)
|
||||||
|
|
||||||
|
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q", "--filter", "publish=1090")
|
||||||
|
assert.Assert(c, strings.TrimSpace(out) != id1)
|
||||||
|
assert.Assert(c, strings.TrimSpace(out) != id2)
|
||||||
|
assert.Equal(c, strings.TrimSpace(out), id3)
|
||||||
|
|
||||||
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q", "--filter", "expose=8080/tcp")
|
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q", "--filter", "expose=8080/tcp")
|
||||||
out = RemoveOutputForExistingElements(out, existingContainers)
|
out = RemoveOutputForExistingElements(out, existingContainers)
|
||||||
assert.Assert(c, strings.TrimSpace(out) != id1)
|
assert.Assert(c, strings.TrimSpace(out) != id1)
|
||||||
assert.Equal(c, strings.TrimSpace(out), id2)
|
assert.Equal(c, strings.TrimSpace(out), id2)
|
||||||
|
assert.Assert(c, strings.TrimSpace(out) != id3)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *DockerSuite) TestPsNotShowLinknamesOfDeletedContainer(c *testing.T) {
|
func (s *DockerSuite) TestPsNotShowLinknamesOfDeletedContainer(c *testing.T) {
|
||||||
|
Reference in New Issue
Block a user