helper_test.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package clustercache
  2. import (
  3. "testing"
  4. v1 "k8s.io/api/core/v1"
  5. )
  6. func TestGetLoadBalancerIngressAddress(t *testing.T) {
  7. tests := []struct {
  8. name string
  9. service *Service
  10. expected []string
  11. }{
  12. {
  13. name: "no ingresses",
  14. service: &Service{},
  15. expected: nil,
  16. },
  17. {
  18. name: "single IP ingress",
  19. service: &Service{
  20. Status: v1.ServiceStatus{
  21. LoadBalancer: v1.LoadBalancerStatus{
  22. Ingress: []v1.LoadBalancerIngress{
  23. {IP: "1.2.3.4"},
  24. },
  25. },
  26. },
  27. },
  28. expected: []string{"1.2.3.4"},
  29. },
  30. {
  31. name: "single hostname ingress",
  32. service: &Service{
  33. Status: v1.ServiceStatus{
  34. LoadBalancer: v1.LoadBalancerStatus{
  35. Ingress: []v1.LoadBalancerIngress{
  36. {Hostname: "lb.example.com"},
  37. },
  38. },
  39. },
  40. },
  41. expected: []string{"lb.example.com"},
  42. },
  43. {
  44. name: "IP takes priority over hostname",
  45. service: &Service{
  46. Status: v1.ServiceStatus{
  47. LoadBalancer: v1.LoadBalancerStatus{
  48. Ingress: []v1.LoadBalancerIngress{
  49. {IP: "1.2.3.4", Hostname: "lb.example.com"},
  50. },
  51. },
  52. },
  53. },
  54. expected: []string{"1.2.3.4"},
  55. },
  56. {
  57. name: "multiple ingresses",
  58. service: &Service{
  59. Status: v1.ServiceStatus{
  60. LoadBalancer: v1.LoadBalancerStatus{
  61. Ingress: []v1.LoadBalancerIngress{
  62. {IP: "1.2.3.4"},
  63. {Hostname: "lb2.example.com"},
  64. {IP: "5.6.7.8"},
  65. },
  66. },
  67. },
  68. },
  69. expected: []string{"1.2.3.4", "lb2.example.com", "5.6.7.8"},
  70. },
  71. }
  72. for _, tt := range tests {
  73. t.Run(tt.name, func(t *testing.T) {
  74. got := GetLoadBalancerIngressAddress(tt.service)
  75. if len(got) != len(tt.expected) {
  76. t.Fatalf("got %v, want %v", got, tt.expected)
  77. }
  78. for i := range tt.expected {
  79. if got[i] != tt.expected[i] {
  80. t.Errorf("index %d: got %q, want %q", i, got[i], tt.expected[i])
  81. }
  82. }
  83. })
  84. }
  85. }