86 lines
1.6 KiB
Go
86 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)
|
||
|
}
|
||
|
}
|