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

📄 megaco_trans_test.erl

📁 OTP是开放电信平台的简称
💻 ERL
📖 第 1 页 / 共 5 页
字号:
%% ``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 that the transaction sender works with acks.%% %% Test:    ts:run(megaco, megaco_trans_test, [batch]).%% %%-----------------------------------------------------------------------module(megaco_trans_test).-compile(export_all).-include("megaco_test_lib.hrl").-include_lib("megaco/include/megaco.hrl").-include_lib("megaco/include/megaco_message_v1.hrl").-define(VERSION, 1).-define(TEST_VERBOSITY, debug).-define(MGC_VERBOSITY,  debug).-define(MG_VERBOSITY,   debug).-define(LOAD_COUNTER_START, 10).-define(A4444, ["11111111", "00000000", "00000000"]).-define(A4445, ["11111111", "00000000", "11111111"]).-define(A5555, ["11111111", "11111111", "00000000"]).-define(A5556, ["11111111", "11111111", "11111111"]).-define(MGC_START(Pid, Mid, ET, Verb), 	megaco_test_mgc:start(Pid, Mid, ET, Verb)).-define(MGC_STOP(Pid), megaco_test_mgc:stop(Pid)).-define(MGC_GET_STATS(Pid, No), megaco_test_mgc:get_stats(Pid, No)).-define(MGC_RESET_STATS(Pid), megaco_test_mgc:reset_stats(Pid)).-define(MGC_REQ_DISC(Pid,To), megaco_test_mgc:request_discard(Pid,To)).-define(MGC_REQ_PEND(Pid,To), megaco_test_mgc:request_pending(Pid,To)).-define(MGC_REQ_HAND(Pid),    megaco_test_mgc:request_handle(Pid)).-define(MGC_REQ_HANDS(Pid),   megaco_test_mgc:request_handle_sloppy(Pid)).-define(MGC_UPDATE_UI(Pid,Tag,Val), 	megaco_test_mgc:update_user_info(Pid,Tag,Val)).-define(MGC_UPDATE_CI(Pid,Tag,Val), 	megaco_test_mgc:update_conn_info(Pid,Tag,Val)).-define(MGC_USER_INFO(Pid,Tag), megaco_test_mgc:user_info(Pid,Tag)).-define(MGC_CONN_INFO(Pid,Tag), megaco_test_mgc:conn_info(Pid,Tag)).-define(MGC_ACK_INFO(Pid,To),   megaco_test_mgc:ack_info(Pid,To)).-define(MGC_REQ_INFO(Pid,To),   megaco_test_mgc:req_info(Pid,To)).-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_GET_STATS(Pid),   megaco_test_mg:get_stats(Pid)).-define(MG_RESET_STATS(Pid), megaco_test_mg:reset_stats(Pid)).-define(MG_SERV_CHANGE(Pid), megaco_test_mg:service_change(Pid)).-define(MG_NOTIF_RAR(Pid), megaco_test_mg:notify_request_and_reply(Pid)).-define(MG_NOTIF_REQ(Pid), megaco_test_mg:notify_request(Pid)).-define(MG_NOTIF_AR(Pid),  megaco_test_mg:await_notify_reply(Pid)).-define(MG_CANCEL(Pid,R),  megaco_test_mg:cancel_request(Pid,R)).-define(MG_APPLY_LOAD(Pid,CntStart), megaco_test_mg:apply_load(Pid,CntStart)).-define(MG_UPDATE_UI(Pid,Tag,Val), 	megaco_test_mg:update_user_info(Pid,Tag,Val)).-define(MG_UPDATE_CI(Pid,Tag,Val), 	megaco_test_mg:update_conn_info(Pid,Tag,Val)).-define(MG_USER_INFO(Pid,Tag), megaco_test_mg:user_info(Pid,Tag)).-define(MG_CONN_INFO(Pid,Tag), megaco_test_mg:conn_info(Pid,Tag)).-define(MG_GRP_REQ(Pid,N),     megaco_test_mg:group_requests(Pid,N)).-define(MG_ACK_INFO(Pid,To),   megaco_test_mg:ack_info(Pid,To)).-define(MG_REP_INFO(Pid,To),   megaco_test_mg:rep_info(Pid,To)).t()     -> megaco_test_lib:t(?MODULE).t(Case) -> megaco_test_lib:t({?MODULE, Case}).%% Test server callbacksinit_per_testcase(multi_ack_maxcount = Case, Config) ->    process_flag(trap_exit, true),    C = lists:keydelete(tc_timeout, 1, Config),    megaco_test_lib:init_per_testcase(Case, [{tc_timeout,timer:minutes(10)}|C]);init_per_testcase(Case, Config) ->    process_flag(trap_exit, true),    megaco_test_lib:init_per_testcase(Case, Config).fin_per_testcase(Case, Config) ->    process_flag(trap_exit, false),    megaco_test_lib:fin_per_testcase(Case, Config).%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%all(suite) ->    [     ack,     trans_req,     trans_req_and_ack,     pending,     reply         ].ack(suite) ->    [     single_ack,     multi_ack_timeout,     multi_ack_maxcount    ].trans_req(suite) ->    [     single_trans_req,     multi_trans_req_timeout,     multi_trans_req_maxcount1,     multi_trans_req_maxcount2,     multi_trans_req_maxsize1,     multi_trans_req_maxsize2    ].trans_req_and_ack(suite) ->    [     single_trans_req_and_ack,     multi_trans_req_and_ack_timeout,     multi_trans_req_and_ack_ackmaxcount,     multi_trans_req_and_ack_reqmaxcount,     multi_trans_req_and_ack_maxsize1,     multi_trans_req_and_ack_maxsize2    ].pending(suite) ->    [     single_trans_req_and_pending,     multi_trans_req_and_pending,     multi_trans_req_and_ack_and_pending,     multi_ack_and_pending    ].reply(suite) ->    [     multi_trans_req_and_reply,     multi_trans_req_and_ack_and_reply,     multi_ack_and_reply    ].%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%single_ack(suite) ->    [];single_ack(doc) ->    [];single_ack(Config) when list(Config) ->    put(verbosity, ?TEST_VERBOSITY),    put(sname,     "TEST"),    put(tc,        single_ack),    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),    %% Start the MGC and MGs    i("[MGC] start"),        ET = [{text,tcp}, {text,udp}, {binary,tcp}, {binary,udp}],    {ok, Mgc} = 	?MGC_START(MgcNode, {deviceName, "ctrl"}, ET, ?MGC_VERBOSITY),    i("[MG] start"),        %% MgConf0 = [{MgNode, "mg", text, tcp, ?MG_VERBOSITY}],    MgMid = {deviceName, "mg"},    MgConfig = [{auto_ack, true}, {trans_timer, 5000}, {trans_ack, true}],    {ok, Mg} = ?MG_START(MgNode, MgMid, text, tcp, MgConfig, ?MG_VERBOSITY),    d("MG user info: ~p", [?MG_USER_INFO(Mg, all)]),    i("[MG] connect to the MGC (service change)"),        ServChRes = ?MG_SERV_CHANGE(Mg),    d("service change result: ~p", [ServChRes]),    d("MG conn info: ~p", [?MG_CONN_INFO(Mg, all)]),    d("ensure the megaco stack calls the handle_trans_ack callback"),    ?MGC_REQ_HANDS(Mgc),    d("tell the MGC to send the ack's to us"),    ?MGC_ACK_INFO(Mgc, self()),    d("send the notify"),    ?MG_GRP_REQ(Mg, 1),    d("send the notify"),    ?MG_NOTIF_REQ(Mg),    d("await the ack"),    await_ack(Mgc, 1, infinity, ok),    %% Tell MG to stop    i("[MG] stop"),    ?MG_STOP(Mg),    %% Tell Mgc to stop    i("[MGC] stop"),    ?MGC_STOP(Mgc),    i("done", []),    ok.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%multi_ack_timeout(suite) ->    [];multi_ack_timeout(doc) ->    [];multi_ack_timeout(Config) when list(Config) ->    put(verbosity, ?TEST_VERBOSITY),    put(sname,     "TEST"),    put(tc,        multi_ack_timeout),    i("starting"),    MaxCount = 20,    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),    %% Start the MGC and MGs    i("[MGC] start"),        ET = [{text,tcp}, {text,udp}, {binary,tcp}, {binary,udp}],    {ok, Mgc} = 	?MGC_START(MgcNode, {deviceName, "ctrl"}, ET, ?MGC_VERBOSITY),    i("[MG] start"),        %% MgConf0 = [{MgNode, "mg", text, tcp, ?MG_VERBOSITY}],    MgMid = {deviceName, "mg"},    MgConfig = [{auto_ack,           true}, 		{trans_ack,          true},		{trans_timer,        10000}, 		{trans_ack_maxcount, MaxCount + 10}],    {ok, Mg} = ?MG_START(MgNode, MgMid, text, tcp, MgConfig, ?MG_VERBOSITY),    d("MG user info: ~p", [?MG_USER_INFO(Mg, all)]),    i("[MG] connect the MGC (service change)"),        ServChRes = ?MG_SERV_CHANGE(Mg),    d("service change result: ~p", [ServChRes]),    i("wait some time"),    sleep(1000),    d("MG conn info: ~p", [?MG_CONN_INFO(Mg, all)]),    {ok, _OldAction} = ?MGC_REQ_HANDS(Mgc),    d("tell the MGC to send the ack's to us"),    ?MGC_ACK_INFO(Mgc, self()),    d("set group size to ~p", [MaxCount]),    ?MG_GRP_REQ(Mg, MaxCount),    d("[MG] send a group of requests (and await the replies)"),    ?MG_NOTIF_RAR(Mg),    d("await the ack(s)"),    await_ack(Mgc, MaxCount, 60000, ok),    i("wait some time before closing down"),    sleep(5000),    %% Tell MG to stop    i("[MG] stop"),    ?MG_STOP(Mg),    %% Tell Mgc to stop    i("[MGC] stop"),    ?MGC_STOP(Mgc),    i("done"),    ok.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%multi_ack_maxcount(suite) ->    [];multi_ack_maxcount(doc) ->    [];multi_ack_maxcount(Config) when list(Config) ->    put(verbosity, ?TEST_VERBOSITY),    put(sname,     "TEST"),    put(tc,        multi_ack_maxcount),    i("starting"),    MaxCount = 10,    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),    %% Start the MGC and MGs    i("[MGC] start"),        ET = [{text,tcp}, {text,udp}, {binary,tcp}, {binary,udp}],    {ok, Mgc} = 	?MGC_START(MgcNode, {deviceName, "ctrl"}, ET, ?MGC_VERBOSITY),    i("[MG] start"),        %% MgConf0 = [{MgNode, "mg", text, tcp, ?MG_VERBOSITY}],    MgMid = {deviceName, "mg"},    MgConfig = [%% {auto_ack,          true}, 		%% {trans_timer,    120000}, 		%% {trans_ack_maxcount, MaxCount}	       ],    {ok, Mg} = ?MG_START(MgNode, MgMid, text, tcp, MgConfig, ?MG_VERBOSITY),    d("MG user info: ~p", [?MG_USER_INFO(Mg, all)]),    i("[MG] connect the MGC (service change)"),        ServChRes = ?MG_SERV_CHANGE(Mg),    d("service change result: ~p", [ServChRes]),    i("wait some time"),    sleep(1000),    d("MG conn info: ~p", [?MG_CONN_INFO(Mg, all)]),    ?MG_UPDATE_CI(Mg,auto_ack,true),     ?MG_UPDATE_CI(Mg,trans_timer,120000),     ?MG_UPDATE_CI(Mg,trans_ack_maxcount,MaxCount),     ?MG_UPDATE_CI(Mg,trans_ack,true),     d("MG conn info: ~p", [?MG_CONN_INFO(Mg, all)]),    {ok, _OldAction} = ?MGC_REQ_HANDS(Mgc),    d("tell the MGC to send the ack's to us"),    ?MGC_ACK_INFO(Mgc, self()),    d("set group size to ~p", [MaxCount]),    ?MG_GRP_REQ(Mg, MaxCount),    d("[MG] send a group of requests (and await the replies)"),    ?MG_NOTIF_RAR(Mg),    d("await the ack"),    await_ack(Mgc, MaxCount, 60000, ok),    i("wait some time before closing down"),    sleep(5000),    %% Tell MG to stop    i("[MG] stop"),    ?MG_STOP(Mg),    %% Tell Mgc to stop    i("[MGC] stop"),    ?MGC_STOP(Mgc),    i("done"),    ok.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%single_trans_req(suite) ->    [];single_trans_req(doc) ->    [];single_trans_req(Config) when list(Config) ->    put(verbosity, ?TEST_VERBOSITY),    put(sname,     "TEST"),    put(tc,        single_trans_req),    process_flag(trap_exit, true),        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),

⌨️ 快捷键说明

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