Merge branch 'develop' into make_test_cases_pass

This commit is contained in:
terry-xiaoyu 2019-11-01 20:05:52 +08:00
commit 3cc2bf2bfa
3 changed files with 59 additions and 3 deletions

View File

@ -43,6 +43,7 @@
, set_primary_log_level/1 , set_primary_log_level/1
, set_log_handler_level/2 , set_log_handler_level/2
, set_log_level/1 , set_log_level/1
, set_all_log_handlers_level/1
]). ]).
-export([ get_primary_log_level/0 -export([ get_primary_log_level/0

View File

@ -45,7 +45,6 @@ t_stop_start(_) ->
false = emqx:is_running(node()). false = emqx:is_running(node()).
t_get_env(_) -> t_get_env(_) ->
emqx:start(),
?assertEqual(undefined, emqx:get_env(undefined_key)), ?assertEqual(undefined, emqx:get_env(undefined_key)),
?assertEqual(default_value, emqx:get_env(undefined_key, default_value)), ?assertEqual(default_value, emqx:get_env(undefined_key, default_value)),
application:set_env(emqx, undefined_key, hello), application:set_env(emqx, undefined_key, hello),
@ -54,6 +53,7 @@ t_get_env(_) ->
application:unset_env(emqx, undefined_key). application:unset_env(emqx, undefined_key).
t_emqx_pubsub_api(_) -> t_emqx_pubsub_api(_) ->
emqx:start(),
true = emqx:is_running(node()), true = emqx:is_running(node()),
{ok, C} = emqtt:start_link([{host, "localhost"}, {clientid, "myclient"}]), {ok, C} = emqtt:start_link([{host, "localhost"}, {clientid, "myclient"}]),
{ok, _} = emqtt:connect(C), {ok, _} = emqtt:connect(C),

View File

@ -22,6 +22,20 @@
-include_lib("eunit/include/eunit.hrl"). -include_lib("eunit/include/eunit.hrl").
-define(LOGGER, emqx_logger). -define(LOGGER, emqx_logger).
-define(a, "a").
-define(PARSE_TRANS_TEST_CODE,
"-module(mytest).\n"
"-logger_header(\"[MyTest]\").\n"
"-export([run/0]).\n"
"-compile({parse_transform, logger_header}).\n"
"run() -> '$logger_header'().").
-define(PARSE_TRANS_TEST_CODE2,
"-module(mytest).\n"
"-export([run/0]).\n"
"-compile({parse_transform, logger_header}).\n"
"run() -> '$logger_header'().").
all() -> emqx_ct:all(?MODULE). all() -> emqx_ct:all(?MODULE).
@ -82,8 +96,39 @@ t_set_log_level(_) ->
?assertMatch({error, _Error}, ?LOGGER:set_log_level(for_test)), ?assertMatch({error, _Error}, ?LOGGER:set_log_level(for_test)),
?assertEqual(ok, ?LOGGER:set_log_level(debug)). ?assertEqual(ok, ?LOGGER:set_log_level(debug)).
% t_parse_transform(_) -> t_set_all_log_handlers_level(_) ->
% error('TODO'). ?assertMatch({error, _Error}, ?LOGGER:set_all_log_handlers_level(for_test)).
t_parse_transform(_) ->
{ok, Toks, _EndLine} = erl_scan:string(?PARSE_TRANS_TEST_CODE),
FormToks = split_toks_at_dot(Toks),
Forms = [case erl_parse:parse_form(Ts) of
{ok, Form} ->
Form;
{error, Reason} ->
erlang:error({parse_form_error, Ts, Reason})
end
|| Ts <- FormToks],
%ct:log("=====: ~p", [Forms]),
AST1 = emqx_logger:parse_transform(Forms, []),
%ct:log("=====: ~p", [AST1]),
?assertNotEqual(false, lists:keyfind('$logger_header', 3, AST1)).
t_parse_transform_empty_header(_) ->
{ok, Toks, _EndLine} = erl_scan:string(?PARSE_TRANS_TEST_CODE2),
FormToks = split_toks_at_dot(Toks),
Forms = [case erl_parse:parse_form(Ts) of
{ok, Form} ->
Form;
{error, Reason} ->
erlang:error({parse_form_error, Ts, Reason})
end
|| Ts <- FormToks],
%ct:log("=====: ~p", [Forms]),
AST2 = emqx_logger:parse_transform(Forms++[{eof, 15}], []),
%ct:log("=====: ~p", [AST2]),
?assertNotEqual(false, lists:keyfind('$logger_header', 3, AST2)).
t_set_metadata_peername(_) -> t_set_metadata_peername(_) ->
?assertEqual(ok, ?LOGGER:set_metadata_peername("for_test")). ?assertEqual(ok, ?LOGGER:set_metadata_peername("for_test")).
@ -91,3 +136,13 @@ t_set_metadata_peername(_) ->
t_set_metadata_clientid(_) -> t_set_metadata_clientid(_) ->
?assertEqual(ok, ?LOGGER:set_metadata_clientid(<<>>)), ?assertEqual(ok, ?LOGGER:set_metadata_clientid(<<>>)),
?assertEqual(ok, ?LOGGER:set_metadata_clientid("for_test")). ?assertEqual(ok, ?LOGGER:set_metadata_clientid("for_test")).
split_toks_at_dot(AllToks) ->
case lists:splitwith(fun is_no_dot/1, AllToks) of
{Toks, [{dot,_}=Dot]} -> [Toks ++ [Dot]];
{Toks, [{dot,_}=Dot | Tl]} -> [Toks ++ [Dot] | split_toks_at_dot(Tl)]
end.
is_no_dot({dot,_}) -> false;
is_no_dot(_) -> true.