Skip to content

Commit

Permalink
Add AdditionalDialOptions to ConnBuilder (#3865)
Browse files Browse the repository at this point in the history
Signed-off-by: Prithvi Raj <p.r@uber.com>

Signed-off-by: Prithvi Raj <p.r@uber.com>
  • Loading branch information
vprithvi committed Aug 10, 2022
1 parent 40e5a27 commit 26e82f0
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
4 changes: 4 additions & 0 deletions cmd/agent/app/reporter/grpc/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ type ConnBuilder struct {
DiscoveryMinPeers int
Notifier discovery.Notifier
Discoverer discovery.Discoverer

AdditionalDialOptions []grpc.DialOption
}

// NewConnBuilder creates a new grpc connection builder.
Expand Down Expand Up @@ -96,6 +98,8 @@ func (b *ConnBuilder) CreateConnection(logger *zap.Logger, mFactory metrics.Fact
}
dialOptions = append(dialOptions, grpc.WithDefaultServiceConfig(grpcresolver.GRPCServiceConfig))
dialOptions = append(dialOptions, grpc.WithUnaryInterceptor(grpc_retry.UnaryClientInterceptor(grpc_retry.WithMax(b.MaxRetry))))
dialOptions = append(dialOptions, b.AdditionalDialOptions...)

conn, err := grpc.Dial(dialTarget, dialOptions...)
if err != nil {
return nil, err
Expand Down
30 changes: 30 additions & 0 deletions cmd/agent/app/reporter/grpc/builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -395,3 +395,33 @@ func assertConnectionState(t *testing.T, conn *grpc.ClientConn, expectedState st
}
}
}

type fakeInterceptor struct {
isCalled bool
}

func (f *fakeInterceptor) intercept(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
f.isCalled = true
return invoker(ctx, method, req, reply, cc, opts...)
}

func (f *fakeInterceptor) assertCalled(t *testing.T) {
assert.True(t, f.isCalled)
}

func TestBuilderWithAdditionalDialOptions(t *testing.T) {
fi := fakeInterceptor{}
defer fi.assertCalled(t)

cb := ConnBuilder{
CollectorHostPorts: []string{"127.0.0.1:14268"},
AdditionalDialOptions: []grpc.DialOption{grpc.WithUnaryInterceptor(fi.intercept)},
}

r, err := cb.CreateConnection(zap.NewNop(), metrics.NullFactory)
require.NoError(t, err)
assert.NotNil(t, r)

err = r.Invoke(context.Background(), "test", map[string]string{}, map[string]string{}, []grpc.CallOption{}...)
assert.Error(t, err, "should error because no server is running")
}

0 comments on commit 26e82f0

Please sign in to comment.