megaco_pending_limit_test.erl

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

ERL
2,019
字号
    ServiceChangeReqVerify = 	?rle1_mgc_verify_service_change_req_msg_fun(Mid),    NotifyReqVerify = ?rle1_mgc_verify_notify_req_msg_fun(),%%     ServiceChangeReqVerify = %% 	rle1_mgc_verify_service_change_req_fun(Mid),%%     NotifyReqVerify = rle1_mgc_verify_notify_request_fun(),    EvSeq = 	[{debug,  true},	 {decode, DecodeFun},	 {encode, EncodeFun},	 {listen, 2944},	 {expect_accept, any},	 {expect_receive, "service-change-req", 	  {ServiceChangeReqVerify, 10000}}, 	 {send, "service-change-reply", ServiceChangeReply}, 	 {expect_receive, "notify-request", {NotifyReqVerify, 5000}},	 {sleep, 100},	 {send, "pending 1", Pending}, 	 {sleep, 100},	 {send, "pending 2", Pending}, 	 {sleep, 100},	 {send, "pending 3", Pending}, 	 {sleep, 100},	 {send, "pending 4", Pending}, 	 {sleep, 100},	 {send, "pending 5", Pending}, 	 {sleep, 1000},	 disconnect	 ],    EvSeq.rle1_mgc_encode_msg_fun(Mod, Conf) ->    fun(M) ->            encode_msg(M, Mod, Conf)    end.rle1_mgc_decode_msg_fun(Mod, Conf) ->    fun(M) ->            decode_msg(M, Mod, Conf)    end.rle1_mgc_service_change_reply_msg(Mid, TransId, Cid) ->    SCRP  = #'ServiceChangeResParm'{serviceChangeMgcId = Mid},    SCRPs = {serviceChangeResParms,SCRP},    Root  = #megaco_term_id{id = ["root"]},    SCR   = #'ServiceChangeReply'{terminationID       = [Root],                                  serviceChangeResult = SCRPs},    CR    = {serviceChangeReply, SCR},    rle1_mgc_msg(Mid, TransId, CR, Cid).     rle1_mgc_msg(Mid, TransId, CR, Cid) ->    AR  = #'ActionReply'{contextId    = Cid,                         commandReply = [CR]},    ARs  = {actionReplies, [AR]},    TR   = #'TransactionReply'{transactionId     = TransId,                               transactionResult = ARs},    Body = {transactions, [{transactionReply, TR}]},    Mess = #'Message'{version     = 1,                      mId         = Mid,                      messageBody = Body},    #'MegacoMessage'{mess = Mess}.     rle1_mgc_pending_msg(Mid, TransId) ->    TP   = #'TransactionPending'{transactionId = TransId},    Body = {transactions, [{transactionPending, TP}]},    Mess = #'Message'{version     = 1,                      mId         = Mid,                      messageBody = Body},    #'MegacoMessage'{mess = Mess}.-ifndef(megaco_hipe_special).rle1_mgc_verify_service_change_req_msg_fun(Mid) ->    fun(M) ->	    rle1_mgc_verify_service_change_req_msg(M, Mid)    end.-endif.rle1_mgc_verify_service_change_req_msg(#'MegacoMessage'{mess = Mess} = M,				       _Mid1) ->    io:format("rle1_mgc_verify_service_change_req_msg -> entry with"	      "~n   M: ~p"	      "~n", [M]),    #'Message'{version     = _V,	       mId         = _Mid2,	       messageBody = Body} = Mess,    {transactions, [Trans]} = Body,    {transactionRequest, TR} = Trans,    #'TransactionRequest'{transactionId = _Tid,			  actions = [AR]} = TR,    #'ActionRequest'{contextId = _Cid,		     contextRequest = _CtxReq,		     contextAttrAuditReq = _CtxAar,		     commandRequests = [CR]} = AR,    #'CommandRequest'{command = Cmd,		      optional = _Opt,		      wildcardReturn = _WR} = CR,    {serviceChangeReq, SCR} = Cmd,    #'ServiceChangeRequest'{terminationID = _TermID,			    serviceChangeParms = SCP} = SCR,    #'ServiceChangeParm'{serviceChangeMethod = restart,			 serviceChangeReason = [[$9,$0,$1|_]]} = SCP,    {ok, M};rle1_mgc_verify_service_change_req_msg(M, _Mid) ->    {error, {invalid_message, M}}.-ifndef(megaco_hipe_special).rle1_mgc_verify_notify_req_msg_fun() ->    fun(M) ->	    rle1_mgc_verify_notify_req_msg(M)    end.-endif.rle1_mgc_verify_notify_req_msg(#'MegacoMessage'{mess = Mess} = M) ->    io:format("rle1_mgc_verify_notify_req_msg -> entry with"	      "~n   M: ~p"	      "~n", [M]),    #'Message'{messageBody = Body} = Mess,    {transactions, [Trans]} = Body,    {transactionRequest, TR} = Trans,    #'TransactionRequest'{actions = [AR]} = TR,    io:format("rle1_mgc_verify_notify_request_fun -> AR: "	      "~n~p~n", [AR]),    #'ActionRequest'{commandRequests = [CR]} = AR,    #'CommandRequest'{command = Cmd} = CR,    {notifyReq, NR} = Cmd,    #'NotifyRequest'{observedEventsDescriptor = OED} = NR,    #'ObservedEventsDescriptor'{observedEventLst = [OE]} = OED,    #'ObservedEvent'{eventName = "al/of"} = OE,    {ok, M};rle1_mgc_verify_notify_req_msg(M) ->    {error, {invalid_message, M}}.    % rle1_err_desc(T) ->%     EC = ?megaco_internal_gateway_error,%     ET = lists:flatten(io_lib:format("~w",[T])),%     #'ErrorDescriptor'{errorCode = EC, errorText = ET}.%%%% MG generator stuff%% -ifdef(megaco_hipe_special).-define(rle1_mg_verify_handle_connect_fun(),	{?MODULE, rle1_mg_verify_handle_connect, []}).-define(rle1_mg_verify_service_change_rep_fun(),	{?MODULE, rle1_mg_verify_service_change_rep, []}).-define(rle1_mg_verify_trans_rep_fun(),	{?MODULE, rle1_mg_verify_trans_rep, []}).-else.-define(rle1_mg_verify_handle_connect_fun(),	fun rle1_mg_verify_handle_connect/1).-define(rle1_mg_verify_service_change_rep_fun(),	fun rle1_mg_verify_service_change_rep/1).-define(rle1_mg_verify_trans_rep_fun(),	fun rle1_mg_verify_trans_rep/1).-endif.rle1_mg_event_sequence(text, tcp) ->    Mid = {deviceName,"mg"},    RI = [          {port,             2944},          {encoding_module,  megaco_pretty_text_encoder},          {encoding_config,  []},          {transport_module, megaco_tcp}         ],    rle1_mg_event_sequence2(Mid, RI).rle1_mg_event_sequence2(Mid, RI) ->    ServiceChangeReq = [rle1_mg_service_change_request_ar(Mid, 1)],    Tid = #megaco_term_id{id = ["00000000","00000000","01101101"]},    NotifyReq = [rle1_mg_notify_request_ar(1, Tid, 1)],    ConnectVerify            = ?rle1_mg_verify_handle_connect_fun(),     ServiceChangeReplyVerify = ?rle1_mg_verify_service_change_rep_fun(),     TransReplyVerify         = ?rle1_mg_verify_trans_rep_fun(), %%     ConnectVerify            = fun rle1_mg_verify_handle_connect/1,%%     ServiceChangeReplyVerify = fun rle1_mg_verify_service_change_reply/1,%%     TransReplyVerify         = fun rle1_mg_verify_trans_reply/1,    EvSeq = [             {debug, true},             megaco_start,             {megaco_start_user, Mid, RI, []},	     {megaco_update_user_info, recv_pending_limit, 4},             start_transport,             {megaco_trace, disable}, %%100},             {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_cast, NotifyReq, []},             {megaco_callback, handle_trans_reply, TransReplyVerify},             {sleep, 1000},             megaco_stop_user,             megaco_stop,             {sleep, 1000}            ],    EvSeq.rle1_mg_verify_handle_connect({handle_connect, CH, ?VERSION}) ->     io:format("rle1_mg_verify_handle_connect -> ok"	      "~n   CH: ~p~n", [CH]),    {ok, CH, ok};rle1_mg_verify_handle_connect(Else) ->    io:format("rle1_mg_verify_handle_connect -> unknown"	      "~n   Else: ~p~n", [Else]),    {error, Else, ok}.rle1_mg_verify_service_change_rep(  {handle_trans_reply, _CH, ?VERSION, {ok, [AR]}, _}) ->    io:format("rle1_mg_verify_service_change_rep -> 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;rle1_mg_verify_service_change_rep(Else) ->    io:format("rle1_mg_verify_service_change_rep -> unknown"	      "~n   Else: ~p~n", [Else]),    {error, Else, ok}.rle1_mg_verify_trans_rep(  {handle_trans_reply, _CH, ?VERSION,    {error, exceeded_recv_pending_limit} = E, _}) ->    io:format("rle1_mg_verify_trans_rep -> expected error~n", []),    {ok, E    , error};rle1_mg_verify_trans_rep(Else) ->    io:format("rle1_mg_verify_trans_rep -> unknown"	      "~n   Else: ~p~n", [Else]),    {error, Else, error}.rle1_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]).rle1_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]).%% ---recv_limit_exceeded2(suite) ->    [];recv_limit_exceeded2(doc) ->    "Received pending limit exceeded";recv_limit_exceeded2(Config) when list(Config) ->    put(verbosity, ?TEST_VERBOSITY),    put(sname,     "TEST"),    put(tc,        rle2),    i("starting"),    _MgcNode = make_node_name(mgc),    _MgNode  = make_node_name(mg),    ?SKIP(not_yet_implemented).%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                                                                   %%%%%%                       Ticket test cases                           %%%%%%                                                                   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%otp_4956(suite) ->    [];otp_4956(Config) when list(Config) ->    put(verbosity, ?TEST_VERBOSITY),    put(sname,     "TEST"),    put(tc,        otp_4956),    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 = otp_4956_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 = otp_4956_mg_event_sequence(text, tcp),    i("wait some time before starting the MG simulation"),    sleep(1000),    d("[MG] start the simulation"),    megaco_test_generator:tcp(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, MgcReply})    end,    d("[MG] await the generator reply"),    case megaco_test_generator:tcp_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, 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(otp_4956_mgc_verify_handle_connect_fun(),         {?MODULE, otp_4956_mgc_verify_handle_connect, []}).-define(otp_4956_mgc_verify_service_change_req_fun(Mid),        {?MODULE, otp_4956_mgc_verify_service_change_req, [Mid]}).-define(otp_4956_mgc_verify_notify_req1_fun(),        {?MODULE, otp_4956_mgc_verify_notify_req1, []}).-define(otp_4956_mgc_verify_notify_req2_fun(),        {?MODULE, otp_4956_mgc_verify_notify_req2, []}).-define(otp_4956_mgc_verify_handle_trans_req_abort_fun(),        {?MODULE, otp_4956_mgc_verify_handle_trans_req_abort, []}).-define(otp_4956_mgc_verify_handle_disconnect_fun(),        {?MODULE, otp_4956_mgc_verify_handle_disconnect, []}).-else.-define(otp_4956_mgc_verify_handle_connect_fun(),         otp_4956_mgc_verify_handle_connect_fun()).-define(otp_4956_mgc_verify_service_change_req_fun(Mid),        otp_4956_mgc_verify_service_change_req_fun(Mid)).-define(otp_4956_mgc_verify_notify_req1_fun(),        otp_4956_mgc_verify_notify_req1_fun()).

⌨️ 快捷键说明

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