📄 megaco_trans_test.erl
字号:
CR = cre_cmdReq(CMD), cre_actionReq(Cid, [CR]).str_mg_service_change_request_msg(Mid, TransId, Cid) -> AR = str_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).str_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]).str_notify_request_msg(Mid, TransId, Rid, TermId, Cid) -> AR = str_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 single_trans_req test case%%str_err_desc(T) -> EC = ?megaco_internal_gateway_error, ET = lists:flatten(io_lib:format("~w",[T])), #'ErrorDescriptor'{errorCode = EC, errorText = ET}.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%multi_trans_req_timeout(suite) -> [];multi_trans_req_timeout(doc) -> [];multi_trans_req_timeout(Config) when list(Config) -> put(verbosity, ?TEST_VERBOSITY), put(sname, "TEST"), put(tc, multi_trans_req_timeout), 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 = mtrt_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 = mtrt_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(mtrt_mgc_verify_handle_connect_fun(), {?MODULE, mtrt_mgc_verify_handle_connect, []}).-define(mtrt_mgc_verify_service_change_req_fun(Mid), {?MODULE, mtrt_mgc_verify_service_change_req, [Mid]}).-define(mtrt_mgc_verify_notify_req_fun(), {?MODULE, mtrt_mgc_verify_notify_request, []}).-define(mtrt_mgc_verify_handle_disconnect_fun(), {?MODULE, mtrt_mgc_verify_handle_disconnect, []}).-else.-define(mtrt_mgc_verify_handle_connect_fun(), fun mtrt_mgc_verify_handle_connect/1).-define(mtrt_mgc_verify_service_change_req_fun(Mid), mtrt_mgc_verify_service_change_req_fun(Mid)).-define(mtrt_mgc_verify_notify_req_fun(), mtrt_mgc_verify_notify_request_fun()).-define(mtrt_mgc_verify_handle_disconnect_fun(), fun mtrt_mgc_verify_handle_disconnect/1).-endif.mtrt_mgc_event_sequence(text, tcp) -> Mid = {deviceName,"ctrl"}, RI = [ {port, 2944}, {encoding_module, megaco_pretty_text_encoder}, {encoding_config, []}, {transport_module, megaco_tcp} ], ConnectVerify = ?mtrt_mgc_verify_handle_connect_fun(), ServiceChangeReqVerify = ?mtrt_mgc_verify_service_change_req_fun(Mid), NotifyReqVerify = ?mtrt_mgc_verify_notify_req_fun(), DiscoVerify = ?mtrt_mgc_verify_handle_disconnect_fun(), %% ConnectVerify = fun mtrt_mgc_verify_handle_connect/1,%% ServiceChangeReqVerify = mtrt_mgc_verify_service_change_req_fun(Mid),%% NotifyReqVerify = mtrt_mgc_verify_notify_request_fun(),%% DiscoVerify = fun mtrt_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.mtrt_mgc_verify_handle_connect({handle_connect, CH, ?VERSION}) -> io:format("mtrt_mgc_verify_handle_connect -> ok" "~n CH: ~p~n", [CH]), {ok, CH, ok};mtrt_mgc_verify_handle_connect(Else) -> io:format("mtrt_mgc_verify_handle_connect -> unknown" "~n Else: ~p~n", [Else]), {error, Else, ok}.mtrt_mgc_verify_service_change_req_fun(Mid) -> fun(Ev) -> mtrt_mgc_verify_service_change_req(Ev, Mid) end.mtrt_mgc_verify_service_change_req( {handle_trans_request, _, ?VERSION, [AR]}, Mid) -> io:format("mtrt_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, [mtrt_mgc_service_change_reply_ar(Mid, 1)]}, {ok, AR, Reply}; _ -> Err = {invalid_SCP, Parms}, ED = mtrt_err_desc(Parms), ErrReply = {discard_ack, ED}, {error, Err, ErrReply} end; _ -> Err = {invalid_termination_id, Tid}, ED = mtrt_err_desc(Tid), ErrReply = {discard_ack, ED}, {error, Err, ErrReply} end; _ -> Err = {invalid_command, Cmd}, ED = mtrt_err_desc(Cmd), ErrReply = {discard_ack, ED}, {error, Err, ErrReply} end; _ -> Err = {invalid_command_request, CR}, ED = mtrt_err_desc(CR), ErrReply = {discard_ack, ED}, {error, Err, ErrReply} end; _ -> Err = {invalid_action_request, AR}, ED = mtrt_err_desc(AR), ErrReply = {discard_ack, ED}, {error, Err, ErrReply} end;mtrt_mgc_verify_service_change_req(Else, _Mid) -> io:format("mtrt_mgc_verify_service_change_req -> unknown" "~n Else: ~p~n", [Else]), ED = mtrt_err_desc(Else), ErrReply = {discard_ack, ED}, {error, Else, ErrReply}.mtrt_mgc_verify_notify_request_fun() -> fun(Ev) -> mtrt_mgc_verify_notify_request(Ev) end.mtrt_mgc_verify_notify_request({handle_trans_request, _, ?VERSION, [AR]}) -> io:format("mtrt_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, [mtrt_mgc_notify_reply_ar(Cid, Tid)]}, {ok, AR, Reply}; _ -> ED = mtrt_err_desc(AR), ErrReply = {discard_ack, ED}, {error, AR, ErrReply} end;mtrt_mgc_verify_notify_request(Else) -> io:format("mtrt_mgc_verify_notify_request:fun -> unknown" "~n Else: ~p~n", [Else]), ED = mtrt_err_desc(Else), ErrReply = {discard_ack, ED}, {error, Else, ErrReply}.mtrt_mgc_verify_handle_disconnect({handle_disconnect, CH, ?VERSION, R}) -> io:format("mtrt_mgc_verify_handle_disconnect -> ok" "~n CH: ~p" "~n R: ~p" "~n", [CH, R]), {ok, CH, ok};mtrt_mgc_verify_handle_disconnect(Else) -> io:format("mtrt_mgc_verify_handle_disconnect -> unknown" "~n Else: ~p~n", [Else]), {error, Else, ok}.mtrt_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]).mtrt_mgc_service_change_reply_msg(Mid, TransId, Cid) -> AR = mtrt_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).mtrt_mgc_notify_reply_ar(Cid, TermId) -> NR = cre_notifyReply([TermId]), CR = cre_cmdReply(NR), cre_actionReply(Cid, [CR]).mtrt_mgc_notify_reply(Mid, TransId, Cid, TermId) -> AR = mtrt_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(mtrt_mg_verify_handle_connect_fun(), {?MODULE, mtrt_mg_verify_handle_connect, []}).-define(mtrt_mg_verify_service_change_reply_fun(), {?MODULE, mtrt_mg_verify_service_change_reply, []}).-define(mtrt_mg_verify_notify_reply_fun(), {?MODULE, mtrt_mg_verify_notify_reply, []}).-else.-define(mtrt_mg_verify_handle_connect_fun(), fun mtrt_mg_verify_handle_connect/1).-define(mtrt_mg_verify_service_change_reply_fun(), fun mtrt_mg_verify_service_change_reply/1).-define(mtrt_mg_verify_notify_reply_fun(), fun mtrt_mg_verify_notify_reply/1).-endif.mtrt_mg_event_sequence(text, tcp) -> Mid = {deviceName,"mg"}, RI = [ {port, 2944}, {encoding_module, megaco_pretty_text_encoder}, {encoding_config, []}, {transport_module, megaco_tcp} ], ServiceChangeReq = [mtrt_mg_service_change_request_ar(Mid, 1)], Tid = #megaco_term_id{id = ["00000000","00000000","01101101"]}, NotifyReq = [mtrt_mg_notify_request_ar(1, Tid, 1)], ConnectVerify = ?mtrt_mg_verify_handle_connect_fun(), ServiceChangeReplyVerify = ?mtrt_mg_verify_service_change_reply_fun(), NotifyReplyVerify = ?mtrt_mg_verify_notify_reply_fun(), EvSeq = [ {debug, true}, megaco_start, {megaco_start_user, Mid, RI, []}, start_transport, {megaco_trace, disable}, {megaco_system_info, users}, {megaco_system_info, connections}, connect, {megaco_callback, handle_connect, ConnectVerify}, megaco_connect, {megaco_cast, ServiceChangeReq, []}, {megaco_callback, handle_connect, ConnectVerify}, {megaco_callback, handle_trans_reply, ServiceChangeReplyVerify}, {sleep, 1000}, {megaco_system_info, users}, {megaco_system_info, connections}, {sleep, 1000}, {megaco_update_conn_info, trans_timer, 5000}, {megaco_update_conn_info, trans_req, true}, {megaco_conn_info, all}, {megaco_cast, NotifyReq, []}, {megaco_cast, NotifyReq, []}, {megaco_cast, NotifyReq, []}, {megaco_cast, NotifyReq, []}, {megaco_cast, NotifyReq, []}, {megaco_callback, handle_trans_reply, NotifyReplyVerify}, {megaco_callback, handle_trans_reply, NotifyReplyVerify}, {megaco_callback, handle_trans_reply, NotifyReplyVerify}, {megaco_callback, handle_trans_reply, NotifyReplyVerify}, {megaco_callback, handle_trans_reply, NotifyReplyVerify}, {sleep, 1000}, megaco_stop_user, megaco_stop, {sleep, 1000} ], EvSeq.mtrt_mg_verify_handle_connect({handle_connect, CH, ?VERSION}) -> io:format("mtrt_mg_verify_handle_connect -> ok" "~n CH: ~p~n", [CH]), {ok, CH, ok};mtrt_mg_verify_handle_connect(Else) -> io:format("mtrt_mg_verify_handle_connect -> unknown" "~n Else: ~p~n", [Else]),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -