From 4706b80bb327230e0491e63788e852fcadd74681 Mon Sep 17 00:00:00 2001 From: Zach Reyes Date: Mon, 30 Sep 2024 16:18:28 -0700 Subject: [PATCH] Add unit test for duplicate addresses --- .../endpointsharding/endpointsharding_test.go | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/balancer/endpointsharding/endpointsharding_test.go b/balancer/endpointsharding/endpointsharding_test.go index a4f6fe6c6c9..0acd6b39700 100644 --- a/balancer/endpointsharding/endpointsharding_test.go +++ b/balancer/endpointsharding/endpointsharding_test.go @@ -157,3 +157,26 @@ func (s) TestEndpointShardingBasic(t *testing.T) { t.Fatalf("error in expected round robin: %v", err) } } + +// TestEndpointShardingBalancerAPI tests that when endpoint sharding gets a +// Client Conn update with a duplicate address across endpoints the +// UpdateClientConnState operation errors. +func (s) TestEndpointShardingBalancerAPI(t *testing.T) { + es := NewBalancer(nil, balancer.BuildOptions{}) + addr := resolver.Address{Addr: "addr1"} + err := es.UpdateClientConnState(balancer.ClientConnState{ + ResolverState: resolver.State{ + Endpoints: []resolver.Endpoint{ + {Addresses: []resolver.Address{addr}}, + {Addresses: []resolver.Address{addr}}, + }, + }, + }) + wantErr := fmt.Sprintf("duplicate addr %v present in endpoints list", addr) + if err == nil { + t.Fatalf("es.UpdateClientConnState() got: %v, want: %v", err, wantErr) + } + if err.Error() != wantErr { + t.Fatalf("es.UpdateClientConnState() got: %v, want: %v", err, wantErr) + } +}