From 3e7014351836674011cd92d7a9d3ed8b42eb66a1 Mon Sep 17 00:00:00 2001 From: zhanghongtong Date: Fri, 1 Nov 2019 17:07:32 +0800 Subject: [PATCH 1/3] Fix error test case for emqx --- test/emqx_SUITE.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/emqx_SUITE.erl b/test/emqx_SUITE.erl index 1ea78a446..b612b100b 100644 --- a/test/emqx_SUITE.erl +++ b/test/emqx_SUITE.erl @@ -45,7 +45,6 @@ t_stop_start(_) -> false = emqx:is_running(node()). t_get_env(_) -> - emqx:start(), ?assertEqual(undefined, emqx:get_env(undefined_key)), ?assertEqual(default_value, emqx:get_env(undefined_key, default_value)), application:set_env(emqx, undefined_key, hello), @@ -54,6 +53,7 @@ t_get_env(_) -> application:unset_env(emqx, undefined_key). t_emqx_pubsub_api(_) -> + emqx:start(), true = emqx:is_running(node()), {ok, C} = emqtt:start_link([{host, "localhost"}, {clientid, "myclient"}]), {ok, _} = emqtt:connect(C), From 0f2609b56de8332225b00d27a1916e96b52776b5 Mon Sep 17 00:00:00 2001 From: terry-xiaoyu <506895667@qq.com> Date: Fri, 1 Nov 2019 17:36:56 +0800 Subject: [PATCH 2/3] Add test case for logger parse transform --- test/emqx_logger_SUITE.erl | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/test/emqx_logger_SUITE.erl b/test/emqx_logger_SUITE.erl index 4b0dc2c9a..58380be48 100644 --- a/test/emqx_logger_SUITE.erl +++ b/test/emqx_logger_SUITE.erl @@ -22,6 +22,14 @@ -include_lib("eunit/include/eunit.hrl"). -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'()."). all() -> emqx_ct:all(?MODULE). @@ -83,7 +91,19 @@ t_set_log_level(_) -> ?assertEqual(ok, ?LOGGER:set_log_level(debug)). t_parse_transform(_) -> - error('TODO'). + {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]), + AST = emqx_logger:parse_transform(Forms, []), + ct:log("=====: ~p", [AST]), + ?assertNotEqual(false, lists:keyfind('$logger_header', 3, AST)). t_set_metadata_peername(_) -> ?assertEqual(ok, ?LOGGER:set_metadata_peername("for_test")). @@ -91,3 +111,13 @@ t_set_metadata_peername(_) -> t_set_metadata_clientid(_) -> ?assertEqual(ok, ?LOGGER:set_metadata_clientid(<<>>)), ?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. From d946848d42dbea6f90aad4522640c5d2a1df6e94 Mon Sep 17 00:00:00 2001 From: terry-xiaoyu <506895667@qq.com> Date: Fri, 1 Nov 2019 18:21:46 +0800 Subject: [PATCH 3/3] Improve testcases for emqx_logger --- src/emqx_logger.erl | 1 + test/emqx_logger_SUITE.erl | 31 ++++++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/emqx_logger.erl b/src/emqx_logger.erl index 0cca94e21..cc167591e 100644 --- a/src/emqx_logger.erl +++ b/src/emqx_logger.erl @@ -43,6 +43,7 @@ , set_primary_log_level/1 , set_log_handler_level/2 , set_log_level/1 + , set_all_log_handlers_level/1 ]). -export([ get_primary_log_level/0 diff --git a/test/emqx_logger_SUITE.erl b/test/emqx_logger_SUITE.erl index 58380be48..053b04fc6 100644 --- a/test/emqx_logger_SUITE.erl +++ b/test/emqx_logger_SUITE.erl @@ -31,6 +31,12 @@ "-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). init_per_testcase(_TestCase, Config) -> @@ -90,6 +96,9 @@ t_set_log_level(_) -> ?assertMatch({error, _Error}, ?LOGGER:set_log_level(for_test)), ?assertEqual(ok, ?LOGGER:set_log_level(debug)). +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), @@ -101,9 +110,25 @@ t_parse_transform(_) -> end || Ts <- FormToks], ct:log("=====: ~p", [Forms]), - AST = emqx_logger:parse_transform(Forms, []), - ct:log("=====: ~p", [AST]), - ?assertNotEqual(false, lists:keyfind('$logger_header', 3, AST)). + 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(_) -> ?assertEqual(ok, ?LOGGER:set_metadata_peername("for_test")).