Просмотр исходного кода

Merge branch 'develop' into make_test_cases_pass

terry-xiaoyu 6 лет назад
Родитель
Сommit
3cc2bf2bfa
3 измененных файлов с 59 добавлено и 3 удалено
  1. 1 0
      src/emqx_logger.erl
  2. 1 1
      test/emqx_SUITE.erl
  3. 57 2
      test/emqx_logger_SUITE.erl

+ 1 - 0
src/emqx_logger.erl

@@ -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

+ 1 - 1
test/emqx_SUITE.erl

@@ -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),

+ 57 - 2
test/emqx_logger_SUITE.erl

@@ -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(_) ->
-%     error('TODO').
+t_set_all_log_handlers_level(_) ->
+    ?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.