Skip to content

Commit 9e8d00f

Browse files
author
Mihir Gore
committed
Keep client interceptors in sync with grpc client interceptors
1 parent e7d26a4 commit 9e8d00f

File tree

2 files changed

+42
-17
lines changed

2 files changed

+42
-17
lines changed

Diff for: instrumentation/opentelemetry-instrumentation-grpc/src/opentelemetry/instrumentation/grpc/grpcext/_interceptor.py

+17-16
Original file line numberDiff line numberDiff line change
@@ -48,32 +48,33 @@ def __init__(self, method, base_callable, interceptor):
4848
self._base_callable = base_callable
4949
self._interceptor = interceptor
5050

51-
def __call__(self, request, timeout=None, metadata=None, credentials=None):
51+
def __call__(self, request, timeout=None, metadata=None, credentials=None, wait_for_ready=None,
52+
compression=None):
5253
def invoker(request, metadata):
53-
return self._base_callable(request, timeout, metadata, credentials)
54+
return self._base_callable(request, timeout, metadata, credentials, wait_for_ready, compression)
5455

5556
client_info = _UnaryClientInfo(self._method, timeout)
5657
return self._interceptor.intercept_unary(
5758
request, metadata, client_info, invoker
5859
)
5960

6061
def with_call(
61-
self, request, timeout=None, metadata=None, credentials=None
62+
self, request, timeout=None, metadata=None, credentials=None, wait_for_ready=None, compression=None
6263
):
6364
def invoker(request, metadata):
6465
return self._base_callable.with_call(
65-
request, timeout, metadata, credentials
66+
request, timeout, metadata, credentials, wait_for_ready, compression
6667
)
6768

6869
client_info = _UnaryClientInfo(self._method, timeout)
6970
return self._interceptor.intercept_unary(
7071
request, metadata, client_info, invoker
7172
)
7273

73-
def future(self, request, timeout=None, metadata=None, credentials=None):
74+
def future(self, request, timeout=None, metadata=None, credentials=None, wait_for_ready=None, compression=None):
7475
def invoker(request, metadata):
7576
return self._base_callable.future(
76-
request, timeout, metadata, credentials
77+
request, timeout, metadata, credentials, wait_for_ready, compression
7778
)
7879

7980
client_info = _UnaryClientInfo(self._method, timeout)
@@ -88,9 +89,9 @@ def __init__(self, method, base_callable, interceptor):
8889
self._base_callable = base_callable
8990
self._interceptor = interceptor
9091

91-
def __call__(self, request, timeout=None, metadata=None, credentials=None):
92+
def __call__(self, request, timeout=None, metadata=None, credentials=None, wait_for_ready=None, compression=None):
9293
def invoker(request, metadata):
93-
return self._base_callable(request, timeout, metadata, credentials)
94+
return self._base_callable(request, timeout, metadata, credentials, wait_for_ready, compression)
9495

9596
client_info = _StreamClientInfo(self._method, False, True, timeout)
9697
return self._interceptor.intercept_stream(
@@ -105,11 +106,11 @@ def __init__(self, method, base_callable, interceptor):
105106
self._interceptor = interceptor
106107

107108
def __call__(
108-
self, request_iterator, timeout=None, metadata=None, credentials=None
109+
self, request_iterator, timeout=None, metadata=None, credentials=None, wait_for_ready=None, compression=None
109110
):
110111
def invoker(request_iterator, metadata):
111112
return self._base_callable(
112-
request_iterator, timeout, metadata, credentials
113+
request_iterator, timeout, metadata, credentials, wait_for_ready, compression
113114
)
114115

115116
client_info = _StreamClientInfo(self._method, True, False, timeout)
@@ -118,11 +119,11 @@ def invoker(request_iterator, metadata):
118119
)
119120

120121
def with_call(
121-
self, request_iterator, timeout=None, metadata=None, credentials=None
122+
self, request_iterator, timeout=None, metadata=None, credentials=None, wait_for_ready=None, compression=None
122123
):
123124
def invoker(request_iterator, metadata):
124125
return self._base_callable.with_call(
125-
request_iterator, timeout, metadata, credentials
126+
request_iterator, timeout, metadata, credentials, wait_for_ready, compression
126127
)
127128

128129
client_info = _StreamClientInfo(self._method, True, False, timeout)
@@ -131,11 +132,11 @@ def invoker(request_iterator, metadata):
131132
)
132133

133134
def future(
134-
self, request_iterator, timeout=None, metadata=None, credentials=None
135+
self, request_iterator, timeout=None, metadata=None, credentials=None, wait_for_ready=None, compression=None
135136
):
136137
def invoker(request_iterator, metadata):
137138
return self._base_callable.future(
138-
request_iterator, timeout, metadata, credentials
139+
request_iterator, timeout, metadata, credentials, wait_for_ready, compression
139140
)
140141

141142
client_info = _StreamClientInfo(self._method, True, False, timeout)
@@ -151,11 +152,11 @@ def __init__(self, method, base_callable, interceptor):
151152
self._interceptor = interceptor
152153

153154
def __call__(
154-
self, request_iterator, timeout=None, metadata=None, credentials=None
155+
self, request_iterator, timeout=None, metadata=None, credentials=None, wait_for_ready=None, compression=None
155156
):
156157
def invoker(request_iterator, metadata):
157158
return self._base_callable(
158-
request_iterator, timeout, metadata, credentials
159+
request_iterator, timeout, metadata, credentials, wait_for_ready, compression
159160
)
160161

161162
client_info = _StreamClientInfo(self._method, True, True, timeout)

Diff for: instrumentation/opentelemetry-instrumentation-grpc/tests/test_client_interceptor.py

+25-1
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,37 @@
4040
from .protobuf.test_server_pb2 import Request
4141

4242

43+
class Interceptor(
44+
grpc.UnaryUnaryClientInterceptor,
45+
grpc.UnaryStreamClientInterceptor,
46+
grpc.StreamUnaryClientInterceptor,
47+
grpc.StreamStreamClientInterceptor,
48+
):
49+
def intercept_unary_unary(self, continuation, client_call_details, request):
50+
return self._intercept_call(continuation, client_call_details, request)
51+
52+
def intercept_unary_stream(self, continuation, client_call_details, request):
53+
return self._intercept_call(continuation, client_call_details, request)
54+
55+
def intercept_stream_unary(self, continuation, client_call_details, request_iterator):
56+
return self._intercept_call(continuation, client_call_details, request_iterator)
57+
58+
def intercept_stream_stream(self, continuation, client_call_details, request_iterator):
59+
return self._intercept_call(continuation, client_call_details, request_iterator)
60+
61+
def _intercept_call(self, continuation, client_call_details, request_or_iterator):
62+
return continuation(client_call_details, request_or_iterator)
63+
64+
65+
4366
class TestClientProto(TestBase):
4467
def setUp(self):
4568
super().setUp()
4669
GrpcInstrumentorClient().instrument()
4770
self.server = create_test_server(25565)
4871
self.server.start()
49-
self.channel = grpc.insecure_channel("localhost:25565")
72+
interceptors = [Interceptor()]
73+
self.channel = grpc.insecure_channel("localhost:25565", interceptors)
5074
self._stub = test_server_pb2_grpc.GRPCTestServerStub(self.channel)
5175

5276
def tearDown(self):

0 commit comments

Comments
 (0)