diff options
Diffstat (limited to 'lib/megaco/test/megaco_pending_limit_SUITE.erl')
-rw-r--r-- | lib/megaco/test/megaco_pending_limit_SUITE.erl | 667 |
1 files changed, 297 insertions, 370 deletions
diff --git a/lib/megaco/test/megaco_pending_limit_SUITE.erl b/lib/megaco/test/megaco_pending_limit_SUITE.erl index d5db6e6bc0..dfe52535c9 100644 --- a/lib/megaco/test/megaco_pending_limit_SUITE.erl +++ b/lib/megaco/test/megaco_pending_limit_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2003-2019. All Rights Reserved. +%% Copyright Ericsson AB 2003-2022. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -46,31 +46,6 @@ ]). --ifdef(megaco_hipe_special). --export([ - %% Case: recv_limit_exceeded1 - rle1_mgc_verify_service_change_req_msg/2, - rle1_mgc_verify_notify_req_msg/1, - rle1_mg_verify_handle_connect/1, - rle1_mg_verify_service_change_rep/1, - rle1_mg_verify_trans_rep/1, - - %% Case: otp_4956 - otp_4956_mgc_verify_handle_connect/1, - otp_4956_mgc_verify_service_change_req/2, - otp_4956_mgc_verify_notify_req1/1, - otp_4956_mgc_verify_notify_req2/1, - otp_4956_mgc_verify_handle_trans_req_abort/1, - otp_4956_mgc_verify_handle_disconnect/1, - otp_4956_mg_verify_service_change_rep_msg/1, - otp_4956_mg_verify_pending_msg/1, - otp_4956_mg_verify_pending_limit_msg/1, - - %% Utility - encode_msg/3, - decode_msg/3 - ]). --endif. -include_lib("megaco/include/megaco.hrl"). -include_lib("megaco/include/megaco_message_v1.hrl"). @@ -89,6 +64,10 @@ -define(MGC_START(Pid, Mid, ET, Conf, Verb), megaco_test_mgc:start(Pid, Mid, ET, Conf, Verb)). +-define(MGC_START(Pid, ET, Conf), + ?MGC_START(Pid, {deviceName, "ctrl"}, ET, Conf, ?MGC_VERBOSITY)). +-define(MGC_START(Pid, ET), + ?MGC_START(Pid, ET, [])). -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)). @@ -110,6 +89,10 @@ -define(MG_START(Pid, Mid, Enc, Transp, Conf, Verb), megaco_test_mg:start(Pid, Mid, Enc, Transp, Conf, Verb)). +-define(MG_START(Pid, Enc, Transp, Conf), + ?MG_START(Pid, {deviceName, "mg"}, Enc, Transp, Conf, ?MG_VERBOSITY)). +-define(MG_START(Pid, Enc, Transp), + ?MG_START(Pid, Enc, Transp, [])). -define(MG_STOP(Pid), megaco_test_mg:stop(Pid)). -define(MG_GET_STATS(Pid, No), megaco_test_mg:get_stats(Pid, No)). -define(MG_RESET_STATS(Pid), megaco_test_mg:reset_stats(Pid)). @@ -278,30 +261,39 @@ sent_timer_late_reply(suite) -> sent_timer_late_reply(doc) -> "..."; sent_timer_late_reply(Config) when is_list(Config) -> - put(verbosity, ?TEST_VERBOSITY), - put(sname, "TEST"), - put(tc, sent_timer_late_reply), - i("starting"), - - MgcNode = make_node_name(mgc), - MgNode = make_node_name(mg), - d("start nodes: " - "~n MgcNode: ~p" - "~n MgNode: ~p", - [MgcNode, MgNode]), - ok = ?START_NODES([MgcNode, MgNode], true), - + Cond = fun() -> ok end, + Pre = fun() -> + put(tc, ?FUNCTION_NAME), + MgcNode = make_node_name(pl_stlr_mgc), + MgNode = make_node_name(pl_stlr_mg), + i("try start nodes: " + "~n MgcNode: ~p" + "~n MgNode: ~p", + [MgcNode, MgNode]), + Nodes = [MgcNode, MgNode], + ok = ?START_NODES(Nodes, true), + #{nodes => Nodes} + end, + Case = fun(State) -> + do_sent_timer_late_reply(State) + end, + Post = fun(#{nodes := Nodes}) -> + i("stop nodes"), + ?STOP_NODES(Nodes), + ok + end, + try_tc(?FUNCTION_NAME, Cond, Pre, Case, Post). + +do_sent_timer_late_reply(#{nodes := [MgcNode, MgNode]}) -> %% Start the MGC and MGs i("[MGC] start"), ET = [{text,tcp}, {text,udp}, {binary,tcp}, {binary,udp}], MgcConf = [{megaco_trace, false}], - {ok, Mgc} = - ?MGC_START(MgcNode, {deviceName, "ctrl"}, ET, MgcConf, ?MGC_VERBOSITY), + {ok, Mgc} = ?MGC_START(MgcNode, ET, MgcConf), i("[MG] start"), - MgMid = {deviceName, "mg"}, - MgConf = [{megaco_trace, io}], - {ok, Mg} = ?MG_START(MgNode, MgMid, text, tcp, MgConf, ?MG_VERBOSITY), + MgConf = [{megaco_trace, io}], + {ok, Mg} = ?MG_START(MgNode, text, tcp, MgConf), d("MG user info: ~p", [?MG_USER_INFO(Mg, all)]), @@ -342,11 +334,7 @@ sent_timer_late_reply(Config) when is_list(Config) -> i("[MGC] stop"), ?MGC_STOP(Mgc), - %% Cleanup - d("stop nodes"), - ?STOP_NODES([MgcNode, MgNode]), - - i("done", []), + i("done"), ok. @@ -357,29 +345,37 @@ sent_timer_exceeded(suite) -> sent_timer_exceeded(doc) -> "..."; sent_timer_exceeded(Config) when is_list(Config) -> - put(verbosity, ?TEST_VERBOSITY), - put(sname, "TEST"), - put(tc, sent_timer_exceeded), - i("starting"), - - MgcNode = make_node_name(mgc), - MgNode = make_node_name(mg), - d("start nodes: " - "~n MgcNode: ~p" - "~n MgNode: ~p", - [MgcNode, MgNode]), - ok = ?START_NODES([MgcNode, MgNode], true), - + Cond = fun() -> ok end, + Pre = fun() -> + put(tc, ?FUNCTION_NAME), + MgcNode = make_node_name(pl_ste_mgc), + MgNode = make_node_name(pl_ste_mg), + i("try start nodes: " + "~n MgcNode: ~p" + "~n MgNode: ~p", + [MgcNode, MgNode]), + Nodes = [MgcNode, MgNode], + ok = ?START_NODES(Nodes, true), + #{nodes => Nodes} + end, + Case = fun(State) -> + do_sent_timer_exceeded(State) + end, + Post = fun(#{nodes := Nodes}) -> + i("stop nodes"), + ?STOP_NODES(Nodes), + ok + end, + try_tc(?FUNCTION_NAME, Cond, Pre, Case, Post). + +do_sent_timer_exceeded(#{nodes := [MgcNode, MgNode]}) -> %% 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), + {ok, Mgc} = ?MGC_START(MgcNode, ET), - i("[MG] start"), - MgMid = {deviceName, "mg"}, - MgConfig = [], - {ok, Mg} = ?MG_START(MgNode, MgMid, text, tcp, MgConfig, ?MG_VERBOSITY), + i("[MG] start"), + {ok, Mg} = ?MG_START(MgNode, text, tcp), d("MG user info: ~p", [?MG_USER_INFO(Mg, all)]), @@ -419,11 +415,7 @@ sent_timer_exceeded(Config) when is_list(Config) -> i("[MGC] stop"), ?MGC_STOP(Mgc), - %% Cleanup - d("stop nodes"), - ?STOP_NODES([MgcNode, MgNode]), - - i("done", []), + i("done"), ok. @@ -434,29 +426,37 @@ sent_timer_exceeded_long(suite) -> sent_timer_exceeded_long(doc) -> "..."; sent_timer_exceeded_long(Config) when is_list(Config) -> - put(verbosity, ?TEST_VERBOSITY), - put(sname, "TEST"), - put(tc, sent_timer_exceeded_long), - i("starting"), - - MgcNode = make_node_name(mgc), - MgNode = make_node_name(mg), - d("start nodes: " - "~n MgcNode: ~p" - "~n MgNode: ~p", - [MgcNode, MgNode]), - ok = ?START_NODES([MgcNode, MgNode], true), - + Cond = fun() -> ok end, + Pre = fun() -> + put(tc, ?FUNCTION_NAME), + MgcNode = make_node_name(pl_stel_mgc), + MgNode = make_node_name(pl_stel_mg), + i("try start nodes: " + "~n MgcNode: ~p" + "~n MgNode: ~p", + [MgcNode, MgNode]), + Nodes = [MgcNode, MgNode], + ok = ?START_NODES(Nodes, true), + #{nodes => Nodes} + end, + Case = fun(State) -> + do_sent_timer_exceeded_long(State) + end, + Post = fun(#{nodes := Nodes}) -> + i("stop nodes"), + ?STOP_NODES(Nodes), + ok + end, + try_tc(?FUNCTION_NAME, Cond, Pre, Case, Post). + +do_sent_timer_exceeded_long(#{nodes := [MgcNode, MgNode]}) -> %% 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), + {ok, Mgc} = ?MGC_START(MgcNode, ET), i("[MG] start"), - MgMid = {deviceName, "mg"}, - MgConfig = [], - {ok, Mg} = ?MG_START(MgNode, MgMid, text, tcp, MgConfig, ?MG_VERBOSITY), + {ok, Mg} = ?MG_START(MgNode, text, tcp), d("MG user info: ~p", [?MG_USER_INFO(Mg, all)]), @@ -494,11 +494,7 @@ sent_timer_exceeded_long(Config) when is_list(Config) -> i("[MGC] stop"), ?MGC_STOP(Mgc), - %% Cleanup - d("stop nodes"), - ?STOP_NODES([MgcNode, MgNode]), - - i("done", []), + i("done"), ok. @@ -508,35 +504,42 @@ sent_timer_exceeded_long(Config) when is_list(Config) -> %% This test case can only be run with the stack compiled with %% the MEGACO_TEST_CODE flag. Therefor there is no point in %% including this test case in the usual test suite --ifdef(MEGACO_TEST_CODE). sent_resend_late_reply(suite) -> []; sent_resend_late_reply(doc) -> "..."; sent_resend_late_reply(Config) when is_list(Config) -> - put(verbosity, ?TEST_VERBOSITY), - put(sname, "TEST"), - put(tc, sent_resend_late_reply), - i("starting"), - - MgcNode = make_node_name(mgc), - MgNode = make_node_name(mg), - d("start nodes: " - "~n MgcNode: ~p" - "~n MgNode: ~p", - [MgcNode, MgNode]), - ok = ?START_NODES([MgcNode, MgNode], true), - + Cond = fun megaco_test_code/0, + Pre = fun() -> + put(tc, ?FUNCTION_NAME), + MgcNode = make_node_name(pl_srlr_mgc), + MgNode = make_node_name(pl_srlr_mg), + i("try start nodes: " + "~n MgcNode: ~p" + "~n MgNode: ~p", + [MgcNode, MgNode]), + Nodes = [MgcNode, MgNode], + ok = ?START_NODES(Nodes, true), + #{nodes => Nodes} + end, + Case = fun(State) -> + do_sent_resend_late_reply(State) + end, + Post = fun(#{nodes := Nodes}) -> + i("stop nodes"), + ?STOP_NODES(Nodes), + ok + end, + try_tc(?FUNCTION_NAME, Cond, Pre, Case, Post). + +do_sent_resend_late_reply(#{nodes := [MgcNode, MgNode]}) -> %% 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), + {ok, Mgc} = ?MGC_START(MgcNode, ET), i("[MG] start"), - MgMid = {deviceName, "mg"}, - MgConfig = [], - {ok, Mg} = ?MG_START(MgNode, MgMid, text, tcp, MgConfig, ?MG_VERBOSITY), + {ok, Mg} = ?MG_START(MgNode, text, tcp), d("MG user info: ~p", [?MG_USER_INFO(Mg, all)]), @@ -594,53 +597,48 @@ sent_resend_late_reply(Config) when is_list(Config) -> i("done", []), ok. --else. - -sent_resend_late_reply(suite) -> - []; -sent_resend_late_reply(doc) -> - "..."; -sent_resend_late_reply(Config) when is_list(Config) -> - ?SKIP("included only if compiled with USE_MEGACO_TEST_CODE=true"). - --endif. - - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% This test case can only be run with the stack compiled with %% the MEGACO_TEST_CODE flag. Therefor there is no point in %% including this test case in the usual test suite --ifdef(MEGACO_TEST_CODE). sent_resend_exceeded(suite) -> []; sent_resend_exceeded(doc) -> "..."; sent_resend_exceeded(Config) when is_list(Config) -> - put(verbosity, ?TEST_VERBOSITY), - put(sname, "TEST"), - put(tc, sent_resend_exceeded), - i("starting"), - - MgcNode = make_node_name(mgc), - MgNode = make_node_name(mg), - d("start nodes: " - "~n MgcNode: ~p" - "~n MgNode: ~p", - [MgcNode, MgNode]), - ok = ?START_NODES([MgcNode, MgNode], true), - + Cond = fun megaco_test_code/0, + Pre = fun() -> + put(tc, ?FUNCTION_NAME), + MgcNode = make_node_name(pl_sre_mgc), + MgNode = make_node_name(pl_sre_mg), + i("try start nodes: " + "~n MgcNode: ~p" + "~n MgNode: ~p", + [MgcNode, MgNode]), + Nodes = [MgcNode, MgNode], + ok = ?START_NODES(Nodes, true), + #{nodes => Nodes} + end, + Case = fun(State) -> + do_sent_resend_exceeded(State) + end, + Post = fun(#{nodes := Nodes}) -> + i("stop nodes"), + ?STOP_NODES(Nodes), + ok + end, + try_tc(?FUNCTION_NAME, Cond, Pre, Case, Post). + +do_sent_resend_exceeded(#{nodes := [MgcNode, MgNode]}) -> %% 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), + {ok, Mgc} = ?MGC_START(MgcNode, ET), i("[MG] start"), - MgMid = {deviceName, "mg"}, - MgConfig = [], - {ok, Mg} = ?MG_START(MgNode, MgMid, text, tcp, MgConfig, ?MG_VERBOSITY), + {ok, Mg} = ?MG_START(MgNode, text, tcp), d("MG user info: ~p", [?MG_USER_INFO(Mg, all)]), @@ -686,60 +684,51 @@ sent_resend_exceeded(Config) when is_list(Config) -> i("[MGC] stop"), ?MGC_STOP(Mgc), - %% Cleanup - d("stop nodes"), - ?STOP_NODES([MgcNode, MgNode]), - - i("done", []), + i("done"), ok. --else. - -sent_resend_exceeded(suite) -> - []; -sent_resend_exceeded(doc) -> - "..."; -sent_resend_exceeded(Config) when is_list(Config) -> - ?SKIP("included only if compiled with USE_MEGACO_TEST_CODE=true"). - --endif. - - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% This test case can only be run with the stack compiled with %% the MEGACO_TEST_CODE flag. Therefor there is no point in %% including this test case in the usual test suite --ifdef(MEGACO_TEST_CODE). sent_resend_exceeded_long(suite) -> []; sent_resend_exceeded_long(doc) -> "..."; sent_resend_exceeded_long(Config) when is_list(Config) -> - put(verbosity, ?TEST_VERBOSITY), - put(sname, "TEST"), - put(tc, sent_resend_exceeded_long), - i("starting"), - - MgcNode = make_node_name(mgc), - MgNode = make_node_name(mg), - d("start nodes: " - "~n MgcNode: ~p" - "~n MgNode: ~p", - [MgcNode, MgNode]), - ok = ?START_NODES([MgcNode, MgNode], true), - + Cond = fun megaco_test_code/0, + Pre = fun() -> + put(tc, ?FUNCTION_NAME), + MgcNode = make_node_name(pl_srel_mgc), + MgNode = make_node_name(pl_srel_mg), + i("try start nodes: " + "~n MgcNode: ~p" + "~n MgNode: ~p", + [MgcNode, MgNode]), + Nodes = [MgcNode, MgNode], + ok = ?START_NODES(Nodes, true), + #{nodes => Nodes} + end, + Case = fun(State) -> + do_sent_resend_exceeded_long(State) + end, + Post = fun(#{nodes := Nodes}) -> + i("stop nodes"), + ?STOP_NODES(Nodes), + ok + end, + try_tc(?FUNCTION_NAME, Cond, Pre, Case, Post). + +do_sent_resend_exceeded_long(#{nodes := [MgcNode, MgNode]}) -> %% 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), + {ok, Mgc} = ?MGC_START(MgcNode, ET), i("[MG] start"), - MgMid = {deviceName, "mg"}, - MgConfig = [], - {ok, Mg} = ?MG_START(MgNode, MgMid, text, tcp, MgConfig, ?MG_VERBOSITY), + {ok, Mg} = ?MG_START(MgNode, text, tcp), d("MG user info: ~p", [?MG_USER_INFO(Mg, all)]), @@ -786,26 +775,10 @@ sent_resend_exceeded_long(Config) when is_list(Config) -> i("[MGC] stop"), ?MGC_STOP(Mgc), - %% Cleanup - d("stop nodes"), - ?STOP_NODES([MgcNode, MgNode]), - - i("done", []), + i("done"), ok. --else. - -sent_resend_exceeded_long(suite) -> - []; -sent_resend_exceeded_long(doc) -> - "..."; -sent_resend_exceeded_long(Config) when is_list(Config) -> - ?SKIP("included only if compiled with USE_MEGACO_TEST_CODE=true"). - --endif. - - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% %%% %%% Received peinding test cases %%% @@ -817,19 +790,30 @@ recv_limit_exceeded1(suite) -> recv_limit_exceeded1(doc) -> "Received pending limit exceeded (exactly)"; recv_limit_exceeded1(Config) when is_list(Config) -> - put(verbosity, ?TEST_VERBOSITY), - put(sname, "TEST"), - put(tc, rle1), - i("starting"), - - MgcNode = make_node_name(mgc), - MgNode = make_node_name(mg), - d("start nodes: " - "~n MgcNode: ~p" - "~n MgNode: ~p", - [MgcNode, MgNode]), - ok = ?START_NODES([MgcNode, MgNode], true), - + Cond = fun() -> ok end, + Pre = fun() -> + put(tc, ?FUNCTION_NAME), + MgcNode = make_node_name(pl_rle_mgc), + MgNode = make_node_name(pl_rle_mg), + i("try start nodes: " + "~n MgcNode: ~p" + "~n MgNode: ~p", + [MgcNode, MgNode]), + Nodes = [MgcNode, MgNode], + ok = ?START_NODES(Nodes, true), + #{nodes => Nodes} + end, + Case = fun(State) -> + do_recv_limit_exceeded1(State) + end, + Post = fun(#{nodes := Nodes}) -> + i("stop nodes"), + ?STOP_NODES(Nodes), + ok + end, + try_tc(?FUNCTION_NAME, Cond, Pre, Case, Post). + +do_recv_limit_exceeded1(#{nodes := [MgcNode, MgNode]}) -> d("[MGC] start the simulator "), {ok, Mgc} = megaco_test_tcp_generator:start_link("MGC", MgcNode), @@ -868,27 +852,13 @@ recv_limit_exceeded1(Config) when is_list(Config) -> i("[MG] stop generator"), megaco_test_megaco_generator:stop(Mg), - %% Cleanup - d("stop nodes"), - ?STOP_NODES([MgcNode, MgNode]), - - i("done", []), + i("done"), ok. %% %% MGC generator stuff %% --ifdef(megaco_hipe_special). --define(rle1_mgc_decode_msg_fun(Mod, Conf), - {?MODULE, decode_msg, [Mod, Conf]}). --define(rle1_mgc_encode_msg_fun(Mod, Conf), - {?MODULE, encode_msg, [Mod, Conf]}). --define(rle1_mgc_verify_service_change_req_msg_fun(Mid), - {?MODULE, rle1_mgc_verify_service_change_req_msg, [Mid]}). --define(rle1_mgc_verify_notify_req_msg_fun(), - {?MODULE, rle1_mgc_verify_notify_req_msg, []}). --else. -define(rle1_mgc_decode_msg_fun(Mod, Conf), rle1_mgc_decode_msg_fun(Mod, Conf)). -define(rle1_mgc_encode_msg_fun(Mod, Conf), @@ -897,7 +867,6 @@ recv_limit_exceeded1(Config) when is_list(Config) -> rle1_mgc_verify_service_change_req_msg_fun(Mid)). -define(rle1_mgc_verify_notify_req_msg_fun(), rle1_mgc_verify_notify_req_msg_fun()). --endif. rle1_mgc_event_sequence(text, tcp) -> Mid = {deviceName,"ctrl"}, @@ -942,17 +911,15 @@ rle1_mgc_event_sequence2(Mid, EM, EC) -> ], EvSeq. --ifndef(megaco_hipe_special). rle1_mgc_encode_msg_fun(Mod, Conf) -> fun(M) -> encode_msg(M, Mod, Conf) end. rle1_mgc_decode_msg_fun(Mod, Conf) -> - fun(M) -> + fun(M) -> decode_msg(M, Mod, Conf) end. --endif. rle1_mgc_service_change_reply_msg(Mid, TransId, Cid) -> SCRP = #'ServiceChangeResParm'{serviceChangeMgcId = Mid}, @@ -983,12 +950,10 @@ rle1_mgc_pending_msg(Mid, TransId) -> 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) -> @@ -1018,12 +983,10 @@ rle1_mgc_verify_service_change_req_msg(#'MegacoMessage'{mess = Mess} = 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" @@ -1054,21 +1017,12 @@ rle1_mgc_verify_notify_req_msg(M) -> %% %% 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"}, @@ -1222,23 +1176,34 @@ recv_limit_exceeded2(Config) when is_list(Config) -> otp_4956(suite) -> []; otp_4956(Config) when is_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 = ?START_NODES([MgcNode, MgNode], true), - - d("[MGC] start the simulator "), + Cond = fun() -> ok end, + Pre = fun() -> + put(tc, ?FUNCTION_NAME), + MgcNode = make_node_name(pl_4956_mgc), + MgNode = make_node_name(pl_4956_mg), + i("try start nodes: " + "~n MgcNode: ~p" + "~n MgNode: ~p", + [MgcNode, MgNode]), + Nodes = [MgcNode, MgNode], + ok = ?START_NODES(Nodes, true), + #{nodes => Nodes} + end, + Case = fun(State) -> + do_otp_4956(State) + end, + Post = fun(#{nodes := Nodes}) -> + i("stop nodes"), + ?STOP_NODES(Nodes), + ok + end, + try_tc(?FUNCTION_NAME, Cond, Pre, Case, Post). + +do_otp_4956(#{nodes := [MgcNode, MgNode]}) -> + i("[MGC] start the simulator "), {ok, Mgc} = megaco_test_megaco_generator:start_link("MGC", MgcNode), - d("[MGC] create the event sequence"), + i("[MGC] create the event sequence"), MgcEvSeq = otp_4956_mgc_event_sequence(text, tcp), i("wait some time before starting the MGC simulation"), @@ -1273,10 +1238,6 @@ otp_4956(Config) when is_list(Config) -> i("[MG] stop generator"), megaco_test_tcp_generator:stop(Mg), - %% Cleanup - d("stop nodes"), - ?STOP_NODES([MgcNode, MgNode]), - i("done", []), ok. @@ -1284,20 +1245,6 @@ otp_4956(Config) when is_list(Config) -> %% %% 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), @@ -1310,7 +1257,6 @@ otp_4956(Config) when is_list(Config) -> otp_4956_mgc_verify_handle_trans_req_abort_fun()). -define(otp_4956_mgc_verify_handle_disconnect_fun(), fun otp_4956_mgc_verify_handle_disconnect/1). --endif. otp_4956_mgc_event_sequence(text, tcp) -> Mid = {deviceName,"ctrl"}, @@ -1355,24 +1301,20 @@ otp_4956_mgc_event_sequence(text, tcp) -> EvSeq. --ifndef(megaco_hipe_special). otp_4956_mgc_verify_handle_connect_fun() -> fun(M) -> otp_4956_mgc_verify_handle_connect(M) end. --endif. otp_4956_mgc_verify_handle_connect({handle_connect, CH, ?VERSION}) -> {ok, CH, ok}; otp_4956_mgc_verify_handle_connect(Else) -> {error, Else, ok}. --ifndef(megaco_hipe_special). otp_4956_mgc_verify_service_change_req_fun(Mid) -> fun(Req) -> otp_4956_mgc_verify_service_change_req(Req, Mid) end. --endif. otp_4956_mgc_verify_service_change_req( {handle_trans_request, _, ?VERSION, [AR]}, Mid) -> @@ -1434,12 +1376,10 @@ otp_4956_mgc_verify_service_change_req(Else, _Mid) -> ErrReply = {discard_ack, ED}, {error, Else, ErrReply}. --ifndef(megaco_hipe_special). otp_4956_mgc_verify_notify_req1_fun() -> fun(Req) -> otp_4956_mgc_verify_notify_req1(Req) end. --endif. otp_4956_mgc_verify_notify_req1({handle_trans_request, _, ?VERSION, [AR]}) -> io:format("otp_4956_mgc_verify_notify_req1 -> entry with" @@ -1470,12 +1410,10 @@ otp_4956_mgc_verify_notify_req1(Else) -> ErrReply = {discard_ack, ED}, {error, Else, ErrReply}. --ifndef(megaco_hipe_special). otp_4956_mgc_verify_notify_req2_fun() -> fun(Ev) -> otp_4956_mgc_verify_notify_req2(Ev) end. --endif. otp_4956_mgc_verify_notify_req2({handle_trans_request, _, ?VERSION, [AR]}) -> case AR of @@ -1500,12 +1438,10 @@ otp_4956_mgc_verify_notify_req2(Else) -> ErrReply = {discard_ack, ED}, {error, Else, ErrReply}. --ifndef(megaco_hipe_special). otp_4956_mgc_verify_handle_trans_req_abort_fun() -> fun(Req) -> otp_4956_mgc_verify_handle_trans_req_abort(Req) end. --endif. otp_4956_mgc_verify_handle_trans_req_abort({handle_trans_request_abort, CH, ?VERSION, 2, Pid}) -> @@ -1574,18 +1510,6 @@ otp_4956_mgc_notify_reply_ar(Cid, TermId) -> %% %% MG generator stuff %% --ifdef(megaco_hipe_special). --define(otp_4956_mg_decode_msg_fun(Mod, Conf), - {?MODULE, decode_msg, [Mod, Conf]}). --define(otp_4956_mg_encode_msg_fun(Mod, Conf), - {?MODULE, encode_msg, [Mod, Conf]}). --define(otp_4956_mg_verify_service_change_rep_msg_fun(), - {?MODULE, otp_4956_mg_verify_service_change_rep_msg, []}). --define(otp_4956_mg_verify_pending_msg_fun(), - {?MODULE, otp_4956_mg_verify_pending_msg, []}). --define(otp_4956_mg_verify_pending_limit_msg_fun(), - {?MODULE, otp_4956_mg_verify_pending_limit_msg, []}). --else. -define(otp_4956_mg_decode_msg_fun(Mod, Conf), otp_4956_mg_decode_msg_fun(Mod, Conf)). -define(otp_4956_mg_encode_msg_fun(Mod, Conf), @@ -1596,7 +1520,6 @@ otp_4956_mgc_notify_reply_ar(Cid, TermId) -> otp_4956_mg_verify_pending_msg_fun()). -define(otp_4956_mg_verify_pending_limit_msg_fun(), otp_4956_mg_verify_pending_limit_msg_fun()). --endif. otp_4956_mg_event_sequence(text, tcp) -> DecodeFun = ?otp_4956_mg_decode_msg_fun(megaco_pretty_text_encoder, []), @@ -1642,7 +1565,6 @@ otp_4956_mg_event_sequence(text, tcp) -> ], EvSeq. --ifndef(megaco_hipe_special). otp_4956_mg_encode_msg_fun(Mod, Conf) -> fun(M) -> encode_msg(M, Mod, Conf) @@ -1652,14 +1574,11 @@ otp_4956_mg_decode_msg_fun(Mod, Conf) -> fun(M) -> decode_msg(M, Mod, Conf) end. --endif. --ifndef(megaco_hipe_special). otp_4956_mg_verify_service_change_rep_msg_fun() -> fun(M) -> otp_4956_mg_verify_service_change_rep_msg(M) end. --endif. otp_4956_mg_verify_service_change_rep_msg( #'MegacoMessage'{mess = Mess} = M) -> @@ -1687,12 +1606,10 @@ otp_4956_mg_verify_service_change_rep_msg( otp_4956_mg_verify_service_change_rep_msg(M) -> {error, {invalid_message, M}}. --ifndef(megaco_hipe_special). otp_4956_mg_verify_pending_msg_fun() -> fun(M) -> otp_4956_mg_verify_pending_msg(M) end. --endif. otp_4956_mg_verify_pending_msg(#'MegacoMessage'{mess = Mess} = M) -> io:format("otp_4956_mg_verify_pending_msg -> entry with" @@ -1710,12 +1627,10 @@ otp_4956_mg_verify_pending_msg(M) -> "~n", [M]), {error, {invalid_message, M}}. --ifndef(megaco_hipe_special). otp_4956_mg_verify_pending_limit_msg_fun() -> fun(M) -> otp_4956_mg_verify_pending_limit_msg(M) end. --endif. otp_4956_mg_verify_pending_limit_msg(#'MegacoMessage'{mess = Mess} = M) -> io:format("otp_4956_mg_verify_pending_limit_msg -> entry with" @@ -1784,29 +1699,37 @@ otp_5310(suite) -> otp_5310(doc) -> "..."; otp_5310(Config) when is_list(Config) -> - put(verbosity, ?TEST_VERBOSITY), - put(sname, "TEST"), - put(tc, otp_5310), - i("starting"), - - MgcNode = make_node_name(mgc), - MgNode = make_node_name(mg), - d("start nodes: " - "~n MgcNode: ~p" - "~n MgNode: ~p", - [MgcNode, MgNode]), - ok = ?START_NODES([MgcNode, MgNode], true), - + Cond = fun() -> ok end, + Pre = fun() -> + put(tc, ?FUNCTION_NAME), + MgcNode = make_node_name(pl_5310_mgc), + MgNode = make_node_name(pl_5310_mg), + i("try start nodes: " + "~n MgcNode: ~p" + "~n MgNode: ~p", + [MgcNode, MgNode]), + Nodes = [MgcNode, MgNode], + ok = ?START_NODES(Nodes, true), + #{nodes => Nodes} + end, + Case = fun(State) -> + do_otp_5310(State) + end, + Post = fun(#{nodes := Nodes}) -> + i("stop nodes"), + ?STOP_NODES(Nodes), + ok + end, + try_tc(?FUNCTION_NAME, Cond, Pre, Case, Post). + +do_otp_5310(#{nodes := [MgcNode, MgNode]}) -> %% 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), + {ok, Mgc} = ?MGC_START(MgcNode, ET), i("[MG] start"), - MgMid = {deviceName, "mg"}, - MgConfig = [], - {ok, Mg} = ?MG_START(MgNode, MgMid, text, tcp, MgConfig, ?MG_VERBOSITY), + {ok, Mg} = ?MG_START(MgNode, text, tcp), d("MG user info: ~p", [?MG_USER_INFO(Mg, all)]), @@ -1897,18 +1820,6 @@ otp_5310(Config) when is_list(Config) -> UserReps3 = ?MGC_USER_INFO(Mgc, replies), d("[MGC] UserReps3: ~p", [UserReps3]), - %% Tell MG to stop - i("[MG] stop"), - ?MG_STOP(Mg), - - %% Tell Mgc to stop - i("[MGC] stop"), - ?MGC_STOP(Mgc), - - %% Cleanup - d("stop nodes"), - ?STOP_NODES([MgcNode, MgNode]), - i("done", []), ok. @@ -1951,29 +1862,37 @@ otp_5619(suite) -> otp_5619(doc) -> "..."; otp_5619(Config) when is_list(Config) -> - put(verbosity, ?TEST_VERBOSITY), - put(sname, "TEST"), - put(tc, otp_5619), - i("starting"), - - MgcNode = make_node_name(mgc), - MgNode = make_node_name(mg), - d("start nodes: " - "~n MgcNode: ~p" - "~n MgNode: ~p", - [MgcNode, MgNode]), - ok = ?START_NODES([MgcNode, MgNode], true), - + Cond = fun() -> ok end, + Pre = fun() -> + put(tc, ?FUNCTION_NAME), + MgcNode = make_node_name(pl_5619_mgc), + MgNode = make_node_name(pl_5619_mg), + i("try start nodes: " + "~n MgcNode: ~p" + "~n MgNode: ~p", + [MgcNode, MgNode]), + Nodes = [MgcNode, MgNode], + ok = ?START_NODES(Nodes, true), + #{nodes => Nodes} + end, + Case = fun(State) -> + do_otp_5619(State) + end, + Post = fun(#{nodes := Nodes}) -> + i("stop nodes"), + ?STOP_NODES(Nodes), + ok + end, + try_tc(?FUNCTION_NAME, Cond, Pre, Case, Post). + +do_otp_5619(#{nodes := [MgcNode, MgNode]}) -> %% Start the MGC and MGs i("[MGC] start"), - MgcMid = {deviceName, "ctrl"}, ET = [{text, tcp}, {text, udp}, {binary, tcp}, {binary, udp}], - {ok, Mgc} = ?MGC_START(MgcNode, MgcMid, ET, [], ?MGC_VERBOSITY), + {ok, Mgc} = ?MGC_START(MgcNode, ET), i("[MG] start"), - MgMid = {deviceName, "mg"}, - MgConfig = [], - {ok, Mg} = ?MG_START(MgNode, MgMid, text, tcp, MgConfig, ?MG_VERBOSITY), + {ok, Mg} = ?MG_START(MgNode, text, tcp), d("MG user info: ~p", [?MG_USER_INFO(Mg, all)]), d("MG conn info: ~p", [?MG_CONN_INFO(Mg, all)]), @@ -2027,11 +1946,7 @@ otp_5619(Config) when is_list(Config) -> i("[MGC] stop~n"), ?MGC_STOP(Mgc), - %% Cleanup - d("stop nodes"), - ?STOP_NODES([MgcNode, MgNode]), - - i("done", []), + i("done"), ok. @@ -2160,14 +2075,12 @@ cre_megacoMessage(Mess) -> %% having received the first pending (which %% indicates that the other side _IS_ %% working on the request). --ifdef(MEGACO_TEST_CODE). init_request_timer({short, Ref}) -> {long, Ref}; init_request_timer(O) -> O. --endif. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -2187,12 +2100,6 @@ decode_msg(M, Mod, Conf) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% tim() -> -%% {A,B,C} = erlang:now(), -%% A*1000000000+B*1000+(C div 1000). - - make_node_name(Name) -> case string:tokens(atom_to_list(node()), [$@]) of [_,Host] -> @@ -2218,11 +2125,31 @@ await_completion(Ids) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +try_tc(TCName, Cond, Pre, Case, Post) -> + try_tc(TCName, "TEST", ?TEST_VERBOSITY, Cond, Pre, Case, Post). + +try_tc(TCName, Name, Verbosity, Cond, Pre, Case, Post) -> + ?TRY_TC(TCName, Name, Verbosity, Cond, Pre, Case, Post). + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + sleep(X) -> receive after X -> ok end. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-ifdef(MEGACO_TEST_CODE). +megaco_test_code() -> + ok. +-else. +megaco_test_code() -> + exit({skip, "Included only if compiled with USE_MEGACO_TEST_CODE=true"}). +-endif. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + p(F, A) -> io:format("*** [~s] ~p ***" "~n " ++ F ++ "~n", |