From a3e263676a1efa68df9ab73527605e0e418a71dd Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Fri, 21 Apr 2023 14:58:30 +0800 Subject: [PATCH 1/3] fix: ensure default_plugins/0 is the same as loaded_plugins.tmpl. --- src/emqx_plugins.erl | 7 +++++-- test/emqx_plugins_SUITE.erl | 23 ++++++++++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/emqx_plugins.erl b/src/emqx_plugins.erl index 887c191c1..7f7d531c0 100644 --- a/src/emqx_plugins.erl +++ b/src/emqx_plugins.erl @@ -252,11 +252,14 @@ default_plugins() -> %% retainer is managed by emqx_modules. %% default is true in data/load_modules. **NOT HERE** {emqx_retainer, false}, - {emqx_recon, true}, + {emqx_recon, false}, %% emqx_telemetry is not exist in enterprise. %% {emqx_telemetry, false}, {emqx_rule_engine, true}, - {emqx_bridge_mqtt, false} + {emqx_bridge_mqtt, false}, + {emqx_schema_registry, true}, + {emqx_eviction_agent, true}, + {emqx_node_rebalance, true} ]. -endif. diff --git a/test/emqx_plugins_SUITE.erl b/test/emqx_plugins_SUITE.erl index b5c5d723f..32628808b 100644 --- a/test/emqx_plugins_SUITE.erl +++ b/test/emqx_plugins_SUITE.erl @@ -111,9 +111,12 @@ default_plugins() -> {emqx_dashboard, true}, {emqx_management, true}, {emqx_modules, true}, - {emqx_recon, true}, + {emqx_recon, false}, {emqx_retainer, false}, - {emqx_rule_engine, true} + {emqx_rule_engine, true}, + {emqx_schema_registry, true}, + {emqx_eviction_agent, true}, + {emqx_node_rebalance, true} ]. -endif. @@ -125,9 +128,23 @@ t_ensure_default_loaded_plugins_file(Config) -> ok = emqx_plugins:load(), {ok, Contents} = file:consult(TmpFilepath), DefaultPlugins = default_plugins(), - ?assertEqual(DefaultPlugins, lists:sort(Contents)), + ?assertEqual(lists:sort(DefaultPlugins), lists:sort(Contents)), + + GenContents = get_loaded_plugins_from_tmpl(), + Fun = fun({Name, _}) -> Name end, + Plugins = lists:sort(lists:map(Fun, Contents)), + ExpectPlugins = lists:sort(lists:map(Fun, GenContents)), + ?assertEqual(ExpectPlugins, Plugins), + ok. +get_loaded_plugins_from_tmpl() -> + %% /_build/test/logs/ct_run.test@127.0.0.1.xxxx + {ok, Cwd} = file:get_cwd(), + Home = filename:dirname(filename:dirname(filename:dirname(filename:dirname(Cwd)))), + {ok, Plugins} = file:consult(filename:join([Home, "data", "loaded_plugins.tmpl"])), + Plugins. + t_init_config(_) -> ConfFile = "emqx_mini_plugin.config", Data = "[{emqx_mini_plugin,[{mininame ,test}]}].", From ad7a13f4f368e6fd987298bf16958509c84d2b71 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Fri, 21 Apr 2023 15:11:53 +0800 Subject: [PATCH 2/3] chore: update emqx.appup version --- src/emqx.appup.src | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/emqx.appup.src b/src/emqx.appup.src index dcb3b7fa3..9d85f019b 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -3,12 +3,14 @@ {VSN, [{"4.4.17", [{load_module,emqx_relup,brutal_purge,soft_purge,[]}, - {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}]}, {"4.4.16", [{load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_relup,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.15", [{load_module,emqx_channel,brutal_purge,soft_purge,[]}, @@ -16,6 +18,7 @@ {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_packet,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.14", @@ -23,6 +26,7 @@ {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, {load_module,emqx_banned,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, @@ -41,6 +45,7 @@ {load_module,emqx_broker,brutal_purge,soft_purge,[]}, {load_module,emqx_banned,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, {load_module,emqx_packet,brutal_purge,soft_purge,[]}, @@ -55,6 +60,7 @@ {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_banned,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, @@ -69,6 +75,7 @@ [{load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, {load_module,emqx_banned,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]}, @@ -87,6 +94,7 @@ [{load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, {load_module,emqx_banned,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]}, @@ -531,17 +539,20 @@ {<<".*">>,[]}], [{"4.4.17", [{load_module,emqx_relup,brutal_purge,soft_purge,[]}, - {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}]}, {"4.4.16", [{load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_relup,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}]}, {"4.4.15", [{load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, {load_module,emqx_packet,brutal_purge,soft_purge,[]}, {load_module,emqx_relup,brutal_purge,soft_purge,[]}, @@ -550,6 +561,7 @@ [{load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, {load_module,emqx_banned,brutal_purge,soft_purge,[]}, @@ -565,6 +577,7 @@ [{load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, {load_module,emqx_banned,brutal_purge,soft_purge,[]}, @@ -582,6 +595,7 @@ {load_module,emqx_pool,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, {load_module,emqx_banned,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, @@ -598,6 +612,7 @@ {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_keepalive,brutal_purge,soft_purge,[]}, {load_module,emqx_broker,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_banned,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, @@ -620,6 +635,7 @@ {load_module,emqx_rule_actions_trans,brutal_purge,soft_purge,[]}, {load_module,emqx_packet,brutal_purge,soft_purge,[]}, {load_module,emqx_listeners,brutal_purge,soft_purge,[]}, + {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_kernel_sup,brutal_purge,soft_purge,[]}, {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, {load_module,emqx_relup,brutal_purge,soft_purge,[]}, From 5b898d2f7a443033442d30f91efcce75c6816f20 Mon Sep 17 00:00:00 2001 From: zhongwencool Date: Fri, 21 Apr 2023 18:17:46 +0800 Subject: [PATCH 3/3] test: check plugins's enabled/disabled --- test/emqx_plugins_SUITE.erl | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/test/emqx_plugins_SUITE.erl b/test/emqx_plugins_SUITE.erl index 32628808b..6e0994757 100644 --- a/test/emqx_plugins_SUITE.erl +++ b/test/emqx_plugins_SUITE.erl @@ -103,6 +103,9 @@ default_plugins() -> {emqx_telemetry, true} ]. +get_vars() -> + 'rebar.config':overlay_vars_rel_common(cloud). + -else. default_plugins() -> @@ -119,6 +122,10 @@ default_plugins() -> {emqx_node_rebalance, true} ]. + +get_vars() -> + 'rebar.config':ee_overlay_vars(bin). + -endif. t_ensure_default_loaded_plugins_file(Config) -> %% this will trigger it to write the default plugins to the @@ -131,19 +138,24 @@ t_ensure_default_loaded_plugins_file(Config) -> ?assertEqual(lists:sort(DefaultPlugins), lists:sort(Contents)), GenContents = get_loaded_plugins_from_tmpl(), - Fun = fun({Name, _}) -> Name end, - Plugins = lists:sort(lists:map(Fun, Contents)), - ExpectPlugins = lists:sort(lists:map(Fun, GenContents)), - ?assertEqual(ExpectPlugins, Plugins), - + ?assertEqual(lists:sort(Contents), lists:sort(GenContents)), ok. get_loaded_plugins_from_tmpl() -> %% /_build/test/logs/ct_run.test@127.0.0.1.xxxx {ok, Cwd} = file:get_cwd(), Home = filename:dirname(filename:dirname(filename:dirname(filename:dirname(Cwd)))), - {ok, Plugins} = file:consult(filename:join([Home, "data", "loaded_plugins.tmpl"])), - Plugins. + FileName = filename:join([Home, "rebar.config.erl"]), + {ok, Module, Code} = compile:file(FileName, [export_all, binary]), + {module, Module} = code:load_binary(Module, FileName, Code), + {ok, Bin} = file:read_file(filename:join([Home, "data", "loaded_plugins.tmpl"])), + Vars = maps:from_list(lists:map(fun({K, V}) -> {to_str(K), to_str(V)} end, get_vars())), + RenderBin = bbmustache:render(Bin, Vars), + TmpFile = "./tmpfile", + ok = file:write_file(TmpFile, RenderBin), + {ok, Contents} = file:consult(TmpFile), + file:delete(TmpFile), + Contents. t_init_config(_) -> ConfFile = "emqx_mini_plugin.config", @@ -222,3 +234,8 @@ t_unload_plugin(_) -> ?assertEqual({error,error}, emqx_plugins:unload_plugin(error_app)), ok = meck:unload(application). + +to_str(Atom) when is_atom(Atom) -> + atom_to_list(Atom); +to_str(Str) when is_list(Str) -> + Str.