@@ -323,31 +323,46 @@ defmodule GRPC.Integration.ServerTest do
323323 refute logs =~ "Exception raised while handling /helloworld.Greeter/SayHello"
324324 end
325325
326- test "passes RPCErrors to `exception_log_filter" do
327- defmodule ExceptionFilterMustBeRPCError do
328- def filter ( % GRPC.RPCError { } ) do
329- true
330- end
326+ defmodule ExceptionFilterMustBeRPCError do
327+ def filter ( exception ) do
328+ data = exception . adapter_extra [ :req ] [ :headers ] [ "test-data" ]
329+
330+ { pid , ref } = :erlang . binary_to_term ( data )
331+ send ( pid , { :exception_log_filter , ref , exception } )
332+
333+ true
331334 end
335+ end
336+
337+ test "passes RPCErrors to `exception_log_filter" do
338+ test_pid = self ( )
339+ ref = make_ref ( )
332340
333341 run_server (
334342 [ HelloErrorServer ] ,
335343 fn port ->
336- { :ok , channel } = GRPC.Stub . connect ( "localhost:#{ port } " )
337- req = % Helloworld.HelloRequest { name: "unknown error" }
344+ { :ok , channel } =
345+ GRPC.Stub . connect ( "localhost:#{ port } " ,
346+ headers: [ { "test-data" , :erlang . term_to_binary ( { test_pid , ref } ) } ]
347+ )
348+
349+ req = % Helloworld.HelloRequest { name: "world" }
338350 Helloworld.Greeter.Stub . say_hello ( channel , req )
339351 end ,
340352 0 ,
341353 exception_log_filter: { ExceptionFilterMustBeRPCError , :filter }
342354 )
355+
356+ assert_receive { :exception_log_filter , ^ ref ,
357+ % GRPC.Server.Adapters.ReportException { reason: % GRPC.RPCError { } } }
343358 end
344359
345360 defmodule ExceptionFilterMustBeRaisedError do
346361 def filter ( exception ) do
347362 data = exception . adapter_extra [ :req ] [ :headers ] [ "test-data" ]
348363
349364 { pid , ref } = :erlang . binary_to_term ( data )
350- send ( pid , { :exception_log_filter , ref } )
365+ send ( pid , { :exception_log_filter , ref , exception } )
351366
352367 true
353368 end
@@ -365,14 +380,15 @@ defmodule GRPC.Integration.ServerTest do
365380 headers: [ { "test-data" , :erlang . term_to_binary ( { test_pid , ref } ) } ]
366381 )
367382
368- req = % Helloworld.HelloRequest { name: "raise " , duration: 0 }
383+ req = % Helloworld.HelloRequest { name: "unknown error " , duration: 0 }
369384 Helloworld.Greeter.Stub . say_hello ( channel , req )
370385 end ,
371386 0 ,
372387 exception_log_filter: { ExceptionFilterMustBeRaisedError , :filter }
373388 )
374389
375- assert_receive { :exception_log_filter , ^ ref }
390+ assert_receive { :exception_log_filter , ^ ref ,
391+ % GRPC.Server.Adapters.ReportException { reason: % RuntimeError { } } }
376392 end
377393
378394 test "returns appropriate error for stream requests" do
0 commit comments