...

Source file src/github.com/docker/go-connections/nat/sort_test.go

Documentation: github.com/docker/go-connections/nat

     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