diff --git a/rpcx/internal/chainclientinterceptors_test.go b/rpcx/internal/chainclientinterceptors_test.go new file mode 100644 index 00000000..7ca6019e --- /dev/null +++ b/rpcx/internal/chainclientinterceptors_test.go @@ -0,0 +1,47 @@ +package internal + +import ( + "context" + "sync/atomic" + "testing" + + "github.com/stretchr/testify/assert" + "google.golang.org/grpc" +) + +func TestWithStreamClientInterceptors(t *testing.T) { + opts := WithStreamClientInterceptors() + assert.NotNil(t, opts) +} + +func TestWithUnaryClientInterceptors(t *testing.T) { + opts := WithUnaryClientInterceptors() + assert.NotNil(t, opts) +} + +func TestChainStreamClientInterceptors_zero(t *testing.T) { + interceptors := chainStreamClientInterceptors() + _, err := interceptors(context.Background(), nil, new(grpc.ClientConn), "/foo", + func(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, + opts ...grpc.CallOption) (grpc.ClientStream, error) { + return nil, nil + }) + assert.Nil(t, err) +} + +func TestChainStreamClientInterceptors_one(t *testing.T) { + var called int32 + interceptors := chainStreamClientInterceptors(func(ctx context.Context, desc *grpc.StreamDesc, + cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) ( + grpc.ClientStream, error) { + atomic.AddInt32(&called, 1) + return nil, nil + }) + _, err := interceptors(context.Background(), nil, new(grpc.ClientConn), "/foo", + func(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, + opts ...grpc.CallOption) (grpc.ClientStream, error) { + return nil, nil + }) + assert.Nil(t, err) + assert.Equal(t, int32(1), atomic.LoadInt32(&called)) +} diff --git a/rpcx/internal/target.go b/rpcx/internal/target.go index 52c7b2a7..3415646e 100644 --- a/rpcx/internal/target.go +++ b/rpcx/internal/target.go @@ -9,10 +9,10 @@ import ( func BuildDirectTarget(endpoints []string) string { return fmt.Sprintf("%s:///%s", resolver.DirectScheme, strings.Join( - endpoints, fmt.Sprint(resolver.EndpointSep))) + endpoints, fmt.Sprintf("%c", resolver.EndpointSep))) } func BuildDiscovTarget(endpoints []string, key string) string { return fmt.Sprintf("%s://%s/%s", resolver.DiscovScheme, strings.Join( - endpoints, fmt.Sprint(resolver.EndpointSep)), key) + endpoints, fmt.Sprintf("%c", resolver.EndpointSep)), key) } diff --git a/rpcx/internal/target_test.go b/rpcx/internal/target_test.go new file mode 100644 index 00000000..a07b3a8e --- /dev/null +++ b/rpcx/internal/target_test.go @@ -0,0 +1,17 @@ +package internal + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestBuildDirectTarget(t *testing.T) { + target := BuildDirectTarget([]string{"localhost:123", "localhost:456"}) + assert.Equal(t, "direct:///localhost:123,localhost:456", target) +} + +func TestBuildDiscovTarget(t *testing.T) { + target := BuildDiscovTarget([]string{"localhost:123", "localhost:456"}, "foo") + assert.Equal(t, "discov://localhost:123,localhost:456/foo", target) +}