@@ -524,3 +524,43 @@ def echo(self, msg):
524524 assert subscriber_tracer ._log == [
525525 ('load' , publisher_tracer .trace_id ),
526526 ]
527+
528+ def test_inspect_error_middleware ():
529+
530+ class InspectErrorMiddleware (Tracer ):
531+ def __init__ (self ):
532+ self .called = False
533+ Tracer .__init__ (self , identity = '[server]' )
534+
535+ def inspect_error (self , task_context , exc_info ):
536+ assert 'trace_id' in task_context
537+ exc_type , exc_value , exc_traceback = exc_info
538+ self .called = True
539+
540+ class Srv (object ):
541+ def echo (self , msg ):
542+ raise RuntimeError (msg )
543+
544+ endpoint = random_ipc_endpoint ()
545+
546+ middleware = InspectErrorMiddleware ()
547+ ctx = zerorpc .Context ()
548+ ctx .register_middleware (middleware )
549+
550+ module = Srv ()
551+ server = zerorpc .Server (module , context = ctx )
552+ server .bind (endpoint )
553+ gevent .spawn (server .run )
554+
555+ client = zerorpc .Client ()
556+ client .connect (endpoint )
557+
558+ try :
559+ client .echo ('This is a test which should call the InspectErrorMiddleware' )
560+ except zerorpc .exceptions .RemoteError as ex :
561+ assert ex .name == 'RuntimeError'
562+
563+ client .close ()
564+ server .close ()
565+
566+ assert middleware .called is True
0 commit comments