@@ -564,3 +564,45 @@ def echo(self, msg):
564564 server .close ()
565565
566566 assert middleware .called is True
567+
568+ def test_inspect_error_middleware_puller ():
569+
570+ class InspectErrorMiddleware (Tracer ):
571+ def __init__ (self , barrier ):
572+ self .called = False
573+ self ._barrier = barrier
574+ Tracer .__init__ (self , identity = '[server]' )
575+
576+ def inspect_error (self , task_context , exc_info ):
577+ assert 'trace_id' in task_context
578+ exc_type , exc_value , exc_traceback = exc_info
579+ self .called = True
580+ self ._barrier .set ()
581+
582+ class Srv (object ):
583+ def echo (self , msg ):
584+ raise RuntimeError (msg )
585+
586+ endpoint = random_ipc_endpoint ()
587+
588+ barrier = gevent .event .Event ()
589+ middleware = InspectErrorMiddleware (barrier )
590+ ctx = zerorpc .Context ()
591+ ctx .register_middleware (middleware )
592+
593+ module = Srv ()
594+ server = zerorpc .Puller (module , context = ctx )
595+ server .bind (endpoint )
596+ gevent .spawn (server .run )
597+
598+ client = zerorpc .Pusher ()
599+ client .connect (endpoint )
600+
601+ barrier .clear ()
602+ client .echo ('This is a test which should call the InspectErrorMiddleware' )
603+ barrier .wait ()
604+
605+ client .close ()
606+ server .close ()
607+
608+ assert middleware .called is True
0 commit comments