@@ -531,11 +531,33 @@ def test_get_otel_async_interceptor_with_api_endpoint(monkeypatch):
531531def test_grpc_client_response_hook_success ():
532532 """Proves that _grpc_client_response_hook sets rpc.response.status_code to 'OK' on success."""
533533 mock_span = mock .Mock ()
534+ mock_span .is_recording .return_value = True
534535 _observability ._grpc_client_response_hook (mock_span , mock .Mock ())
535536 mock_span .set_attribute .assert_called_once_with ("rpc.response.status_code" , "OK" )
536537
537538
538- def test_grpc_client_response_hook_none_or_missing_set_attribute ():
539- """Proves that _grpc_client_response_hook handles None or invalid span gracefully."""
540- _observability ._grpc_client_response_hook (None , mock .Mock ())
541- _observability ._grpc_client_response_hook (object (), mock .Mock ())
539+ def test_grpc_client_response_hook_not_recording ():
540+ """Proves that _grpc_client_response_hook skips non-recording spans."""
541+ mock_span = mock .Mock ()
542+ mock_span .is_recording .return_value = False
543+ _observability ._grpc_client_response_hook (mock_span , mock .Mock ())
544+ mock_span .set_attribute .assert_not_called ()
545+
546+
547+ def test_grpc_client_response_hook_error_status ():
548+ """Proves that _grpc_client_response_hook skips spans marked with ERROR status."""
549+ mock_span = mock .Mock ()
550+ mock_span .is_recording .return_value = True
551+ mock_span .status .status_code .name = "ERROR"
552+ _observability ._grpc_client_response_hook (mock_span , mock .Mock ())
553+ mock_span .set_attribute .assert_not_called ()
554+
555+
556+ def test_grpc_client_response_hook_error_status_value ():
557+ """Proves that _grpc_client_response_hook skips spans with StatusCode.ERROR value (2)."""
558+ mock_span = mock .Mock ()
559+ mock_span .is_recording .return_value = True
560+ mock_span .status .status_code .name = "UNKNOWN"
561+ mock_span .status .status_code .value = 2
562+ _observability ._grpc_client_response_hook (mock_span , mock .Mock ())
563+ mock_span .set_attribute .assert_not_called ()
0 commit comments