github.com/cilium/cilium@v1.16.2/pkg/k8s/watchers/utils/utils_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package utils 5 6 import ( 7 "testing" 8 9 cmtypes "github.com/cilium/cilium/pkg/clustermesh/types" 10 "github.com/cilium/cilium/pkg/loadbalancer" 11 ) 12 13 func TestDeepEqualBackends(t *testing.T) { 14 type args struct { 15 backends1, backends2 []*loadbalancer.Backend 16 } 17 testCases := []struct { 18 name string 19 args args 20 want bool 21 }{ 22 { 23 name: "backends not equal", 24 args: args{ 25 backends1: []*loadbalancer.Backend{ 26 { 27 L3n4Addr: loadbalancer.L3n4Addr{ 28 AddrCluster: cmtypes.MustParseAddrCluster("10.0.0.2"), 29 L4Addr: loadbalancer.L4Addr{ 30 Protocol: loadbalancer.TCP, 31 Port: 8081, 32 }, 33 }, 34 }, 35 { 36 L3n4Addr: loadbalancer.L3n4Addr{ 37 AddrCluster: cmtypes.MustParseAddrCluster("10.0.0.3"), 38 L4Addr: loadbalancer.L4Addr{ 39 Protocol: loadbalancer.TCP, 40 Port: 8081, 41 }, 42 }, 43 }, 44 }, 45 backends2: []*loadbalancer.Backend{ 46 { 47 L3n4Addr: loadbalancer.L3n4Addr{ 48 AddrCluster: cmtypes.MustParseAddrCluster("10.0.0.2"), 49 L4Addr: loadbalancer.L4Addr{ 50 Protocol: loadbalancer.TCP, 51 Port: 8081, 52 }, 53 }, 54 }, 55 { 56 L3n4Addr: loadbalancer.L3n4Addr{ 57 AddrCluster: cmtypes.MustParseAddrCluster("10.0.0.8"), 58 L4Addr: loadbalancer.L4Addr{ 59 Protocol: loadbalancer.TCP, 60 Port: 8081, 61 }, 62 }, 63 }, 64 }, 65 }, 66 want: false, 67 }, 68 { 69 name: "backend slice lengths not equal", 70 args: args{ 71 backends1: []*loadbalancer.Backend{ 72 { 73 L3n4Addr: loadbalancer.L3n4Addr{ 74 AddrCluster: cmtypes.MustParseAddrCluster("10.0.0.2"), 75 L4Addr: loadbalancer.L4Addr{ 76 Protocol: loadbalancer.TCP, 77 Port: 8081, 78 }, 79 }, 80 }, 81 { 82 L3n4Addr: loadbalancer.L3n4Addr{ 83 AddrCluster: cmtypes.MustParseAddrCluster("10.0.0.3"), 84 L4Addr: loadbalancer.L4Addr{ 85 Protocol: loadbalancer.TCP, 86 Port: 8081, 87 }, 88 }, 89 }, 90 }, 91 backends2: []*loadbalancer.Backend{ 92 { 93 L3n4Addr: loadbalancer.L3n4Addr{ 94 AddrCluster: cmtypes.MustParseAddrCluster("10.0.0.2"), 95 L4Addr: loadbalancer.L4Addr{ 96 Protocol: loadbalancer.TCP, 97 Port: 8081, 98 }, 99 }, 100 }, 101 }, 102 }, 103 want: false, 104 }, 105 { 106 name: "backends equal", 107 args: args{ 108 backends1: []*loadbalancer.Backend{ 109 { 110 L3n4Addr: loadbalancer.L3n4Addr{ 111 AddrCluster: cmtypes.MustParseAddrCluster("10.0.0.2"), 112 L4Addr: loadbalancer.L4Addr{ 113 Protocol: loadbalancer.TCP, 114 Port: 8081, 115 }, 116 }, 117 }, 118 { 119 L3n4Addr: loadbalancer.L3n4Addr{ 120 AddrCluster: cmtypes.MustParseAddrCluster("10.0.0.3"), 121 L4Addr: loadbalancer.L4Addr{ 122 Protocol: loadbalancer.TCP, 123 Port: 8081, 124 }, 125 }, 126 }, 127 }, 128 backends2: []*loadbalancer.Backend{ 129 { 130 L3n4Addr: loadbalancer.L3n4Addr{ 131 AddrCluster: cmtypes.MustParseAddrCluster("10.0.0.2"), 132 L4Addr: loadbalancer.L4Addr{ 133 Protocol: loadbalancer.TCP, 134 Port: 8081, 135 }, 136 }, 137 }, 138 { 139 L3n4Addr: loadbalancer.L3n4Addr{ 140 AddrCluster: cmtypes.MustParseAddrCluster("10.0.0.3"), 141 L4Addr: loadbalancer.L4Addr{ 142 Protocol: loadbalancer.TCP, 143 Port: 8081, 144 }, 145 }, 146 }, 147 }, 148 }, 149 want: true, 150 }, 151 } 152 for _, tc := range testCases { 153 t.Run(tc.name, func(t *testing.T) { 154 if got := DeepEqualBackends(tc.args.backends1, tc.args.backends2); got != tc.want { 155 t.Errorf("DeepEqualBackends() = %v, want %v", got, tc.want) 156 } 157 }) 158 } 159 }