sort_test.go 1.6 KB

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