%% %% %CopyrightBegin% %% %% Copyright Ericsson AB 2008-2010. All Rights Reserved. %% %% 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 online 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. %% %% %CopyrightEnd% %% %% %%---------------------------------------------------------------------- %% Purpose: Test mini encoding/decoding (codec) module of Megaco/H.248 %%---------------------------------------------------------------------- -module(megaco_codec_mini_test). %% ---- -include_lib("megaco/include/megaco.hrl"). %% -include_lib("megaco/include/megaco_message_v3.hrl"). -include("megaco_test_lib.hrl"). %% ---- -export([t/0, t/1]). -export([all/0,groups/0,init_per_group/2,end_per_group/2, tickets/0, otp7672_msg01/1, otp7672_msg02/1, init_per_testcase/2, end_per_testcase/2]). %% ---- -define(SET_DBG(S,D), begin put(severity, S), put(dbg, D) end). -define(RESET_DBG(), begin erase(severity), erase(dbg) end). expand(RootCase) -> expand([RootCase], []). expand([], Acc) -> lists:flatten(lists:reverse(Acc)); expand([Case|Cases], Acc) -> case (catch apply(?MODULE,Case,[suite])) of [] -> expand(Cases, [Case|Acc]); C when is_list(C) -> expand(Cases, [expand(C, [])|Acc]); _ -> expand(Cases, [Case|Acc]) end. %% ---- t() -> megaco_test_lib:t(?MODULE). t(Case) -> megaco_test_lib:t({?MODULE, Case}). init_per_testcase(Case, Config) -> C = case lists:suffix("time_test", atom_to_list(Case)) of true -> [{tc_timeout, timer:minutes(10)}|Config]; false -> put(verbosity,trc), Config end, megaco_test_lib:init_per_testcase(Case, C). end_per_testcase(Case, Config) -> erase(verbosity), megaco_test_lib:end_per_testcase(Case, Config). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Top test case all() -> [{group, tickets}]. groups() -> [{tickets, [], [otp7672_msg01, otp7672_msg02]}]. init_per_group(_GroupName, Config) -> Config. end_per_group(_GroupName, Config) -> Config. %% ---- tickets() -> Flag = process_flag(trap_exit, true), Cases = expand(tickets), Fun = fun(Case) -> C = init_per_testcase(Case, [{tc_timeout, timer:minutes(10)}]), io:format("Eval ~w~n", [Case]), Result = case (catch apply(?MODULE, Case, [C])) of {'EXIT', Reason} -> io:format("~n~p exited:~n ~p~n", [Case, Reason]), {error, {Case, Reason}}; Res -> Res end, end_per_testcase(Case, C), Result end, process_flag(trap_exit, Flag), lists:map(Fun, Cases). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # %% Ticket test cases: %% -------------------------------------------------------------- %% otp7672_msg01(suite) -> []; otp7672_msg01(Config) when is_list(Config) -> %% ?SET_DBG(trc, true), d("otp7672_msg01 -> entry", []), ok = otp7672( otp7672_msg01() ), %% ?RESET_DBG(), ok. otp7672_msg02(suite) -> []; otp7672_msg02(Config) when is_list(Config) -> %% ?SET_DBG(trc, true), d("otp7672_msg02 -> entry", []), ok = otp7672( otp7672_msg02() ), %% ?RESET_DBG(), ok. otp7672_msg01() -> <<"!/1 <TEST> ">>. otp7672_msg02() -> <<"!/1 <TE> ">>. otp7672(Msg) -> case megaco_text_mini_decoder:decode_message([], Msg) of {ok, M} -> t("mini decode successfull: ~n~p", [M]), ok; Error -> e("mini decode failed: ~n~p", [Error]), {error, Error} end. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% t(F,A) -> p(printable(get(severity),trc),trc,F,A). d(F,A) -> p(printable(get(severity),dbg),dbg,F,A). %% l(F,A) -> %% p(printable(get(severity),log),log,F,A). e(F,A) -> p(printable(get(severity),err),err,F,A). printable(trc,_) -> true; printable(dbg,trc) -> false; printable(dbg,_) -> true; printable(log,log) -> true; printable(log,err) -> true; printable(err,err) -> true; printable(_,_) -> false. p(true,L,F,A) -> io:format("~s:" ++ F ++ "~n", [image_of(L)|A]); p(_,_,_,_) -> ok. image_of(trc) -> "TRC"; image_of(dbg) -> "DBG"; image_of(log) -> "LOG"; image_of(err) -> "ERR"; image_of(L) -> io_lib:format("~p",[L]).