📄 megaco_trans_test.erl
字号:
Mid = {deviceName,"mg"}, RI = [ {port, 2944}, {encoding_module, megaco_pretty_text_encoder}, {encoding_config, []}, {transport_module, megaco_tcp} ], ServiceChangeReq = [mtrmc1_mg_service_change_request_ar(Mid, 1)], Tid = #megaco_term_id{id = ["00000000","00000000","01101101"]}, NotifyReq = [mtrmc1_mg_notify_request_ar(1, Tid, 1)], ConnectVerify = ?mtrmc1_mg_verify_handle_connect_fun(), ServiceChangeReplyVerify = ?mtrmc1_mg_verify_service_change_reply_fun(), NotifyReplyVerify = ?mtrmc1_mg_verify_notify_reply_fun(), %% ConnectVerify = fun mtrmc1_mg_verify_handle_connect/1,%% ServiceChangeReplyVerify = fun mtrmc1_mg_verify_service_change_reply/1,%% NotifyReplyVerify = fun mtrmc1_mg_verify_notify_reply/1, 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_req_maxcount, 5}, {megaco_update_conn_info, trans_req_maxsize, 4096}, {megaco_update_conn_info, trans_timer, 120000}, {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.mtrmc1_mg_verify_handle_connect({handle_connect, CH, ?VERSION}) -> io:format("mtrmc1_mg_verify_handle_connect -> ok" "~n CH: ~p~n", [CH]), {ok, CH, ok};mtrmc1_mg_verify_handle_connect(Else) -> io:format("mtrmc1_mg_verify_handle_connect -> unknown" "~n Else: ~p~n", [Else]), {error, Else, ok}.mtrmc1_mg_verify_service_change_reply({handle_trans_reply, _CH, ?VERSION, {ok, [AR]}, _}) -> io:format("mtrmc1_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;mtrmc1_mg_verify_service_change_reply(Else) -> io:format("mtrmc1_mg_verify_service_change_reply -> unknown" "~n Else: ~p~n", [Else]), {error, Else, ok}.mtrmc1_mg_verify_notify_reply({handle_trans_reply, _CH, ?VERSION, {ok, [AR]}, _}) -> io:format("mtrmc1_mg_verify_service_change_reply -> ok" "~n AR: ~p~n", [AR]), {ok, AR, ok};mtrmc1_mg_verify_notify_reply(Else) -> io:format("mtrmc1_mg_verify_service_change_reply -> unknown" "~n Else: ~p~n", [Else]), {error, Else, ok}.mtrmc1_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]).mtrmc1_mg_service_change_request_msg(Mid, TransId, Cid) -> AR = mtrmc1_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).mtrmc1_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]).mtrmc1_notify_request_msg(Mid, TransId, Rid, TermId, Cid) -> AR = mtrmc1_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%%mtrmc1_err_desc(T) -> EC = ?megaco_internal_gateway_error, ET = lists:flatten(io_lib:format("~w",[T])), #'ErrorDescriptor'{errorCode = EC, errorText = ET}.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%multi_trans_req_maxcount2(suite) -> [];multi_trans_req_maxcount2(doc) -> "Test that the message is sent when req_maxcount is reached " "with a request bigger then maxsize limit";multi_trans_req_maxcount2(Config) when list(Config) -> put(verbosity, ?TEST_VERBOSITY), put(sname, "TEST"), put(tc, multi_trans_req_maxcount2), 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 = mtrmc2_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 = mtrmc2_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, 30000) of {ok, MgcReply} -> d("[MGC] OK => MgcReply: ~n~p", [MgcReply]), ok; {error, MgcReply} -> d("[MGC] ERROR => MgcReply: ~n~p", [MgcReply]), ?ERROR({mgc_failed, MgcReply}) end, d("[MG] await the generator reply"), case megaco_test_generator:megaco_await_reply(Mg, 30000) of {ok, MgReply} -> d("[MG] OK => MgReply: ~n~p", [MgReply]), ok; {error, MgReply} -> d("[MG] ERROR => MgReply: ~n~p", [MgReply]), ?ERROR({mg_failed, MgReply}) 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(mtrmc2_mgc_verify_handle_connect_fun(), {?MODULE, mtrmc2_mgc_verify_handle_connect, []}).-define(mtrmc2_mgc_verify_service_change_req_fun(Mid), {?MODULE, mtrmc2_mgc_verify_service_change_req, [Mid]}).-define(mtrmc2_mgc_verify_notify_req_fun(), {?MODULE, mtrmc2_mgc_verify_notify_request, []}).-define(mtrmc2_mgc_verify_handle_disconnect_fun(), {?MODULE, mtrmc2_mgc_verify_handle_disconnect, []}).-else.-define(mtrmc2_mgc_verify_handle_connect_fun(), fun mtrmc2_mgc_verify_handle_connect/1).-define(mtrmc2_mgc_verify_service_change_req_fun(Mid), mtrmc2_mgc_verify_service_change_req_fun(Mid)).-define(mtrmc2_mgc_verify_notify_req_fun(), mtrmc2_mgc_verify_notify_request_fun()).-define(mtrmc2_mgc_verify_handle_disconnect_fun(), fun mtrmc2_mgc_verify_handle_disconnect/1).-endif.mtrmc2_mgc_event_sequence(text, tcp) -> Mid = {deviceName,"ctrl"}, RI = [ {port, 2944}, {encoding_module, megaco_pretty_text_encoder}, {encoding_config, []}, {transport_module, megaco_tcp} ], ConnectVerify = ?mtrmc2_mgc_verify_handle_connect_fun(), ServiceChangeReqVerify = ?mtrmc2_mgc_verify_service_change_req_fun(Mid), NotifyReqVerify = ?mtrmc2_mgc_verify_notify_req_fun(), DiscoVerify = ?mtrmc2_mgc_verify_handle_disconnect_fun(), %% ConnectVerify = fun mtrmc2_mgc_verify_handle_connect/1,%% ServiceChangeReqVerify = mtrmc2_mgc_verify_service_change_req_fun(Mid),%% NotifyReqVerify = mtrmc2_mgc_verify_notify_request_fun(),%% DiscoVerify = fun mtrmc2_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.mtrmc2_mgc_verify_handle_connect({handle_connect, CH, ?VERSION}) -> io:format("mtrmc2_mgc_verify_handle_connect -> ok" "~n CH: ~p~n", [CH]), {ok, CH, ok};mtrmc2_mgc_verify_handle_connect(Else) -> io:format("mtrmc2_mgc_verify_handle_connect -> unknown" "~n Else: ~p~n", [Else]), {error, Else, ok}.mtrmc2_mgc_verify_service_change_req_fun(Mid) -> fun(Ev) -> mtrmc2_mgc_verify_service_change_req(Ev, Mid) end.mtrmc2_mgc_verify_service_change_req( {handle_trans_request, _, ?VERSION, [AR]}, Mid) -> io:format("mtrmc2_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, [mtrmc2_mgc_service_change_reply_ar(Mid, 1)]}, {ok, AR, Reply}; _ -> Err = {invalid_SCP, Parms}, ED = mtrmc2_err_desc(Parms), ErrReply = {discard_ack, ED}, {error, Err, ErrReply} end; _ -> Err = {invalid_termination_id, Tid}, ED = mtrmc2_err_desc(Tid), ErrReply = {discard_ack, ED}, {error, Err, ErrReply} end; _ -> Err = {invalid_command, Cmd}, ED = mtrmc2_err_desc(Cmd), ErrReply = {discard_ack, ED}, {error, Err, ErrReply} end; _ -> Err = {invalid_command_request, CR}, ED = mtrmc2_err_desc(CR), ErrReply = {discard_ack, ED}, {error, Err, ErrReply} end; _ -> Err = {invalid_action_request, AR}, ED = mtrmc2_err_desc(AR), ErrReply = {discard_ack, ED}, {error, Err, ErrReply} end;mtrmc2_mgc_verify_service_change_req(Else, _Mid) -> io:format("mtrmc2_mgc_verify_service_change_req -> unknown" "~n Else: ~p~n", [Else]), ED = mtrmc2_err_desc(Else), ErrReply = {discard_ack, ED}, {error, Else, ErrReply}.mtrmc2_mgc_verify_notify_request_fun() -> fun(Ev) -> mtrmc2_mgc_verify_notify_request(Ev) end.mtrmc2_mgc_verify_notify_request({handle_trans_request, _, ?VERSION, [AR]}) -> io:format("mtrmc2_mgc_verify_notify_request:fun -> ok" "~n AR: ~p~n", [AR]), case AR of #'ActionRequest'{contextId = Cid, commandRequests = [CR]} -> io:format("mtrmc2_mgc_verify_notify_request:fun -> " "single command",[]), #'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, [mtrmc2_mgc_notify_reply_ar1(Cid, Tid)]}, {ok, AR, Reply}; #'ActionRequest'{contextId = Cid, commandRequests = CRs} -> io:format("mtrmc2_mgc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -