megaco_mess_test.erl
来自「OTP是开放电信平台的简称」· ERL 代码 · 共 2,078 行 · 第 1/5 页
ERL
2,078 行
%% ``The contents of this file are subject to the Erlang Public License,%% Version 1.1, (the "License"); you may not use this file except in%% compliance with the License. You should have received a copy of the%% Erlang Public License along with this software. If not, it can be%% retrieved via the world wide web at http://www.erlang.org/.%% %% Software distributed under the License is distributed on an "AS IS"%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See%% the License for the specific language governing rights and limitations%% under the License.%% %% The Initial Developer of the Original Code is Ericsson Utvecklings AB.%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings%% AB. All Rights Reserved.''%% %% $Id$%%%%----------------------------------------------------------------------%% Purpose: Verify the implementation of the ITU-T protocol H.248%%----------------------------------------------------------------------%% Run the entire test suite with:%% %% megaco_test_lib:t(megaco_test).%% megaco_test_lib:t({megaco_test, all}).%% %% Or parts of it:%% %% megaco_test_lib:t({megaco_test, accept}).%%-----------------------------------------------------------------------module(megaco_mess_test).%% -compile(export_all).-export([ all/1, init_per_testcase/2, fin_per_testcase/2, connect/1, request_and_reply/1, request_and_reply_plain/1, request_and_no_reply/1, request_and_reply_pending_ack_no_pending/1, request_and_reply_pending_ack_one_pending/1, single_trans_req_and_reply/1, single_trans_req_and_reply_sendopts/1, request_and_reply_and_ack/1, request_and_reply_and_no_ack/1, request_and_reply_and_late_ack/1, trans_req_and_reply_and_req/1, pending_ack/1, pending_ack_plain/1, request_and_pending_and_late_reply/1, dist/1, tickets/1, otp_4359/1, otp_4836/1, otp_5805/1, otp_5881/1, otp_5887/1, otp_6253/1, otp_6275/1, otp_6276/1, otp_6442/1, otp_6442_resend_request1/1, otp_6442_resend_request2/1, otp_6442_resend_reply1/1, otp_6442_resend_reply2/1 ]).%% -behaviour(megaco_user).-export([ handle_connect/3, handle_disconnect/4, handle_syntax_error/4, handle_message_error/4, handle_trans_request/4, handle_trans_long_request/4, handle_trans_reply/5, handle_trans_ack/5, handle_unexpected_trans/4, handle_trans_request_abort/5 ]).%% -behaviour(megaco_transport).-export([ send_message/2, unblock/1 ]).-ifdef(megaco_hipe_special).-export([ %% Case: request_and_reply_pending_ack_no_pending rarpanp_mgc_verify_handle_connect/1, rarpanp_mgc_verify_service_change_req/2, rarpanp_mgc_verify_notify_request/1, rarpanp_mgc_verify_handle_disconnect/1, rarpanp_mg_verify_service_change_rep_msg/1, rarpanp_mg_verify_notify_rep_msg/3, %% Case: request_and_reply_pending_ack_one_pending rarpaop_mgc_verify_handle_connect/1, rarpaop_mgc_verify_service_change_req/2, rarpaop_mgc_verify_notify_request/1, rarpaop_mgc_verify_reply_ack/1, rarpaop_mgc_verify_handle_disconnect/1, rarpaop_mg_verify_service_change_rep_msg/1, rarpaop_mg_verify_pending_msg/2, rarpaop_mg_verify_notify_rep_msg/3, %% Case: single_trans_req_and_reply strar_mgc_verify_handle_connect/1, strar_mgc_verify_service_change_req/2, strar_mgc_verify_notify_request/1, strar_mgc_verify_handle_disconnect/1, strar_mg_verify_handle_connect/1, strar_mg_verify_service_change_reply/1, strar_mg_verify_notify_reply/1, %% Case: single_trans_req_and_reply_sendopts straro_mgc_verify_handle_connect/1, straro_mgc_verify_service_change_req/2, straro_mgc_verify_notify_request/1, straro_mgc_verify_handle_trans_ack/1, straro_mg_verify_handle_connect/1, straro_mg_verify_service_change_reply/1, straro_mg_verify_handle_disconnect/1, %% Case: request_and_reply_and_ack raraa_mgc_verify_handle_connect/1, raraa_mgc_verify_service_change_req/2, raraa_mgc_verify_notify_req/1, raraa_mgc_verify_handle_trans_ack/1, raraa_mgc_verify_handle_disconnect/1, raraa_mg_verify_service_change_rep_msg/1, raraa_mg_verify_notify_rep_msg/5, %% Case: request_and_reply_and_no_ack rarana_mgc_verify_handle_connect/1, rarana_mgc_verify_service_change_req/2, rarana_mgc_verify_notify_req/1, rarana_mgc_verify_handle_trans_ack/1, rarana_mgc_verify_handle_disconnect/1, rarana_mg_verify_service_change_rep_msg/1, rarana_mg_verify_notify_rep_msg/5, %% Case: request_and_reply_and_late_ack rarala_mgc_verify_handle_connect/1, rarala_mgc_verify_service_change_req/2, rarala_mgc_verify_notify_req/1, rarala_mgc_verify_handle_trans_ack/1, rarala_mgc_verify_handle_disconnect/1, rarala_mg_verify_service_change_rep_msg/1, rarala_mg_verify_notify_rep_msg/5, %% Case: trans_req_and_reply_and_req trarar_mgc_verify_handle_connect/1, trarar_mgc_verify_service_change_req/2, trarar_mgc_verify_notify_req/2, trarar_mgc_verify_handle_disconnect/1, trarar_mg_verify_service_change_rep_msg/1, trarar_mg_verify_notify_rep_msg/5, %% Case: pending_ack_plain pap_mgc_verify_handle_connect/1, pap_mgc_verify_service_change_req/2, pap_mgc_verify_notify_req/1, pap_mgc_verify_notify_req_long/1, pap_mgc_verify_handle_trans_ack/1, pap_mgc_verify_handle_disconnect/1, pap_mg_verify_service_change_rep_msg/1, pap_mg_verify_pending_msg/2, pap_mg_verify_notify_rep_msg/5, %% Case: request_and_pending_and_late_reply rapalr_mgc_verify_service_change_req_msg/1, rapalr_mgc_verify_notify_req_msg/5, rapalr_mgc_verify_trans_ack_msg/2, rapalr_mg_verify_handle_connect/1, rapalr_mg_verify_service_change_rep/1, rapalr_mg_verify_notify_rep/1, %% Case: otp_4836 otp_4836_mgc_verify_service_change_req_msg/1, otp_4836_mgc_verify_notify_req_msg/1, %% Case: otp_5805 otp_5805_mgc_verify_handle_connect/1, otp_5805_mgc_verify_service_change_req/2, otp_5805_mgc_verify_handle_syntax_error/1, otp_5805_mgc_verify_handle_disconnect/1, otp_5805_mg_verify_service_change_rep_msg/1, otp_5805_mg_verify_error_descriptor_msg/1, %% Case: otp_5881 otp_5881_mgc_verify_service_change_req_msg/1, otp_5881_mgc_verify_notify_req_msg/1, %% Case: otp_5887 otp_5887_mgc_verify_service_change_req_msg/1, otp_5887_mgc_verify_notify_req_msg/1, %% Case: otp_6275 otp_6275_mgc_verify_service_change_req_msg/1, otp_6275_mgc_verify_notify_rep_msg/1, otp_6275_mg_verify_handle_connect/1, otp_6275_mg_verify_notify_req/1, otp_6275_mg_verify_handle_trans_rep/1, %% Case: otp_6442_resend_request1 otp_6442_resend_request1_mg_verify_handle_connect/1, otp_6442_resend_request1_mg_verify_service_change_rep/1, otp_6442_resend_request1_mg_verify_notify_rep/1, %% Case: otp_6442_resend_request2 otp_6442_resend_request2_mg_verify_handle_connect/1, otp_6442_resend_request2_mg_verify_service_change_rep/1, otp_6442_resend_request2_mg_verify_notify_rep/1, %% Case: otp_6442_resend_reply1 otp_6442_resend_reply1_mg_verify_handle_connect/1, otp_6442_resend_reply1_mg_verify_service_change_rep/1, otp_6442_resend_reply1_mg_verify_notify_req/2, otp_6442_resend_reply1_mg_verify_ack/1, %% Case: otp_6442_resend_reply2 otp_6442_resend_reply2_mg_verify_handle_connect/1, otp_6442_resend_reply2_mg_verify_service_change_rep/1, otp_6442_resend_reply2_mg_verify_notify_req/2, otp_6442_resend_reply2_mg_verify_ack/1, %% Utility encode_msg/3, decode_msg/3 ]).-endif.-include_lib("megaco/include/megaco.hrl").-include_lib("megaco/include/megaco_message_v1.hrl").-include("megaco_test_lib.hrl").-define(VERSION, 1).-define(TEST_VERBOSITY, debug).-define(MGC_VERBOSITY, debug).-define(MG_VERBOSITY, debug).-define(MGC_START(Pid, Mid, ET, Conf, Verb), megaco_test_mgc:start(Pid, Mid, ET, Conf, Verb)).-define(MGC_STOP(Pid), megaco_test_mgc:stop(Pid)).-define(MGC_REQ_PEND(Pid,To), megaco_test_mgc:request_pending(Pid,To)).-define(MGC_REQ_HP(Pid,To), megaco_test_mgc:request_handle_pending(Pid,To)).-define(MGC_ACK_INFO(Pid), megaco_test_mgc:ack_info(Pid,self())).-define(MG_START(Pid, Mid, Enc, Transp, Conf, Verb), megaco_test_mg:start(Pid, Mid, Enc, Transp, Conf, Verb)).-define(MG_STOP(Pid), megaco_test_mg:stop(Pid)).-define(MG_SERV_CHANGE(Pid), megaco_test_mg:service_change(Pid)).-define(MG_NOTIF_REQ(Pid), megaco_test_mg:notify_request(Pid)).-define(MG_AWAIT_NOTIF_REP(Pid), megaco_test_mg:await_notify_reply(Pid)).-define(MG_CONN_INFO(Pid,Tag), megaco_test_mg:conn_info(Pid,Tag)).-define(MG_USER_INFO(Pid,Tag), megaco_test_mg:user_info(Pid,Tag)).-define(MG_NOTIF_RAR(Pid), megaco_test_mg:notify_request_and_reply(Pid)).-define(SEND(Expr), ?VERIFY(ok, megaco_mess_user_test:apply_proxy(fun() -> Expr end))).-define(USER(Expected, Reply), megaco_mess_user_test:reply(?MODULE, ?LINE, fun(Actual) -> case ?VERIFY(Expected, Actual) of Expected -> {ok, Reply}; UnExpected -> {error, {reply_verify, ?MODULE, ?LINE, UnExpected}} end end)). %% t() -> megaco_test_lib:t(?MODULE).%% t(Case) -> megaco_test_lib:t({?MODULE, Case}).min(M) -> timer:minutes(M).%% Test server callbacks% init_per_testcase(pending_ack = Case, Config) ->% put(dbg,true),% megaco_test_lib:init_per_testcase(Case, Config);init_per_testcase(request_and_no_reply = Case, Config) -> C = lists:keydelete(tc_timeout, 1, Config), megaco_test_lib:init_per_testcase(Case, [{tc_timeout, min(2)} |C]);init_per_testcase(Case, Config) -> C = lists:keydelete(tc_timeout, 1, Config), megaco_test_lib:init_per_testcase(Case, [{tc_timeout, min(1)} |C]).% fin_per_testcase(pending_ack = Case, Config) ->% erase(dbg),% megaco_test_lib:fin_per_testcase(Case, Config);fin_per_testcase(Case, Config) -> megaco_test_lib:fin_per_testcase(Case, Config).%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%all(suite) -> [ connect, request_and_reply, pending_ack, dist, %% Tickets last tickets ].request_and_reply(suite) -> [ request_and_reply_plain, request_and_no_reply, request_and_reply_pending_ack_no_pending, request_and_reply_pending_ack_one_pending, single_trans_req_and_reply, single_trans_req_and_reply_sendopts, request_and_reply_and_ack, request_and_reply_and_no_ack, request_and_reply_and_late_ack, trans_req_and_reply_and_req ].pending_ack(suite) -> [ pending_ack_plain, request_and_pending_and_late_reply ].tickets(suite) -> [ otp_4359, otp_4836, otp_5805, otp_5881, otp_5887, otp_6253, otp_6275, otp_6276, otp_6442 ].otp_6442(suite) -> [ otp_6442_resend_request1, otp_6442_resend_request2, otp_6442_resend_reply1, otp_6442_resend_reply2 ].%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%connect(suite) -> [];connect(doc) -> [];connect(Config) when is_list(Config) -> ?ACQUIRE_NODES(1, Config), PrelMid = preliminary_mid, MgMid = ipv4_mid(4711), ?VERIFY(ok, application:start(megaco)), ?VERIFY(ok, megaco:start_user(MgMid, [{send_mod, bad_send_mod}, {request_timer, infinity}, {reply_timer, infinity}])), MgRH = user_info(MgMid, receive_handle), {ok, PrelCH} = ?VERIFY({ok, _}, megaco:connect(MgRH, PrelMid, sh, self())), connections([PrelCH]), ?VERIFY([PrelCH], megaco:user_info(MgMid, connections)), ?VERIFY(bad_send_mod, megaco:user_info(MgMid, send_mod)), ?VERIFY(bad_send_mod, megaco:conn_info(PrelCH, send_mod)), SC = service_change_request(), ?VERIFY({1, {error, {send_message_failed, {'EXIT', {undef, [{bad_send_mod, send_message, [sh, _]} | _]}}}}}, megaco:call(PrelCH, [SC], [])), ?VERIFY(ok, megaco:disconnect(PrelCH, shutdown)), ?VERIFY(ok, megaco:stop_user(MgMid)), ?VERIFY(ok, application:stop(megaco)), ?RECEIVE([]), ok.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%request_and_reply_plain(suite) -> [];request_and_reply_plain(Config) when is_list(Config) -> ?ACQUIRE_NODES(1, Config), d("request_and_reply_plain -> start proxy",[]), megaco_mess_user_test:start_proxy(), PrelMid = preliminary_mid, MgMid = ipv4_mid(4711), MgcMid = ipv4_mid(), UserMod = megaco_mess_user_test, d("request_and_reply_plain -> start megaco app",[]), ?VERIFY(ok, application:start(megaco)), UserConfig = [{user_mod, UserMod}, {send_mod, UserMod}, {request_timer, infinity}, {reply_timer, infinity}], d("request_and_reply_plain -> start (MG) user ~p",[MgMid]),
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?