f0771d5bbb
By convention /pkg is safe to use from outside the docker tree, for example if you're building a docker orchestrator. /nat currently doesn't have any dependencies outside of /pkg, so it seems reasonable to move it there. This rename was performed with: ``` gomvpkg -vcs_mv_cmd="git mv {{.Src}} {{.Dst}}" \ -from github.com/docker/docker/nat \ -to github.com/docker/docker/pkg/nat ``` Signed-off-by: Peter Waller <p@pwaller.net>
85 lines
1.6 KiB
Go
85 lines
1.6 KiB
Go
package nat
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestSortUniquePorts(t *testing.T) {
|
|
ports := []Port{
|
|
Port("6379/tcp"),
|
|
Port("22/tcp"),
|
|
}
|
|
|
|
Sort(ports, func(ip, jp Port) bool {
|
|
return ip.Int() < jp.Int() || (ip.Int() == jp.Int() && ip.Proto() == "tcp")
|
|
})
|
|
|
|
first := ports[0]
|
|
if fmt.Sprint(first) != "22/tcp" {
|
|
t.Log(fmt.Sprint(first))
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestSortSamePortWithDifferentProto(t *testing.T) {
|
|
ports := []Port{
|
|
Port("8888/tcp"),
|
|
Port("8888/udp"),
|
|
Port("6379/tcp"),
|
|
Port("6379/udp"),
|
|
}
|
|
|
|
Sort(ports, func(ip, jp Port) bool {
|
|
return ip.Int() < jp.Int() || (ip.Int() == jp.Int() && ip.Proto() == "tcp")
|
|
})
|
|
|
|
first := ports[0]
|
|
if fmt.Sprint(first) != "6379/tcp" {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestSortPortMap(t *testing.T) {
|
|
ports := []Port{
|
|
Port("22/tcp"),
|
|
Port("22/udp"),
|
|
Port("8000/tcp"),
|
|
Port("6379/tcp"),
|
|
Port("9999/tcp"),
|
|
}
|
|
|
|
portMap := PortMap{
|
|
Port("22/tcp"): []PortBinding{
|
|
{},
|
|
},
|
|
Port("8000/tcp"): []PortBinding{
|
|
{},
|
|
},
|
|
Port("6379/tcp"): []PortBinding{
|
|
{},
|
|
{HostIp: "0.0.0.0", HostPort: "32749"},
|
|
},
|
|
Port("9999/tcp"): []PortBinding{
|
|
{HostIp: "0.0.0.0", HostPort: "40000"},
|
|
},
|
|
}
|
|
|
|
SortPortMap(ports, portMap)
|
|
if !reflect.DeepEqual(ports, []Port{
|
|
Port("9999/tcp"),
|
|
Port("6379/tcp"),
|
|
Port("8000/tcp"),
|
|
Port("22/tcp"),
|
|
Port("22/udp"),
|
|
}) {
|
|
t.Errorf("failed to prioritize port with explicit mappings, got %v", ports)
|
|
}
|
|
if pm := portMap[Port("6379/tcp")]; !reflect.DeepEqual(pm, []PortBinding{
|
|
{HostIp: "0.0.0.0", HostPort: "32749"},
|
|
{},
|
|
}) {
|
|
t.Errorf("failed to prioritize bindings with explicit mappings, got %v", pm)
|
|
}
|
|
}
|