From 10990d874cf90dea2ebeeb4c80a0d63a77349979 Mon Sep 17 00:00:00 2001 From: cruvie Date: Thu, 3 Apr 2025 12:51:11 +0800 Subject: [PATCH 1/3] add TestEtcdGrpcResolverWithMetaInfo --- .../clientv3/naming/resolver_test.go | 45 +++++++++++++++---- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/tests/integration/clientv3/naming/resolver_test.go b/tests/integration/clientv3/naming/resolver_test.go index 40dc177214b..58236eb9d5e 100644 --- a/tests/integration/clientv3/naming/resolver_test.go +++ b/tests/integration/clientv3/naming/resolver_test.go @@ -23,17 +23,16 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "google.golang.org/grpc" - "google.golang.org/grpc/credentials/insecure" - testpb "google.golang.org/grpc/interop/grpc_testing" - "go.etcd.io/etcd/client/v3/naming/endpoints" "go.etcd.io/etcd/client/v3/naming/resolver" "go.etcd.io/etcd/pkg/v3/grpctesting" integration2 "go.etcd.io/etcd/tests/v3/framework/integration" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + testpb "google.golang.org/grpc/interop/grpc_testing" ) -func testEtcdGRPCResolver(t *testing.T, lbPolicy string) { +func testEtcdGRPCResolver(t *testing.T, lbPolicy string, meta any) { // Setup two new dummy stub servers payloadBody := []byte{'1'} s1 := grpctesting.NewDummyStubServer(payloadBody) @@ -57,7 +56,10 @@ func testEtcdGRPCResolver(t *testing.T, lbPolicy string) { t.Fatal("failed to create EndpointManager", err) } - e1 := endpoints.Endpoint{Addr: s1.Addr()} + e1 := endpoints.Endpoint{ + Addr: s1.Addr(), + Metadata: meta, + } e2 := endpoints.Endpoint{Addr: s2.Addr()} err = em.AddEndpoint(context.TODO(), "foo/e1", e1) @@ -130,7 +132,7 @@ func TestEtcdGrpcResolverPickFirst(t *testing.T) { integration2.BeforeTest(t) // Pick first is the default load balancer policy for grpc-go - testEtcdGRPCResolver(t, "pick_first") + testEtcdGRPCResolver(t, "pick_first", nil) } // TestEtcdGrpcResolverRoundRobin mimics scenarios described in grpc_naming.md doc. @@ -138,7 +140,34 @@ func TestEtcdGrpcResolverRoundRobin(t *testing.T) { integration2.BeforeTest(t) // Round robin is a common alternative for more production oriented scenarios - testEtcdGRPCResolver(t, "round_robin") + testEtcdGRPCResolver(t, "round_robin", nil) +} + +type testMetaInfo struct { + ServerName string + Metadata any +} + +// TestEtcdGrpcResolverPickFirst mimics scenarios described in grpc_naming.md doc. +func TestEtcdGrpcResolverPickFirstWithMetaInfo(t *testing.T) { + integration2.BeforeTest(t) + + // Pick first is the default load balancer policy for grpc-go + testEtcdGRPCResolver(t, "pick_first", &testMetaInfo{ + ServerName: "s1", + Metadata: "testMeta", + }) +} + +// TestEtcdGrpcResolverRoundRobin mimics scenarios described in grpc_naming.md doc. +func TestEtcdGrpcResolverRoundRobinWithMetaInfo(t *testing.T) { + integration2.BeforeTest(t) + + // Round robin is a common alternative for more production oriented scenarios + testEtcdGRPCResolver(t, "round_robin", &testMetaInfo{ + ServerName: "s1", + Metadata: "testMeta", + }) } func TestEtcdEndpointManager(t *testing.T) { From 97bcf4a28a917d3ae099ebd5b47eb0f7407b1376 Mon Sep 17 00:00:00 2001 From: cruvie Date: Thu, 3 Apr 2025 13:09:44 +0800 Subject: [PATCH 2/3] add TestEtcdGrpcResolverWithMetaInfo --- tests/integration/clientv3/naming/resolver_test.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/integration/clientv3/naming/resolver_test.go b/tests/integration/clientv3/naming/resolver_test.go index 58236eb9d5e..88ef4bd7eda 100644 --- a/tests/integration/clientv3/naming/resolver_test.go +++ b/tests/integration/clientv3/naming/resolver_test.go @@ -60,7 +60,10 @@ func testEtcdGRPCResolver(t *testing.T, lbPolicy string, meta any) { Addr: s1.Addr(), Metadata: meta, } - e2 := endpoints.Endpoint{Addr: s2.Addr()} + e2 := endpoints.Endpoint{ + Addr: s2.Addr(), + Metadata: meta, + } err = em.AddEndpoint(context.TODO(), "foo/e1", e1) if err != nil { @@ -148,7 +151,7 @@ type testMetaInfo struct { Metadata any } -// TestEtcdGrpcResolverPickFirst mimics scenarios described in grpc_naming.md doc. +// TestEtcdGrpcResolverPickFirstWithMetaInfo mimics scenarios described in grpc_naming.md doc. func TestEtcdGrpcResolverPickFirstWithMetaInfo(t *testing.T) { integration2.BeforeTest(t) @@ -159,7 +162,7 @@ func TestEtcdGrpcResolverPickFirstWithMetaInfo(t *testing.T) { }) } -// TestEtcdGrpcResolverRoundRobin mimics scenarios described in grpc_naming.md doc. +// TestEtcdGrpcResolverRoundRobinWithMetaInfo mimics scenarios described in grpc_naming.md doc. func TestEtcdGrpcResolverRoundRobinWithMetaInfo(t *testing.T) { integration2.BeforeTest(t) From 973ec89a6b5681706d3e613564393409d67372ab Mon Sep 17 00:00:00 2001 From: cruvie Date: Tue, 8 Apr 2025 16:05:28 +0800 Subject: [PATCH 3/3] fix ci --- tests/integration/clientv3/naming/resolver_test.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/integration/clientv3/naming/resolver_test.go b/tests/integration/clientv3/naming/resolver_test.go index 88ef4bd7eda..6e898318f1a 100644 --- a/tests/integration/clientv3/naming/resolver_test.go +++ b/tests/integration/clientv3/naming/resolver_test.go @@ -23,13 +23,14 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + testpb "google.golang.org/grpc/interop/grpc_testing" + "go.etcd.io/etcd/client/v3/naming/endpoints" "go.etcd.io/etcd/client/v3/naming/resolver" "go.etcd.io/etcd/pkg/v3/grpctesting" integration2 "go.etcd.io/etcd/tests/v3/framework/integration" - "google.golang.org/grpc" - "google.golang.org/grpc/credentials/insecure" - testpb "google.golang.org/grpc/interop/grpc_testing" ) func testEtcdGRPCResolver(t *testing.T, lbPolicy string, meta any) {