2014-02-11 19:48:44 -05:00
|
|
|
package nat
|
2013-11-14 01:08:08 -05:00
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
2015-04-08 01:31:47 -04:00
|
|
|
"reflect"
|
2013-11-14 01:08:08 -05:00
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestSortUniquePorts(t *testing.T) {
|
|
|
|
ports := []Port{
|
|
|
|
Port("6379/tcp"),
|
|
|
|
Port("22/tcp"),
|
|
|
|
}
|
|
|
|
|
2014-02-11 19:48:44 -05:00
|
|
|
Sort(ports, func(ip, jp Port) bool {
|
2013-11-14 01:08:08 -05:00
|
|
|
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"),
|
|
|
|
}
|
|
|
|
|
2014-02-11 19:48:44 -05:00
|
|
|
Sort(ports, func(ip, jp Port) bool {
|
2013-11-14 01:08:08 -05:00
|
|
|
return ip.Int() < jp.Int() || (ip.Int() == jp.Int() && ip.Proto() == "tcp")
|
|
|
|
})
|
|
|
|
|
|
|
|
first := ports[0]
|
|
|
|
if fmt.Sprint(first) != "6379/tcp" {
|
|
|
|
t.Fail()
|
|
|
|
}
|
|
|
|
}
|
2015-04-08 01:31:47 -04:00
|
|
|
|
|
|
|
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{
|
|
|
|
{},
|
2015-07-21 09:43:32 -04:00
|
|
|
{HostIP: "0.0.0.0", HostPort: "32749"},
|
2015-04-08 01:31:47 -04:00
|
|
|
},
|
|
|
|
Port("9999/tcp"): []PortBinding{
|
2015-07-21 09:43:32 -04:00
|
|
|
{HostIP: "0.0.0.0", HostPort: "40000"},
|
2015-04-08 01:31:47 -04:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
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{
|
2015-07-21 09:43:32 -04:00
|
|
|
{HostIP: "0.0.0.0", HostPort: "32749"},
|
2015-04-08 01:31:47 -04:00
|
|
|
{},
|
|
|
|
}) {
|
|
|
|
t.Errorf("failed to prioritize bindings with explicit mappings, got %v", pm)
|
|
|
|
}
|
|
|
|
}
|