From ad398a0dbcdb36323d359bff61fe7f2e39f0e455 Mon Sep 17 00:00:00 2001 From: Siri Hansen Date: Wed, 14 Nov 2012 11:00:17 +0100 Subject: [common_test] Allow server to terminate netconf session before rpc-reply OTP-10570 ct_netconfc:close_session sometimes returned {error,closed} because the ssh connection was closed (from the server side) before the rpc-reply was received by the client. This is normal and can not be helped. It has been corrected so the return will be 'ok' in this case. Other error situations will still give {error,Reason}. --- lib/common_test/src/ct_netconfc.erl | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/common_test/src/ct_netconfc.erl b/lib/common_test/src/ct_netconfc.erl index 28480ed983..294b82bff6 100644 --- a/lib/common_test/src/ct_netconfc.erl +++ b/lib/common_test/src/ct_netconfc.erl @@ -1132,14 +1132,26 @@ call(Client, Msg, Timeout, WaitStop) -> case ct_gen_conn:call(Pid,Msg,Timeout) of {error,{process_down,Pid,noproc}} -> {error,no_such_client}; + {error,{process_down,Pid,normal}} when WaitStop -> + %% This will happen when server closes connection + %% before clien received rpc-reply on + %% close-session. + ok; {error,{process_down,Pid,normal}} -> {error,closed}; {error,{process_down,Pid,Reason}} -> {error,{closed,Reason}}; Other when WaitStop -> MRef = erlang:monitor(process,Pid), - receive {'DOWN',MRef,process,_,_} -> Other - after Timeout -> {error,{timeout,Other}} + receive + {'DOWN',MRef,process,Pid,Normal} when Normal==normal; + Normal==noproc -> + Other; + {'DOWN',MRef,process,Pid,Reason} -> + {error,{{closed,Reason},Other}} + after Timeout -> + erlang:demonitor(MRef, [flush]), + {error,{timeout,Other}} end; Other -> Other -- cgit v1.2.3