megaco_pending_limit_test.erl

来自「OTP是开放电信平台的简称」· ERL 代码 · 共 2,019 行 · 第 1/5 页

ERL
2,019
字号
-define(otp_4956_mgc_verify_notify_req2_fun(),        otp_4956_mgc_verify_notify_req2_fun()).-define(otp_4956_mgc_verify_handle_trans_req_abort_fun(),	otp_4956_mgc_verify_handle_trans_req_abort_fun()).-define(otp_4956_mgc_verify_handle_disconnect_fun(),	fun otp_4956_mgc_verify_handle_disconnect/1).-endif.otp_4956_mgc_event_sequence(text, tcp) ->    Mid = {deviceName,"ctrl"},    RI = [          {port,             2944},          {encoding_module,  megaco_pretty_text_encoder},          {encoding_config,  []},          {transport_module, megaco_tcp}         ],    ConnectVerify          = ?otp_4956_mgc_verify_handle_connect_fun(),    ServiceChangeReqVerify = ?otp_4956_mgc_verify_service_change_req_fun(Mid),    NotifyReqVerify1       = ?otp_4956_mgc_verify_notify_req1_fun(),    NotifyReqVerify2       = ?otp_4956_mgc_verify_notify_req2_fun(),    ReqAbortVerify         = ?otp_4956_mgc_verify_handle_trans_req_abort_fun(),     DiscoVerify            = ?otp_4956_mgc_verify_handle_disconnect_fun(), %%     ConnectVerify          = otp_4956_mgc_verify_handle_connect_fun(),%%     ServiceChangeReqVerify = otp_4956_mgc_verify_service_change_req_fun(Mid),%%     NotifyReqVerify1       = otp_4956_mgc_verify_notify_request_fun1(),%%     NotifyReqVerify2       = otp_4956_mgc_verify_notify_request_fun2(),%%     ReqAbortVerify = otp_4956_mgc_verify_handle_trans_request_abort_fun(), %%     DiscoVerify            = fun otp_4956_mgc_verify_handle_disconnect/1,    EvSeq = [             {debug, true},	     {megaco_trace, disable},	     {megaco_trace, max},             megaco_start,             {megaco_start_user, Mid, RI, []},	     {megaco_update_user_info, sent_pending_limit, 4},             start_transport,             listen,             {megaco_callback, handle_connect, ConnectVerify},	     {megaco_conn_info, all},             {megaco_callback, handle_trans_request_sc, ServiceChangeReqVerify},             {megaco_callback, handle_trans_request_1, NotifyReqVerify1},             {megaco_callback, handle_trans_request_abort, ReqAbortVerify},             {megaco_callback, nocall, 1000},             {megaco_callback, handle_trans_request_6, NotifyReqVerify2},             {megaco_callback, handle_disconnect, DiscoVerify},             megaco_stop_user,             megaco_stop            ],    EvSeq.-ifndef(megaco_hipe_special).otp_4956_mgc_verify_handle_connect_fun() ->    fun(M) ->	    otp_4956_mgc_verify_handle_connect(M)    end.-endif.otp_4956_mgc_verify_handle_connect({handle_connect, CH, ?VERSION}) ->     {ok, CH, ok};otp_4956_mgc_verify_handle_connect(Else) ->    {error, Else, ok}.-ifndef(megaco_hipe_special).otp_4956_mgc_verify_service_change_req_fun(Mid) ->    fun(Req) ->	    otp_4956_mgc_verify_service_change_req(Req, Mid)    end.-endif.otp_4956_mgc_verify_service_change_req(  {handle_trans_request, _, ?VERSION, [AR]}, Mid) ->    io:format("otp_4956_mgc_verify_service_change_req -> ok"	      "~n   AR: ~p~n", [AR]),    case AR of	#'ActionRequest'{commandRequests = [CR]} ->	    case CR of		#'CommandRequest'{command = Cmd} ->		    case Cmd of			{serviceChangeReq, 			 #'ServiceChangeRequest'{terminationID = [Tid],						 serviceChangeParms = Parms}} ->			    case Tid of				#megaco_term_id{contains_wildcards = false, 						id = ["root"]} ->				    case Parms of					#'ServiceChangeParm'{						 serviceChangeMethod = restart,						 serviceChangeReason = [[$9,$0,$1|_]]} ->					    Reply = 						{discard_ack, 						 [otp_4956_mgc_service_change_reply_ar(Mid, 1)]},					    {ok, AR, Reply};					_ ->					    Err = {invalid_SCP, Parms},					    ED = otp_4956_err_desc(Parms),					    ErrReply = {discard_ack, ED},					    {error, Err, ErrReply}				    end;				_ ->				    Err = {invalid_termination_id, Tid},				    ED = otp_4956_err_desc(Tid),				    ErrReply = {discard_ack, ED},				    {error, Err, ErrReply}			    end;			_ ->			    Err = {invalid_command, Cmd},			    ED = otp_4956_err_desc(Cmd),			    ErrReply = {discard_ack, ED},			    {error, Err, ErrReply}		    end;		_ ->		    Err = {invalid_command_request, CR},		    ED = otp_4956_err_desc(CR),		    ErrReply = {discard_ack, ED},		    {error, Err, ErrReply}	    end;	_ ->	    Err = {invalid_action_request, AR},	    ED = otp_4956_err_desc(AR),	    ErrReply = {discard_ack, ED},	    {error, Err, ErrReply}    end;otp_4956_mgc_verify_service_change_req(Else, _Mid) ->    io:format("otp_4956_mgc_verify_service_change_req -> unknown"	      "~n   Else: ~p~n", [Else]),    ED       = otp_4956_err_desc(Else),    ErrReply = {discard_ack, ED},    {error, Else, ErrReply}.-ifndef(megaco_hipe_special).otp_4956_mgc_verify_notify_req1_fun() ->    fun(Req) ->	    otp_4956_mgc_verify_notify_req1(Req)    end.-endif.otp_4956_mgc_verify_notify_req1({handle_trans_request, _, ?VERSION, [AR]}) ->    io:format("otp_4956_mgc_verify_notify_req1 -> entry with"	      "~n   AR: ~p"	      "~n", [AR]),    case AR of	#'ActionRequest'{contextId = Cid, 			 commandRequests = [CR]} ->	    #'CommandRequest'{command = Cmd} = CR,	    {notifyReq, NR} = Cmd,	    #'NotifyRequest'{terminationID = [Tid],			     observedEventsDescriptor = OED,			     errorDescriptor = asn1_NOVALUE} = NR,	    #'ObservedEventsDescriptor'{observedEventLst = [OE]} = OED,	    #'ObservedEvent'{eventName = "al/of"} = OE,	    Reply = {discard_ack, [otp_4956_mgc_notify_reply_ar(Cid, Tid)]},	    {ok, 6500, AR, Reply};	_ ->                    ED = otp_4956_err_desc(AR),	    ErrReply = {discard_ack, ED},	    {error, AR, ErrReply}    end;otp_4956_mgc_verify_notify_req1(Else) ->    io:format("otp_4956_mgc_verify_notify_req1 -> entry with"	      "~n   Else: ~p"	      "~n", [Else]),    ED       = otp_4956_err_desc(Else),    ErrReply = {discard_ack, ED},    {error, Else, ErrReply}.-ifndef(megaco_hipe_special).otp_4956_mgc_verify_notify_req2_fun() ->    fun(Ev) ->	    otp_4956_mgc_verify_notify_req2(Ev)    end.-endif.otp_4956_mgc_verify_notify_req2({handle_trans_request, _, ?VERSION, [AR]}) ->    case AR of	#'ActionRequest'{contextId = _Cid, 			 commandRequests = [CR]} ->	    #'CommandRequest'{command = Cmd} = CR,	    {notifyReq, NR} = Cmd,	    #'NotifyRequest'{terminationID = [_Tid],			     observedEventsDescriptor = OED,			     errorDescriptor = asn1_NOVALUE} = NR,	    #'ObservedEventsDescriptor'{observedEventLst = [OE]} = OED,	    #'ObservedEvent'{eventName = "al/of"} = OE,	    Reply = ignore,	    {ok, 100, AR, Reply};	_ ->	    ED = otp_4956_err_desc(AR),	    ErrReply = {discard_ack, ED},	    {error, AR, ErrReply}    end;otp_4956_mgc_verify_notify_req2(Else) ->    ED       = otp_4956_err_desc(Else),    ErrReply = {discard_ack, ED},    {error, Else, ErrReply}.-ifndef(megaco_hipe_special).otp_4956_mgc_verify_handle_trans_req_abort_fun() ->    fun(Req) -> 	    otp_4956_mgc_verify_handle_trans_req_abort(Req)    end.-endif.otp_4956_mgc_verify_handle_trans_req_abort({handle_trans_request_abort, 					    CH, ?VERSION, 2, Pid}) ->     io:format("otp_4956_mgc_verify_handle_trans_req_abort -> ok"	      "~n   CH:  ~p"	      "~n   Pid: ~p"	      "~n", [CH, Pid]),    {ok, {CH, Pid}, ok};otp_4956_mgc_verify_handle_trans_req_abort({handle_trans_request_abort, 					    CH, Version, TransId, Pid}) ->     io:format("otp_4956_mgc_verify_handle_trans_req_abort -> error"	      "~n   CH:      ~p"	      "~n   Version: ~p"	      "~n   TransId: ~p"	      "~n   Pid:     ~p"	      "~n", [CH, Version, TransId, Pid]),    {error, {error, {invalid_version_trans_id, Version, TransId}}, ok};otp_4956_mgc_verify_handle_trans_req_abort(Else) ->    io:format("otp_4956_mgc_verify_handle_trans_req_abort -> error"	      "~n   Else: ~p"	      "~n", [Else]),    {error, Else, ok}.otp_4956_mgc_verify_handle_disconnect({handle_disconnect, CH, ?VERSION, _R}) ->     io:format("otp_4956_mgc_verify_handle_disconnect -> ok"	      "~n   CH: ~p"	      "~n   _R:  ~p"	      "~n", [CH, _R]),    {ok, CH, ok};otp_4956_mgc_verify_handle_disconnect(Else) ->    io:format("otp_4956_mgc_verify_handle_disconnect -> unknown"	      "~n   Else: ~p~n", [Else]),    {error, Else, ok}.otp_4956_mgc_service_change_reply_ar(Mid, Cid) ->    SCRP  = cre_serviceChangeResParm(Mid),    SCRes = cre_serviceChangeResult(SCRP),    Root  = #megaco_term_id{id = ["root"]},    SCR   = cre_serviceChangeReply([Root], SCRes),    CR    = cre_cmdReply(SCR),    AR    = cre_actionReply(Cid, [CR]),    AR.%% otp_4956_mgc_service_change_reply_msg(Mid, TransId, Cid) ->%%     AR    = otp_4956_mgc_service_change_reply_ar(Mid, Cid),%%     TRes  = cre_transResult([AR]),%%     TR    = cre_transReply(TransId, TRes),%%     Trans = cre_transaction(TR),%%     Mess  = cre_message(?VERSION, Mid, cre_transactions([Trans])),%%     cre_megacoMessage(Mess).otp_4956_mgc_notify_reply_ar(Cid, TermId) ->    NR    = cre_notifyReply([TermId]),    CR    = cre_cmdReply(NR),    cre_actionReply(Cid, [CR]).%% otp_4956_mgc_notify_reply(Mid, TransId, Cid, TermId) ->%%     AR    = otp_4956_mgc_notify_reply_ar(Cid, TermId),%%     TRes  = cre_transResult([AR]),%%     TR    = cre_transReply(TransId, TRes),%%     Trans = cre_transaction(TR),%%     Mess  = cre_message(?VERSION, Mid, cre_transactions([Trans])),%%     cre_megacoMessage(Mess).%%%% MG generator stuff%% -ifdef(megaco_hipe_special).-define(otp_4956_mg_decode_msg_fun(Mod, Conf),	{?MODULE, decode_msg, [Mod, Conf]}).-define(otp_4956_mg_encode_msg_fun(Mod, Conf),	{?MODULE, encode_msg, [Mod, Conf]}).-define(otp_4956_mg_verify_service_change_rep_msg_fun(),	{?MODULE, otp_4956_mg_verify_service_change_rep_msg, []}).-define(otp_4956_mg_verify_pending_msg_fun(),	{?MODULE, otp_4956_mg_verify_pending_msg, []}).-define(otp_4956_mg_verify_pending_limit_msg_fun(),	{?MODULE, otp_4956_mg_verify_pending_limit_msg, []}).-else.-define(otp_4956_mg_decode_msg_fun(Mod, Conf),	otp_4956_mg_decode_msg_fun(Mod, Conf)).-define(otp_4956_mg_encode_msg_fun(Mod, Conf),	otp_4956_mg_encode_msg_fun(Mod, Conf)).-define(otp_4956_mg_verify_service_change_rep_msg_fun(),	otp_4956_mg_verify_service_change_rep_msg_fun()).-define(otp_4956_mg_verify_pending_msg_fun(),	otp_4956_mg_verify_pending_msg_fun()).-define(otp_4956_mg_verify_pending_limit_msg_fun(),	otp_4956_mg_verify_pending_limit_msg_fun()).-endif.otp_4956_mg_event_sequence(text, tcp) ->    DecodeFun = ?otp_4956_mg_decode_msg_fun(megaco_pretty_text_encoder, []),    EncodeFun = ?otp_4956_mg_encode_msg_fun(megaco_pretty_text_encoder, []),    Mid = {deviceName,"mg"},    ServiceChangeReq = otp_4956_mg_service_change_request_msg(Mid, 1, 0),    TermId = #megaco_term_id{id = ["00000000","00000000","01101101"]},    NotifyReq = otp_4956_mg_notify_request_msg(Mid, 2, 1, TermId, 1),    ServiceChangeReplyVerifyFun = ?otp_4956_mg_verify_service_change_rep_msg_fun(),    PendingVerify               = ?otp_4956_mg_verify_pending_msg_fun(),    PendingLimitVerify          = ?otp_4956_mg_verify_pending_limit_msg_fun(),%%     ServiceChangeReplyVerifyFun = %% 	otp_4956_mg_verify_service_change_rep_msg_fun(),%%     PendingVerify = otp_4956_mg_verify_pending_msg_fun(),%%     PendingLimitVerify = otp_4956_mg_verify_pending_limit_msg_fun(),    EvSeq = [{debug,  true},	     {decode, DecodeFun},	     {encode, EncodeFun},	     {connect, 2944},	     {send, "service-change-request", ServiceChangeReq}, 	     {expect_receive, "service-change-reply", {ServiceChangeReplyVerifyFun, 10000}}, 	     {send, "notify request (first send)", NotifyReq}, 	     {sleep, 100},	     {send, "notify request (resend 1)", NotifyReq}, 	     {expect_receive, "pending 1", {PendingVerify, 1000}},	     {sleep, 1000},	     {send, "notify request (resend 2)", NotifyReq}, 	     {expect_receive, "pending 2", {PendingVerify, 1000}},	     {sleep, 1000},	     {send, "notify request (resend 3)", NotifyReq}, 	     {expect_receive, "pending 3", {PendingVerify, 1000}},	     {sleep, 1000},	     {send, "notify request (resend 4)", NotifyReq}, 	     {expect_receive, "pending 4", {PendingVerify, 1000}},	     {sleep, 1000},	     {send, "notify request (resend 5)", NotifyReq}, 	     {expect_receive, "pending limit exceeded", 	      {PendingLimitVerify, 1000}},	     {sleep, 4000},	     {send, "notify request (resend 6)", NotifyReq}, 	     {expect_nothing, 4000},	     disconnect	    ],    EvSeq.otp_4956_mg_encode_msg_fun(Mod, Conf) ->    fun(M) ->             encode_msg(M, Mod, Conf)    end.otp_4956_mg_decode_msg_fun(Mod, Conf) ->    fun(M) ->             decode_msg(M, Mod, Conf)    end.-ifndef(megaco_hipe_special).otp_4956_mg_verify_service_change_rep_msg_fun() ->    fun(M) ->	    otp_4956_mg_verify_service_change_rep_msg(M)    end.-endif.otp_4956_mg_verify_service_change_rep_msg(  #'MegacoMessage'{mess = Mess} = M) ->     io:format("otp_4956_mg_verify_service_change_rep_msg -> "	      "ok so far~n",[]),    #'Message'{version     = _V,	       mId         = _MgMid,	       messageBody = Body} = Mess,    {transactions, [Trans]} = Body,    {transactionReply, TR} = Trans,    #'TransactionReply'{transactionId = _Tid,			immAckRequired = asn1_NOVALUE,			transactionResult = Res} = TR,    {actionReplies, [AR]} = Res,    #'ActionReply'{contextId = _Cid,		   errorDescriptor = asn1_NOVALUE,		   contextReply = _CtxReq,		   commandReply = [CR]} = AR,    {serviceChangeReply, SCR} = CR,    #'ServiceChangeReply'{terminationID = _TermID,			  serviceChangeResult = SCRes} = SCR,    {serviceChangeResParms, SCRP} = SCRes,    #'ServiceChangeResParm'{serviceChangeMgcId = _MgcMid} = SCRP,    {ok, M};otp_4956_mg_verify_service_change_rep_msg(M) ->    {error, {invalid_message, M}}.-ifndef(megaco_hipe_special).otp_4956_mg_verify_pending_msg_fun() ->    fun(M) ->	    otp_4956_mg_verify_pending_msg(M)    end.-endif.otp_4956_mg_verify_pending_msg(#'MegacoMessage'{mess = Mess} = M) ->    print("otp_4956_mg_verify_pending_msg -> entry with"	  "~n~p", [M]),    #'Message'{messageBody = Body} = Mess,    {transactions, [Trans]} = Body,    {transactionPending, TP} = Trans,    #'TransactionPending'{transactionId = _Id} = TP,    print("otp_4956_mg_verify_pending_msg -> done~n", []),    {ok, M};otp_4956_mg_verify_pending_msg(M) ->    print("otp_4956_mg_verify_pending_msg -> entry with invalid message"	  "~n~p", [M]),    {error, {invalid_message, M}}.-ifndef(megaco_hipe_special).otp_4956_mg_verify_pending_limit_msg_fun() ->

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?