⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 megaco_trans_test.erl

📁 OTP是开放电信平台的简称
💻 ERL
📖 第 1 页 / 共 5 页
字号:
    {error, Else, ok}.mtrt_mg_verify_service_change_reply({handle_trans_reply, _CH, ?VERSION, 				     {ok, [AR]}, _}) ->    io:format("mtrt_mg_verify_service_change_reply -> ok"	      "~n   AR: ~p~n", [AR]),    case AR of	#'ActionReply'{commandReply = [SCR]} ->	    case SCR of		{serviceChangeReply,		 #'ServiceChangeReply'{terminationID = [Tid],				       serviceChangeResult = Res}} ->		    case Tid of			#megaco_term_id{contains_wildcards = false, 					id = ["root"]} ->			    case Res of				{serviceChangeResParms,				 #'ServiceChangeResParm'{				   serviceChangeMgcId = _RemoteMid}} ->				    {ok, AR, ok};				{Tag, Val} ->				    Err = {invalid_service_change_result, 					   Tag, Val},				    {error, Err, ok}			    end;			_ ->			    Err = {invalid_termination_id, Tid},			    {error, Err, ok}		    end;		{Tag, Val} ->		    Err = {invalid_command_reply, Tag, Val},		    {error, Err, ok}	    end;	_ ->	    Err = {invalid_action_reply, AR},	    {error, Err, ok}    end;mtrt_mg_verify_service_change_reply(Else) ->    io:format("mtrt_mg_verify_service_change_reply -> unknown"	      "~n   Else: ~p~n", [Else]),    {error, Else, ok}.mtrt_mg_verify_notify_reply({handle_trans_reply, _CH, ?VERSION, 			     {ok, [AR]}, _}) ->    io:format("mtrt_mg_verify_service_change_reply -> ok"	      "~n   AR: ~p~n", [AR]),    {ok, AR, ok};mtrt_mg_verify_notify_reply(Else) ->    io:format("mtrt_mg_verify_service_change_reply -> unknown"	      "~n   Else: ~p~n", [Else]),    {error, Else, ok}.mtrt_mg_service_change_request_ar(_Mid, Cid) ->    Prof  = cre_serviceChangeProf("resgw", 1),    SCP   = cre_serviceChangeParm(restart, ["901 mg col boot"], Prof),    Root  = #megaco_term_id{id = ["root"]},    SCR   = cre_serviceChangeReq([Root], SCP),    CMD   = cre_command(SCR),    CR    = cre_cmdReq(CMD),    cre_actionReq(Cid, [CR]).mtrt_mg_service_change_request_msg(Mid, TransId, Cid) ->    AR    = mtrt_mg_service_change_request_ar(Mid, Cid),    TR    = cre_transReq(TransId, [AR]),    Trans = cre_transaction(TR),    Mess  = cre_message(?VERSION, Mid, cre_transactions([Trans])),    cre_megacoMessage(Mess).mtrt_mg_notify_request_ar(Rid, Tid, Cid) ->    TT      = cre_timeNotation("19990729", "22000000"),    Ev      = cre_obsEvent("al/of", TT),    EvsDesc = cre_obsEvsDesc(Rid, [Ev]),    NR      = cre_notifyReq([Tid], EvsDesc),    CMD     = cre_command(NR),    CR      = cre_cmdReq(CMD),    cre_actionReq(Cid, [CR]).mtrt_notify_request_msg(Mid, TransId, Rid, TermId, Cid) ->    AR      = mtrt_mg_notify_request_ar(Rid, TermId, Cid),    TR      = cre_transReq(TransId, [AR]),    Trans   = cre_transaction(TR),    Mess    = cre_message(?VERSION, Mid, cre_transactions([Trans])),    cre_megacoMessage(Mess).%%%% Common functions for the multi_trans_req_timeout test case%%mtrt_err_desc(T) ->    EC = ?megaco_internal_gateway_error,    ET = lists:flatten(io_lib:format("~w",[T])),    #'ErrorDescriptor'{errorCode = EC, errorText = ET}.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%multi_trans_req_maxcount1(suite) ->    [];multi_trans_req_maxcount1(doc) ->    "Test that a message is sent when req_maxcount is reached";multi_trans_req_maxcount1(Config) when list(Config) ->    put(verbosity, ?TEST_VERBOSITY),    put(sname,     "TEST"),    put(tc,        multi_trans_req_maxcount1),    i("starting"),    MgcNode = make_node_name(mgc),    MgNode  = make_node_name(mg),    d("start nodes: "      "~n   MgcNode: ~p"      "~n   MgNode:  ~p",       [MgcNode, MgNode]),    ok = megaco_test_lib:start_nodes([MgcNode, MgNode], ?FILE, ?LINE),    d("[MGC] start the simulator "),    {ok, Mgc} = megaco_test_generator:start_link("MGC", MgcNode),    d("[MGC] create the event sequence"),    MgcEvSeq = mtrmc1_mgc_event_sequence(text, tcp),    i("wait some time before starting the MGC simulation"),    sleep(1000),    d("[MGC] start the simulation"),    megaco_test_generator:megaco(Mgc, MgcEvSeq),    i("wait some time before starting the MG simulator"),    sleep(1000),    d("[MG] start the simulator (generator)"),    {ok, Mg} = megaco_test_generator:start_link("MG", MgNode),    d("[MG] create the event sequence"),    MgEvSeq = mtrmc1_mg_event_sequence(text, tcp),    i("wait some time before starting the MG simulation"),    sleep(1000),    d("[MG] start the simulation"),    megaco_test_generator:megaco(Mg, MgEvSeq),    d("[MGC] await the generator reply"),    case megaco_test_generator:megaco_await_reply(Mgc) of	{ok, MgcReply} ->	    d("[MGC] OK => MgcReply: ~n~p", [MgcReply]),	    ok;	{error, MgcReply} ->	    d("[MGC] ERROR => MgcReply: ~n~p", [MgcReply]),	    ?ERROR(mgc_failed)		end,    d("[MG] await the generator reply"),    case megaco_test_generator:megaco_await_reply(Mg) of	{ok, MgReply} ->	    d("[MG] OK => MgReply: ~n~p", [MgReply]),	    ok;	{error, MgReply} ->	    d("[MG] ERROR => MgReply: ~n~p", [MgReply]),	    ?ERROR(mg_failed)		end,    %% Tell Mgc to stop    i("[MGC] stop generator"),    megaco_test_generator:stop(Mgc),    %% Tell Mg to stop    i("[MG] stop generator"),    megaco_test_generator:stop(Mg),    i("done", []),    ok.%%%% MGC generator stuff%% -ifdef(megaco_hipe_special).-define(mtrmc1_mgc_verify_handle_connect_fun(),         {?MODULE, mtrmc1_mgc_verify_handle_connect, []}).-define(mtrmc1_mgc_verify_service_change_req_fun(Mid),        {?MODULE, mtrmc1_mgc_verify_service_change_req, [Mid]}).-define(mtrmc1_mgc_verify_notify_req_fun(),        {?MODULE, mtrmc1_mgc_verify_notify_request, []}).-define(mtrmc1_mgc_verify_handle_disconnect_fun(),        {?MODULE, mtrmc1_mgc_verify_handle_disconnect, []}).-else.-define(mtrmc1_mgc_verify_handle_connect_fun(),         fun mtrmc1_mgc_verify_handle_connect/1).-define(mtrmc1_mgc_verify_service_change_req_fun(Mid),        mtrmc1_mgc_verify_service_change_req_fun(Mid)).-define(mtrmc1_mgc_verify_notify_req_fun(),	mtrmc1_mgc_verify_notify_request_fun()).-define(mtrmc1_mgc_verify_handle_disconnect_fun(),	fun mtrmc1_mgc_verify_handle_disconnect/1).-endif.mtrmc1_mgc_event_sequence(text, tcp) ->    Mid = {deviceName,"ctrl"},    RI = [	  {port,             2944},	  {encoding_module,  megaco_pretty_text_encoder},	  {encoding_config,  []},	  {transport_module, megaco_tcp}	 ],    ConnectVerify          = ?mtrmc1_mgc_verify_handle_connect_fun(),     ServiceChangeReqVerify = ?mtrmc1_mgc_verify_service_change_req_fun(Mid),    NotifyReqVerify        = ?mtrmc1_mgc_verify_notify_req_fun(),    DiscoVerify            = ?mtrmc1_mgc_verify_handle_disconnect_fun(), %%     ConnectVerify = fun mtrmc1_mgc_verify_handle_connect/1,%%     ServiceChangeReqVerify = mtrmc1_mgc_verify_service_change_req_fun(Mid),%%     NotifyReqVerify = mtrmc1_mgc_verify_notify_request_fun(),%%     DiscoVerify = fun mtrmc1_mgc_verify_handle_disconnect/1,    EvSeq = [	     {debug, true},	     {megaco_trace, disable},	     megaco_start,	     {megaco_start_user, Mid, RI, []},	     start_transport,	     listen,	     {megaco_callback, handle_connect, ConnectVerify},	     {megaco_callback, handle_trans_request, ServiceChangeReqVerify},	     {megaco_callback, handle_trans_request, NotifyReqVerify},	     {megaco_callback, handle_trans_request, NotifyReqVerify},	     {megaco_callback, handle_trans_request, NotifyReqVerify},	     {megaco_callback, handle_trans_request, NotifyReqVerify},	     {megaco_callback, handle_trans_request, NotifyReqVerify},	     {megaco_callback, handle_disconnect, DiscoVerify},	     {sleep, 1000},	     megaco_stop_user,	     megaco_stop	    ],    EvSeq.mtrmc1_mgc_verify_handle_connect({handle_connect, CH, ?VERSION}) ->     io:format("mtrmc1_mgc_verify_handle_connect -> ok"	      "~n   CH: ~p~n", [CH]),    {ok, CH, ok};mtrmc1_mgc_verify_handle_connect(Else) ->    io:format("mtrmc1_mgc_verify_handle_connect -> unknown"	      "~n   Else: ~p~n", [Else]),    {error, Else, ok}.mtrmc1_mgc_verify_service_change_req_fun(Mid) ->    fun(Ev) ->	    mtrmc1_mgc_verify_service_change_req(Ev, Mid)    end.mtrmc1_mgc_verify_service_change_req(  {handle_trans_request, _, ?VERSION, [AR]}, Mid) ->    io:format("mtrmc1_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, 						 [mtrmc1_mgc_service_change_reply_ar(Mid, 1)]},					    {ok, AR, Reply};					_ ->					    Err = {invalid_SCP, Parms},					    ED = mtrmc1_err_desc(Parms),					    ErrReply = {discard_ack, 							ED},					    {error, Err, ErrReply}				    end;				_ ->				    Err = {invalid_termination_id, Tid},				    ED = mtrmc1_err_desc(Tid),				    ErrReply = {discard_ack, ED},				    {error, Err, ErrReply}			    end;			_ ->			    Err = {invalid_command, Cmd},			    ED = mtrmc1_err_desc(Cmd),			    ErrReply = {discard_ack, ED},			    {error, Err, ErrReply}		    end;		_ ->		    Err = {invalid_command_request, CR},		    ED = mtrmc1_err_desc(CR),		    ErrReply = {discard_ack, ED},		    {error, Err, ErrReply}	    end;	_ ->	    Err = {invalid_action_request, AR},	    ED = mtrmc1_err_desc(AR),	    ErrReply = {discard_ack, ED},	    {error, Err, ErrReply}    end;mtrmc1_mgc_verify_service_change_req(Else, _Mid) ->    io:format("mtrmc1_mgc_verify_service_change_req -> unknown"	      "~n   Else: ~p~n", [Else]),    ED = mtrmc1_err_desc(Else),    ErrReply = {discard_ack, ED},    {error, Else, ErrReply}.mtrmc1_mgc_verify_notify_request_fun() ->    fun(Ev) ->	    mtrmc1_mgc_verify_notify_request(Ev)    end.mtrmc1_mgc_verify_notify_request({handle_trans_request, _, ?VERSION, [AR]}) ->    io:format("mtrmc1_mgc_verify_notify_request:fun -> ok"	      "~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, [mtrmc1_mgc_notify_reply_ar(Cid, Tid)]},	    {ok, AR, Reply};	_ ->	    ED = mtrmc1_err_desc(AR),	    ErrReply = {discard_ack, ED},	    {error, AR, ErrReply}    end;mtrmc1_mgc_verify_notify_request(Else) ->    io:format("mtrmc1_mgc_verify_notify_request:fun -> unknown"	      "~n   Else: ~p~n", [Else]),    ED = mtrmc1_err_desc(Else),    ErrReply = {discard_ack, ED},    {error, Else, ErrReply}.mtrmc1_mgc_verify_handle_disconnect({handle_disconnect, CH, ?VERSION, R}) ->     io:format("mtrmc1_mgc_verify_handle_disconnect -> ok"	      "~n   CH: ~p"	      "~n   R:  ~p"	      "~n", [CH, R]),    {ok, CH, ok};mtrmc1_mgc_verify_handle_disconnect(Else) ->    io:format("mtrmc1_mgc_verify_handle_disconnect -> unknown"	      "~n   Else: ~p~n", [Else]),    {error, Else, ok}.mtrmc1_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),    cre_actionReply(Cid, [CR]).mtrmc1_mgc_service_change_reply_msg(Mid, TransId, Cid) ->    AR    = mtrmc1_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).mtrmc1_mgc_notify_reply_ar(Cid, TermId) ->    NR    = cre_notifyReply([TermId]),    CR    = cre_cmdReply(NR),    cre_actionReply(Cid, [CR]).mtrmc1_mgc_notify_reply(Mid, TransId, Cid, TermId) ->    AR    = mtrmc1_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(mtrmc1_mg_verify_handle_connect_fun(),         {?MODULE, mtrmc1_mg_verify_handle_connect, []}).-define(mtrmc1_mg_verify_service_change_reply_fun(),        {?MODULE, mtrmc1_mg_verify_service_change_reply, []}).-define(mtrmc1_mg_verify_notify_reply_fun(),        {?MODULE, mtrmc1_mg_verify_notify_reply, []}).-else.-define(mtrmc1_mg_verify_handle_connect_fun(),         fun mtrmc1_mg_verify_handle_connect/1).-define(mtrmc1_mg_verify_service_change_reply_fun(),        fun mtrmc1_mg_verify_service_change_reply/1).-define(mtrmc1_mg_verify_notify_reply_fun(),	fun mtrmc1_mg_verify_notify_reply/1).-endif.mtrmc1_mg_event_sequence(text, tcp) ->

⌨️ 快捷键说明

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