@@ -31,11 +31,11 @@ def __init__(self, trace_id, span_id): # pylint: disable=no-self-use
3131class SimpleTracerProvider :
3232 """Simple mock tracer provider without using MagicMock"""
3333
34- def __init__ (self ): # pylint: disable=no-self-use
34+ def __init__ (self ): # pylint: disable=no-self-use
3535 self .get_tracer_called = False
3636 self .tracer_name = None
3737
38- def get_tracer (self , name ): # pylint: disable=no-self-use
38+ def get_tracer (self , name ): # pylint: disable=no-self-use
3939 self .get_tracer_called = True
4040 self .tracer_name = name
4141 return "mock_tracer_from_provider"
@@ -44,10 +44,10 @@ def get_tracer(self, name): # pylint: disable=no-self-use
4444class TestInjectTraceContext (unittest .TestCase ):
4545 """Test the _inject_trace_context method"""
4646
47- def setUp (self ): # pylint: disable=no-self-use
47+ def setUp (self ): # pylint: disable=no-self-use
4848 self .instrumentor = MCPInstrumentor ()
4949
50- def test_inject_trace_context_empty_dict (self ): # pylint: disable=no-self-use
50+ def test_inject_trace_context_empty_dict (self ): # pylint: disable=no-self-use
5151 """Test injecting trace context into empty dictionary"""
5252 # Setup
5353 request_data = {}
@@ -70,7 +70,7 @@ def test_inject_trace_context_empty_dict(self): # pylint: disable=no-self-use
7070 self .assertEqual (int (parts [1 ], 16 ), 12345 ) # trace_id
7171 self .assertEqual (int (parts [2 ], 16 ), 67890 ) # span_id
7272
73- def test_inject_trace_context_existing_params (self ): # pylint: disable=no-self-use
73+ def test_inject_trace_context_existing_params (self ): # pylint: disable=no-self-use
7474 """Test injecting trace context when params already exist"""
7575 # Setup
7676 request_data = {"params" : {"existing_field" : "test_value" }}
@@ -94,13 +94,13 @@ def test_inject_trace_context_existing_params(self): # pylint: disable=no-sel
9494class TestTracerProvider (unittest .TestCase ):
9595 """Test the tracer provider kwargs logic in _instrument method"""
9696
97- def setUp (self ): # pylint: disable=no-self-use
97+ def setUp (self ): # pylint: disable=no-self-use
9898 self .instrumentor = MCPInstrumentor ()
9999 # Reset tracer to ensure test isolation
100100 if hasattr (self .instrumentor , "tracer" ):
101101 delattr (self .instrumentor , "tracer" )
102102
103- def test_instrument_without_tracer_provider_kwargs (self ): # pylint: disable=no-self-use
103+ def test_instrument_without_tracer_provider_kwargs (self ): # pylint: disable=no-self-use
104104 """Test _instrument method when no tracer_provider in kwargs - should use default tracer"""
105105 # Execute - Actually test the mcpinstrumentor method
106106 with unittest .mock .patch ("opentelemetry.trace.get_tracer" ) as mock_get_tracer :
@@ -130,10 +130,10 @@ def test_instrument_with_tracer_provider_kwargs(self): # pylint: disable=no-sel
130130class TestInstrumentationDependencies (unittest .TestCase ):
131131 """Test the instrumentation_dependencies method"""
132132
133- def setUp (self ): # pylint: disable=no-self-use
133+ def setUp (self ): # pylint: disable=no-self-use
134134 self .instrumentor = MCPInstrumentor ()
135135
136- def test_instrumentation_dependencies (self ): # pylint: disable=no-self-use
136+ def test_instrumentation_dependencies (self ): # pylint: disable=no-self-use
137137 """Test that instrumentation_dependencies method returns the expected dependencies"""
138138 # Execute - Actually test the mcpinstrumentor method
139139 dependencies = self .instrumentor .instrumentation_dependencies ()
@@ -147,7 +147,7 @@ def test_instrumentation_dependencies(self): # pylint: disable=no-self-use
147147class TestTraceContextInjection (unittest .TestCase ):
148148 """Test trace context injection using actual mcpinstrumentor methods"""
149149
150- def setUp (self ): # pylint: disable=no-self-use
150+ def setUp (self ): # pylint: disable=no-self-use
151151 self .instrumentor = MCPInstrumentor ()
152152
153153 def test_trace_context_injection_with_realistic_request (self ): # pylint: disable=no-self-use
@@ -159,7 +159,7 @@ def __init__(self, tool_name, arguments=None): # pylint: disable=no-self-use
159159 self .root = self
160160 self .params = CallToolParams (tool_name , arguments )
161161
162- def model_dump (self , by_alias = True , mode = "json" , exclude_none = True ): # pylint: disable=no-self-use
162+ def model_dump (self , by_alias = True , mode = "json" , exclude_none = True ): # pylint: disable=no-self-use
163163 result = {"method" : "call_tool" , "params" : {"name" : self .params .name }}
164164 if self .params .arguments :
165165 result ["params" ]["arguments" ] = self .params .arguments
@@ -177,7 +177,7 @@ def model_validate(cls, data): # pylint: disable=no-self-use
177177 return instance
178178
179179 class CallToolParams :
180- def __init__ (self , name , arguments = None ): # pylint: disable=no-self-use
180+ def __init__ (self , name , arguments = None ): # pylint: disable=no-self-use
181181 self .name = name
182182 self .arguments = arguments
183183 self ._meta = None # Will hold trace context
@@ -214,7 +214,7 @@ def __init__(self, name, arguments=None): # pylint: disable=no-self-use
214214class TestInstrumentedMCPServer (unittest .TestCase ):
215215 """Test mcpinstrumentor with a mock MCP server to verify end-to-end functionality"""
216216
217- def setUp (self ): # pylint: disable=no-self-use
217+ def setUp (self ): # pylint: disable=no-self-use
218218 self .instrumentor = MCPInstrumentor ()
219219 # Initialize tracer so the instrumentor can work
220220 mock_tracer = MagicMock ()
@@ -224,15 +224,15 @@ def test_no_trace_context_fallback(self): # pylint: disable=no-self-use
224224 """Test graceful handling when no trace context is present on server side"""
225225
226226 class MockServerNoTrace :
227- async def _handle_request (self , session , request ): # pylint: disable=no-self-use
227+ async def _handle_request (self , session , request ): # pylint: disable=no-self-use
228228 return {"success" : True , "handled_without_trace" : True }
229229
230230 class MockServerRequestNoTrace :
231- def __init__ (self , tool_name ): # pylint: disable=no-self-use
231+ def __init__ (self , tool_name ): # pylint: disable=no-self-use
232232 self .params = MockServerRequestParamsNoTrace (tool_name )
233233
234234 class MockServerRequestParamsNoTrace :
235- def __init__ (self , name ): # pylint: disable=no-self-use
235+ def __init__ (self , name ): # pylint: disable=no-self-use
236236 self .name = name
237237 self .meta = None # No trace context
238238
@@ -274,7 +274,7 @@ def __init__(self, tool_name, arguments=None, method="call_tool"): # pylint: di
274274 self .params = MCPRequestParams (tool_name , arguments )
275275 self .method = method
276276
277- def model_dump (self , by_alias = True , mode = "json" , exclude_none = True ): # pylint: disable=no-self-use
277+ def model_dump (self , by_alias = True , mode = "json" , exclude_none = True ): # pylint: disable=no-self-use
278278 result = {"method" : self .method , "params" : {"name" : self .params .name }}
279279 if self .params .arguments :
280280 result ["params" ]["arguments" ] = self .params .arguments
@@ -293,19 +293,19 @@ def model_validate(cls, data): # pylint: disable=no-self-use
293293 return instance
294294
295295 class MCPRequestParams :
296- def __init__ (self , name , arguments = None ): # pylint: disable=no-self-use
296+ def __init__ (self , name , arguments = None ): # pylint: disable=no-self-use
297297 self .name = name
298298 self .arguments = arguments
299299 self ._meta = None
300300
301301 class MCPServerRequest :
302- def __init__ (self , client_request_data ): # pylint: disable=no-self-use
302+ def __init__ (self , client_request_data ): # pylint: disable=no-self-use
303303 """Server request created from client's serialized data"""
304304 self .method = client_request_data .get ("method" , "call_tool" )
305305 self .params = MCPServerRequestParams (client_request_data ["params" ])
306306
307307 class MCPServerRequestParams :
308- def __init__ (self , params_data ): # pylint: disable=no-self-use
308+ def __init__ (self , params_data ): # pylint: disable=no-self-use
309309 self .name = params_data ["name" ]
310310 self .arguments = params_data .get ("arguments" )
311311 # Extract traceparent from _meta if present
@@ -315,16 +315,16 @@ def __init__(self, params_data): # pylint: disable=no-self-use
315315 self .meta = None
316316
317317 class MCPServerRequestMeta :
318- def __init__ (self , traceparent ): # pylint: disable=no-self-use
318+ def __init__ (self , traceparent ): # pylint: disable=no-self-use
319319 self .traceparent = traceparent
320320
321321 # Mock client and server that actually communicate
322322 class EndToEndMCPSystem :
323- def __init__ (self ): # pylint: disable=no-self-use
323+ def __init__ (self ): # pylint: disable=no-self-use
324324 self .communication_log = []
325325 self .last_sent_request = None
326326
327- async def client_send_request (self , request ): # pylint: disable=no-self-use
327+ async def client_send_request (self , request ): # pylint: disable=no-self-use
328328 """Client sends request - captures what gets sent"""
329329 self .communication_log .append ("CLIENT: Preparing to send request" )
330330 self .last_sent_request = request # Capture the modified request
@@ -336,7 +336,7 @@ async def client_send_request(self, request): # pylint: disable=no-self-use
336336 # Return client response
337337 return {"success" : True , "client_response" : "Request sent successfully" }
338338
339- async def server_handle_request (self , session , server_request ): # pylint: disable=no-self-use
339+ async def server_handle_request (self , session , server_request ): # pylint: disable=no-self-use
340340 """Server handles the request it received"""
341341 self .communication_log .append (f"SERVER: Received request for { server_request .params .name } " )
342342
0 commit comments