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  }