...
1 package nat
2
3 import (
4 "fmt"
5 "reflect"
6 "testing"
7 )
8
9 func TestSortUniquePorts(t *testing.T) {
10 ports := []Port{
11 Port("6379/tcp"),
12 Port("22/tcp"),
13 }
14
15 Sort(ports, func(ip, jp Port) bool {
16 return ip.Int() < jp.Int() || (ip.Int() == jp.Int() && ip.Proto() == "tcp")
17 })
18
19 first := ports[0]
20 if fmt.Sprint(first) != "22/tcp" {
21 t.Log(fmt.Sprint(first))
22 t.Fail()
23 }
24 }
25
26 func TestSortSamePortWithDifferentProto(t *testing.T) {
27 ports := []Port{
28 Port("8888/tcp"),
29 Port("8888/udp"),
30 Port("6379/tcp"),
31 Port("6379/udp"),
32 }
33
34 Sort(ports, func(ip, jp Port) bool {
35 return ip.Int() < jp.Int() || (ip.Int() == jp.Int() && ip.Proto() == "tcp")
36 })
37
38 first := ports[0]
39 if fmt.Sprint(first) != "6379/tcp" {
40 t.Fail()
41 }
42 }
43
44 func TestSortPortMap(t *testing.T) {
45 ports := []Port{
46 Port("22/tcp"),
47 Port("22/udp"),
48 Port("8000/tcp"),
49 Port("8443/tcp"),
50 Port("6379/tcp"),
51 Port("9999/tcp"),
52 }
53
54 portMap := PortMap{
55 Port("22/tcp"): []PortBinding{
56 {},
57 },
58 Port("8000/tcp"): []PortBinding{
59 {},
60 },
61 Port("8443/tcp"): []PortBinding{},
62 Port("6379/tcp"): []PortBinding{
63 {},
64 {HostIP: "0.0.0.0", HostPort: "32749"},
65 },
66 Port("9999/tcp"): []PortBinding{
67 {HostIP: "0.0.0.0", HostPort: "40000"},
68 },
69 }
70
71 SortPortMap(ports, portMap)
72 if !reflect.DeepEqual(ports, []Port{
73 "9999/tcp",
74 "6379/tcp",
75 "8443/tcp",
76 "8000/tcp",
77 "22/tcp",
78 "22/udp",
79 }) {
80 t.Errorf("failed to prioritize port with explicit mappings, got %v", ports)
81 }
82 if pm := portMap[Port("6379/tcp")]; !reflect.DeepEqual(pm, []PortBinding{
83 {HostIP: "0.0.0.0", HostPort: "32749"},
84 {},
85 }) {
86 t.Errorf("failed to prioritize bindings with explicit mappings, got %v", pm)
87 }
88 }
89
View as plain text