From b968d4c41625b96fcbcbf865961777f56576b8d9 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Wed, 9 Feb 2022 09:36:27 -0300 Subject: [PATCH 01/13] fix(ctl): fix formatting when printing messages without arguments (4.3) Without passing an empty argument list to `emqx_ctl:print`, formatting instructions like `~n` are being printed literally. ``` Ignore.~nJoin the cluster successfully.~nCluster status: #{running_nodes => ['emqx@emqx-0.int.thalesmg','emqx@emqx-1.int.thalesmg', 'emqx@emqx-2.int.thalesmg','emqx@emqx-3.int.thalesmg', 'emqx@emqx-4.int.thalesmg'], stopped_nodes => []} ``` --- apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl | 2 +- apps/emqx_management/test/emqx_mgmt_SUITE.erl | 12 ++++++------ apps/emqx_recon/test/emqx_recon_SUITE.erl | 3 +-- .../emqx_rule_engine/test/emqx_rule_engine_SUITE.erl | 9 ++++----- lib-ce/emqx_modules/test/emqx_modules_SUITE.erl | 2 +- src/emqx_ctl.erl | 9 ++------- test/emqx_ctl_SUITE.erl | 4 ++-- 7 files changed, 17 insertions(+), 24 deletions(-) diff --git a/apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl b/apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl index eb1ea74f3..81b0ac890 100644 --- a/apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl +++ b/apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl @@ -302,7 +302,7 @@ t_start_stop_supervised(_Config) -> t_acl_cli(_Config) -> meck:new(emqx_ctl, [non_strict, passthrough]), - meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg) end), + meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg, []) end), meck:expect(emqx_ctl, print, fun(Msg, Arg) -> emqx_ctl:format(Msg, Arg) end), meck:expect(emqx_ctl, usage, fun(Usages) -> emqx_ctl:format_usage(Usages) end), meck:expect(emqx_ctl, usage, fun(Cmd, Descr) -> emqx_ctl:format_usage(Cmd, Descr) end), diff --git a/apps/emqx_management/test/emqx_mgmt_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_SUITE.erl index 77d46b744..1b2d05a00 100644 --- a/apps/emqx_management/test/emqx_mgmt_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_SUITE.erl @@ -158,9 +158,9 @@ t_clients_cmd(_) -> timer:sleep(300), emqx_mgmt_cli:clients(["list"]), ?assertMatch({match, _}, re:run(emqx_mgmt_cli:clients(["show", "client12"]), "client12")), - ?assertEqual("ok~n", emqx_mgmt_cli:clients(["kick", "client12"])), + ?assertEqual("ok\n", emqx_mgmt_cli:clients(["kick", "client12"])), timer:sleep(500), - ?assertEqual("ok~n", emqx_mgmt_cli:clients(["kick", "client12"])), + ?assertEqual("ok\n", emqx_mgmt_cli:clients(["kick", "client12"])), receive {'EXIT', T, _} -> ok @@ -272,8 +272,8 @@ t_subscriptions_cmd(_) -> timer:sleep(300), [?assertMatch({match, _} , re:run(Result, "b/b/c")) || Result <- emqx_mgmt_cli:subscriptions(["show", <<"client">>])], - ?assertEqual(emqx_mgmt_cli:subscriptions(["add", "client", "b/b/c", "0"]), "ok~n"), - ?assertEqual(emqx_mgmt_cli:subscriptions(["del", "client", "b/b/c"]), "ok~n"), + ?assertEqual(emqx_mgmt_cli:subscriptions(["add", "client", "b/b/c", "0"]), "ok\n"), + ?assertEqual(emqx_mgmt_cli:subscriptions(["del", "client", "b/b/c"]), "ok\n"), unmock_print(). t_listeners_cmd_old(_) -> @@ -325,7 +325,7 @@ t_plugins_cmd(_) -> ), ?assertEqual( emqx_mgmt_cli:plugins(["unload", "emqx_management"]), - "Plugin emqx_management can not be unloaded.~n" + "Plugin emqx_management can not be unloaded.\n" ), unmock_print(). @@ -359,7 +359,7 @@ t_cli(_) -> mock_print() -> catch meck:unload(emqx_ctl), meck:new(emqx_ctl, [non_strict, passthrough]), - meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg) end), + meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg, []) end), meck:expect(emqx_ctl, print, fun(Msg, Arg) -> emqx_ctl:format(Msg, Arg) end), meck:expect(emqx_ctl, usage, fun(Usages) -> emqx_ctl:format_usage(Usages) end), meck:expect(emqx_ctl, usage, fun(Cmd, Descr) -> emqx_ctl:format_usage(Cmd, Descr) end). diff --git a/apps/emqx_recon/test/emqx_recon_SUITE.erl b/apps/emqx_recon/test/emqx_recon_SUITE.erl index 2abf8f709..22c83eca8 100644 --- a/apps/emqx_recon/test/emqx_recon_SUITE.erl +++ b/apps/emqx_recon/test/emqx_recon_SUITE.erl @@ -105,10 +105,9 @@ cli_usage(_) -> mock_print() -> catch meck:unload(emqx_ctl), meck:new(emqx_ctl, [non_strict, passthrough]), - meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg) end), + meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg, []) end), meck:expect(emqx_ctl, print, fun(Msg, Arg) -> emqx_ctl:format(Msg, Arg) end), meck:expect(emqx_ctl, usage, fun(Usages) -> emqx_ctl:format_usage(Usages) end). unmock_print() -> meck:unload(). - diff --git a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl index f430c3d4e..c2d7d10a2 100644 --- a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl +++ b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl @@ -538,7 +538,7 @@ t_rules_cli(_Config) -> ?assertMatch({match, _}, re:run(RUpdate, "updated")), RDelete = emqx_rule_engine_cli:rules(["delete", RuleId]), - ?assertEqual("ok~n", RDelete), + ?assertEqual("ok\n", RDelete), %ct:pal("RDelete : ~p", [RDelete]), %ct:pal("table action params after deleted: ~p", [ets:tab2list(emqx_action_instance_params)]), @@ -578,7 +578,7 @@ t_resources_cli(_Config) -> %ct:pal("RShow : ~p", [RShow]), RDelete = emqx_rule_engine_cli:resources(["delete", ResId]), - ?assertEqual("ok~n", RDelete), + ?assertEqual("ok\n", RDelete), RShow2 = emqx_rule_engine_cli:resources(["show", ResId]), ?assertMatch({match, _}, re:run(RShow2, "Cannot found")), @@ -1387,7 +1387,7 @@ t_metrics1(_Config) -> ?assertEqual(0, emqx_rule_metrics:get_rules_passed(RuleId)), ?assertEqual(0, emqx_rule_metrics:get_rules_failed(RuleId)), ?assertEqual(0, emqx_rule_metrics:get_rules_exception(RuleId)), - ?assertEqual(0, emqx_rule_metrics:get_rules_no_result(RuleId)), + ?assertEqual(0, emqx_rule_metrics:get_rules_no_result(RuleId)), {ok, Client} = emqtt:start_link([{username, <<"emqx">>}]), {ok, _} = emqtt:connect(Client), ct:sleep(200), @@ -2711,7 +2711,7 @@ set_special_configs(_App) -> mock_print() -> catch meck:unload(emqx_ctl), meck:new(emqx_ctl, [non_strict, passthrough]), - meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg) end), + meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg, []) end), meck:expect(emqx_ctl, print, fun(Msg, Arg) -> emqx_ctl:format(Msg, Arg) end), meck:expect(emqx_ctl, usage, fun(Usages) -> emqx_ctl:format_usage(Usages) end), meck:expect(emqx_ctl, usage, fun(Cmd, Descr) -> emqx_ctl:format_usage(Cmd, Descr) end). @@ -2763,4 +2763,3 @@ t_clear_resource(_) -> t_clear_action(_) -> error('TODO'). - diff --git a/lib-ce/emqx_modules/test/emqx_modules_SUITE.erl b/lib-ce/emqx_modules/test/emqx_modules_SUITE.erl index dc76e8eb7..175b24bba 100644 --- a/lib-ce/emqx_modules/test/emqx_modules_SUITE.erl +++ b/lib-ce/emqx_modules/test/emqx_modules_SUITE.erl @@ -143,7 +143,7 @@ t_join_cluster(_) -> mock_print() -> catch meck:unload(emqx_ctl), meck:new(emqx_ctl, [non_strict, passthrough]), - meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg) end), + meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg, []) end), meck:expect(emqx_ctl, print, fun(Msg, Arg) -> emqx_ctl:format(Msg, Arg) end), meck:expect(emqx_ctl, usage, fun(Usages) -> emqx_ctl:format_usage(Usages) end), meck:expect(emqx_ctl, usage, fun(Cmd, Descr) -> emqx_ctl:format_usage(Cmd, Descr) end). diff --git a/src/emqx_ctl.erl b/src/emqx_ctl.erl index 79616e631..400821537 100644 --- a/src/emqx_ctl.erl +++ b/src/emqx_ctl.erl @@ -43,8 +43,7 @@ ]). %% Exports mainly for test cases --export([ format/1 - , format/2 +-export([ format/2 , format_usage/1 , format_usage/2 ]). @@ -137,7 +136,7 @@ help() -> -spec(print(io:format()) -> ok). print(Msg) -> - io:format("~s", [format(Msg)]). + io:format("~s", [format(Msg, [])]). -spec(print(io:format(), [term()]) -> ok). print(Format, Args) -> @@ -151,10 +150,6 @@ usage(UsageList) -> usage(CmdParams, Desc) -> io:format(format_usage(CmdParams, Desc)). --spec(format(io:format()) -> string()). -format(Msg) -> - lists:flatten(io_lib:format("~s", [Msg])). - -spec(format(io:format(), [term()]) -> string()). format(Format, Args) -> lists:flatten(io_lib:format(Format, Args)). diff --git a/test/emqx_ctl_SUITE.erl b/test/emqx_ctl_SUITE.erl index 8466cf7b0..4832bacff 100644 --- a/test/emqx_ctl_SUITE.erl +++ b/test/emqx_ctl_SUITE.erl @@ -70,7 +70,7 @@ t_print(_) -> ok = emqx_ctl:print("~s", [<<"~!@#$%^&*()">>]), % - check the output of the usage mock_print(), - ?assertEqual("help~n", emqx_ctl:print("help~n")), + ?assertEqual("help\n", emqx_ctl:print("help~n")), ?assertEqual("help", emqx_ctl:print("~s", [help])), ?assertEqual("~!@#$%^&*()", emqx_ctl:print("~s", [<<"~!@#$%^&*()">>])), unmock_print(). @@ -110,7 +110,7 @@ mock_print() -> %% proxy usage/1,2 and print/1,2 to format_xx/1,2 funcs catch meck:unload(emqx_ctl), meck:new(emqx_ctl, [non_strict, passthrough]), - meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg) end), + meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg, []) end), meck:expect(emqx_ctl, print, fun(Msg, Arg) -> emqx_ctl:format(Msg, Arg) end), meck:expect(emqx_ctl, usage, fun(Usages) -> emqx_ctl:format_usage(Usages) end), meck:expect(emqx_ctl, usage, fun(CmdParams, CmdDescr) -> From 5e223ac64f7756da5e81c08095e10e64493a4cff Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Wed, 9 Feb 2022 09:54:39 -0300 Subject: [PATCH 02/13] chore(appup): update appup files --- .../src/emqx_auth_mnesia.appup.src | 79 +++--- .../src/emqx_rule_engine.appup.src | 237 +++++++++--------- src/emqx.appup.src | 126 ++++++---- 3 files changed, 233 insertions(+), 209 deletions(-) diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src index 46fbd1f06..acaf9403d 100644 --- a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src @@ -1,45 +1,38 @@ %% -*- mode: erlang -*- {VSN, - [ - {<<"4.3.[0-3]">>, [ - {add_module,emqx_acl_mnesia_db}, - {add_module,emqx_acl_mnesia_migrator, [emqx_acl_mnesia_db]}, - {update, emqx_auth_mnesia_sup, supervisor}, - {apply, {emqx_acl_mnesia_migrator, start_supervised, []}}, - {load_module,emqx_auth_mnesia_api, brutal_purge,soft_purge,[]}, - {load_module,emqx_acl_mnesia, brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_mnesia_app, brutal_purge,soft_purge,[]}, - {load_module,emqx_acl_mnesia_api, brutal_purge,soft_purge,[]}, - {load_module,emqx_acl_mnesia_cli, brutal_purge,soft_purge,[]} - ]}, - {<<"4.3.4">>, [ - {load_module,emqx_auth_mnesia, brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_mnesia_cli, brutal_purge,soft_purge,[]}, - {load_module,emqx_acl_mnesia, brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_mnesia_app, brutal_purge,soft_purge,[]} - ]}, - {<<".*">>, [ - ]} - ], - [ - {<<"4.3.[0-3]">>, [ - {apply, {emqx_acl_mnesia_migrator, stop_supervised, []}}, - {update, emqx_auth_mnesia_sup, supervisor}, - {load_module,emqx_acl_mnesia_cli, brutal_purge,soft_purge,[]}, - {load_module,emqx_acl_mnesia_api, brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_mnesia_api, brutal_purge,soft_purge,[]}, - {load_module,emqx_acl_mnesia, brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_mnesia_app, brutal_purge,soft_purge,[]}, - {delete_module,emqx_acl_mnesia_migrator}, - {delete_module,emqx_acl_mnesia_db} - ]}, - {<<"4.3.4">>, [ - {load_module,emqx_auth_mnesia, brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_mnesia_cli, brutal_purge,soft_purge,[]}, - {load_module,emqx_acl_mnesia, brutal_purge,soft_purge,[]}, - {load_module,emqx_auth_mnesia_app, brutal_purge,soft_purge,[]} - ]}, - {<<".*">>, [ - ]} - ] -}. + [{<<"4.3.[0-3]">>, + [{load_module,emqx_auth_mnesia_cli,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_mnesia,brutal_purge,soft_purge,[]}, + {add_module,emqx_acl_mnesia_db}, + {add_module,emqx_acl_mnesia_migrator,[emqx_acl_mnesia_db]}, + {update,emqx_auth_mnesia_sup,supervisor}, + {apply,{emqx_acl_mnesia_migrator,start_supervised,[]}}, + {load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}]}, + {<<"4.3.4">>, + [{load_module,emqx_auth_mnesia,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_mnesia_cli,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]}], + [{<<"4.3.[0-3]">>, + [{load_module,emqx_auth_mnesia_cli,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_mnesia,brutal_purge,soft_purge,[]}, + {apply,{emqx_acl_mnesia_migrator,stop_supervised,[]}}, + {update,emqx_auth_mnesia_sup,supervisor}, + {load_module,emqx_acl_mnesia_cli,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_mnesia_api,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}, + {delete_module,emqx_acl_mnesia_migrator}, + {delete_module,emqx_acl_mnesia_db}]}, + {<<"4.3.4">>, + [{load_module,emqx_auth_mnesia,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_mnesia_cli,brutal_purge,soft_purge,[]}, + {load_module,emqx_acl_mnesia,brutal_purge,soft_purge,[]}, + {load_module,emqx_auth_mnesia_app,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]}]}. diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src index fffc6f0f6..76ceda825 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src @@ -1,135 +1,130 @@ %% -*- mode: erlang -*- {VSN, - [ - {"4.3.6", - [ {update, emqx_rule_metrics, {advanced, ["4.3.6"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, + [{"4.3.6", + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.6"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.5", - [ {update, emqx_rule_metrics, {advanced, ["4.3.5"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.5"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.4", - [ {update, emqx_rule_metrics, {advanced, ["4.3.4"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.4"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.3", - [ {update, emqx_rule_metrics, {advanced, ["4.3.3"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.3"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.2", - [ {update, emqx_rule_metrics, {advanced, ["4.3.2"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} - , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.2"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.1", - [ {update, emqx_rule_metrics, {advanced, ["4.3.1"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} - , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}} - , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.1"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.0", - [ {update, emqx_rule_metrics, {advanced, ["4.3.0"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} - , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}} - , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, - {<<".*">>, []} - ], - [ - {"4.3.6", - [ {update, emqx_rule_metrics, {advanced, ["4.3.6"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.0"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]}], + [{"4.3.6", + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.6"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.5", - [ {update, emqx_rule_metrics, {advanced, ["4.3.5"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.5"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.4", - [ {update, emqx_rule_metrics, {advanced, ["4.3.4"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.4"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.3", - [ {update, emqx_rule_metrics, {advanced, ["4.3.3"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.3"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.2", - [ {update, emqx_rule_metrics, {advanced, ["4.3.2"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} - , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.2"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.1", - [ {update, emqx_rule_metrics, {advanced, ["4.3.1"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} - , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}} - , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.1"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.0", - [ {update, emqx_rule_metrics, {advanced, ["4.3.0"]}} - , {load_module,emqx_rule_events,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]} - , {apply,{emqx_stats,cancel_update,[rule_registery_stats]}} - , {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]} - , {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]} - ]}, - {<<".*">>, []} - ] -}. \ No newline at end of file + [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, + {update,emqx_rule_metrics,{advanced,["4.3.0"]}}, + {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, + {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, + {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, + {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, + {<<".*">>,[]}]}. diff --git a/src/emqx.appup.src b/src/emqx.appup.src index c67e8f818..80c38ce3e 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -1,19 +1,22 @@ %% -*- mode: erlang -*- {VSN, [{"4.3.12", - [ {load_module,emqx_metrics,brutal_purge,soft_purge,[]} - , {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}} - , {load_module,emqx_access_control,brutal_purge,soft_purge,[]} - , {load_module,emqx_channel,brutal_purge,soft_purge,[]} - , {load_module,emqx_session,brutal_purge,soft_purge,[]} - , {load_module,emqx_alarm,brutal_purge,soft_purge,[]} - , {load_module,emqx_os_mon,brutal_purge,soft_purge,[]} - , {load_module,emqx,brutal_purge,soft_purge,[]} - , {load_module,emqx_app,brutal_purge,soft_purge,[]} - , {load_module,emqx_limiter,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, + {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, + {load_module,emqx_channel,brutal_purge,soft_purge,[]}, + {load_module,emqx_session,brutal_purge,soft_purge,[]}, + {load_module,emqx_alarm,brutal_purge,soft_purge,[]}, + {load_module,emqx_os_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}, + {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.11", - [{load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, @@ -29,7 +32,9 @@ {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.10", - [{load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, @@ -45,7 +50,9 @@ {load_module,emqx_connection,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.9", - [{load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -66,7 +73,9 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.8", - [{load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -87,7 +96,9 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.7", - [{load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -110,7 +121,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.6", - [{load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -134,7 +146,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.5", - [{load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -159,7 +172,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.4", - [{load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -185,7 +199,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.3", - [{load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -212,7 +227,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.2", - [{load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -239,7 +255,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.1", - [{load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_vm,brutal_purge,soft_purge,[]}, @@ -270,7 +287,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.0", - [{load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,assign_acl_stats_from_ets_to_counter,[]}}, {apply,{emqx_metrics,upgrade_retained_delayed_counter_type,[]}}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, @@ -305,18 +323,21 @@ {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], [{"4.3.12", - [ {load_module,emqx_channel,brutal_purge,soft_purge,[]} - , {load_module,emqx_access_control,brutal_purge,soft_purge,[]} - , {load_module,emqx_metrics,brutal_purge,soft_purge,[]} - , {load_module,emqx_session,brutal_purge,soft_purge,[]} - , {load_module,emqx_alarm,brutal_purge,soft_purge,[]} - , {load_module,emqx_os_mon,brutal_purge,soft_purge,[]} - , {load_module,emqx,brutal_purge,soft_purge,[]} - , {load_module,emqx_app,brutal_purge,soft_purge,[]} - , {load_module,emqx_limiter,brutal_purge,soft_purge,[]} - ]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, + {load_module,emqx_channel,brutal_purge,soft_purge,[]}, + {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, + {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, + {load_module,emqx_session,brutal_purge,soft_purge,[]}, + {load_module,emqx_alarm,brutal_purge,soft_purge,[]}, + {load_module,emqx_os_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx,brutal_purge,soft_purge,[]}, + {load_module,emqx_app,brutal_purge,soft_purge,[]}, + {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.11", - [{load_module,emqx_connection,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, + {load_module,emqx_connection,brutal_purge,soft_purge,[]}, {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, @@ -331,7 +352,9 @@ {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.10", - [{load_module,emqx_channel,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, + {load_module,emqx_channel,brutal_purge,soft_purge,[]}, {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {load_module,emqx_access_control,brutal_purge,soft_purge,[]}, {load_module,emqx_session,brutal_purge,soft_purge,[]}, @@ -346,7 +369,9 @@ {load_module,emqx_connection,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.9", - [{load_module,emqx_vm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, + {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_sys_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, @@ -366,7 +391,9 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.8", - [{load_module,emqx_vm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, + {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_sys_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, @@ -386,7 +413,9 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.7", - [{load_module,emqx_vm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]}, + {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_sys_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, @@ -408,7 +437,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.6", - [{load_module,emqx_vm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_sys_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, @@ -431,7 +461,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.5", - [{load_module,emqx_vm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_sys_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, @@ -455,7 +486,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.4", - [{load_module,emqx_vm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_sys_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, @@ -480,7 +512,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.3", - [{load_module,emqx_vm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_sys_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, @@ -506,7 +539,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.2", - [{load_module,emqx_vm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_sys_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_pqueue,brutal_purge,soft_purge,[]}, {load_module,emqx_mqueue,brutal_purge,soft_purge,[]}, @@ -532,7 +566,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.1", - [{load_module,emqx_vm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_sys_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_pqueue,brutal_purge,soft_purge,[]}, {load_module,emqx_mqueue,brutal_purge,soft_purge,[]}, @@ -562,7 +597,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_limiter,brutal_purge,soft_purge,[]}]}, {"4.3.0", - [{load_module,emqx_vm,brutal_purge,soft_purge,[]}, + [{load_module,emqx_vm_mon,brutal_purge,soft_purge,[]}, + {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_sys_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module,emqx_misc,brutal_purge,soft_purge,[]}, From e053700441527efcbb501931eb21cc9cf4648a2f Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Wed, 9 Feb 2022 11:02:05 -0300 Subject: [PATCH 03/13] style: please elvis checks --- .../test/emqx_acl_mnesia_SUITE.erl | 16 +- apps/emqx_management/test/emqx_mgmt_SUITE.erl | 3 +- .../test/emqx_rule_engine_SUITE.erl | 240 ++++++++++++++---- src/emqx_ctl.erl | 2 + 4 files changed, 202 insertions(+), 59 deletions(-) diff --git a/apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl b/apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl index 81b0ac890..1878dec45 100644 --- a/apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl +++ b/apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl @@ -47,7 +47,9 @@ groups() -> ]}]. init_per_suite(Config) -> - emqx_ct_helpers:start_apps([emqx_modules, emqx_management, emqx_auth_mnesia], fun set_special_configs/1), + emqx_ct_helpers:start_apps( [emqx_modules, emqx_management, emqx_auth_mnesia] + , fun set_special_configs/1 + ), supervisor:terminate_child(emqx_auth_mnesia_sup, emqx_acl_mnesia_migrator), create_default_app(), Config. @@ -151,7 +153,9 @@ run_acl_tests() -> timer:sleep(100), deny = emqx_access_control:check_acl(User1, subscribe, <<"topic/mix">>), allow = emqx_access_control:check_acl(User1, publish, <<"topic/mix">>), - ok = emqx_acl_mnesia_db:add_acl({clientid, <<"test_clientid">>}, <<"topic/mix">>, pubsub, allow), + ok = emqx_acl_mnesia_db:add_acl( {clientid, <<"test_clientid">>} + , <<"topic/mix">>, pubsub, allow + ), timer:sleep(100), allow = emqx_access_control:check_acl(User1, subscribe, <<"topic/mix">>), allow = emqx_access_control:check_acl(User1, publish, <<"topic/mix">>), @@ -411,8 +415,12 @@ t_rest_api(_Config) -> create_conflicting_records() -> Records = [ - #?ACL_TABLE{filter = {{clientid,<<"client6">>}, <<"t">>}, action = pubsub, access = deny, created_at = 0}, - #?ACL_TABLE{filter = {{clientid,<<"client5">>}, <<"t">>}, action = pubsub, access = deny, created_at = 1}, + #?ACL_TABLE{ filter = {{clientid,<<"client6">>}, <<"t">>} + , action = pubsub, access = deny, created_at = 0 + }, + #?ACL_TABLE{ filter = {{clientid,<<"client5">>}, <<"t">>} + , action = pubsub, access = deny, created_at = 1 + }, #?ACL_TABLE2{who = {clientid,<<"client5">>}, rules = [{allow, sub, <<"t">>, 2}]} ], mnesia:transaction(fun() -> lists:foreach(fun mnesia:write/1, Records) end). diff --git a/apps/emqx_management/test/emqx_mgmt_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_SUITE.erl index 1b2d05a00..889a5d9a9 100644 --- a/apps/emqx_management/test/emqx_mgmt_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_SUITE.erl @@ -304,7 +304,8 @@ t_listeners_cmd_new(_) -> ), ?assertEqual( emqx_mgmt_cli:listeners(["restart", "bad:listener:identifier"]), - "Failed to restart bad:listener:identifier listener: {no_such_listener,\"bad:listener:identifier\"}\n" + "Failed to restart bad:listener:identifier listener:" + " {no_such_listener,\"bad:listener:identifier\"}\n" ), unmock_print(). diff --git a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl index c2d7d10a2..02e0f607c 100644 --- a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl +++ b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl @@ -187,7 +187,8 @@ end_per_group(_Groupname, _Config) -> init_per_testcase(t_events, Config) -> ok = emqx_rule_engine:load_providers(), init_events_counters(), - ok = emqx_rule_registry:register_resource_types([make_simple_resource_type(simple_resource_type)]), + ok = emqx_rule_registry:register_resource_types( + [make_simple_resource_type(simple_resource_type)]), ok = emqx_rule_registry:add_action( #action{name = 'hook-metrics-action', app = ?APP, module = ?MODULE, on_create = hook_metrics_action, @@ -206,7 +207,10 @@ init_per_testcase(t_events, Config) -> #{id => <<"rule:t_events">>, rawsql => SQL, actions => [#{id => <<"action:inspect">>, name => 'inspect', args => #{}}, - #{id => <<"action:hook-metrics-action">>, name => 'hook-metrics-action', args => #{}}], + #{ id => <<"action:hook-metrics-action">> + , name => 'hook-metrics-action' + , args => #{} + }], description => <<"Debug rule">>}), ?assertMatch(#rule{id = <<"rule:t_events">>}, Rule), [{hook_points_rules, Rule} | Config]; @@ -439,7 +443,8 @@ t_list_actions_api(_Config) -> ok. t_show_action_api(_Config) -> - {ok, #{code := 0, data := Actions}} = emqx_rule_engine_api:show_action(#{name => 'inspect'}, []), + {ok, #{code := 0, data := Actions}} = + emqx_rule_engine_api:show_action(#{name => 'inspect'}, []), ?assertEqual('inspect', maps:get(name, Actions)), ok. @@ -503,7 +508,8 @@ t_list_resource_types_api(_Config) -> ok. t_show_resource_type_api(_Config) -> - {ok, #{code := 0, data := RShow}} = emqx_rule_engine_api:show_resource_type(#{name => 'built_in'}, []), + {ok, #{code := 0, data := RShow}} = + emqx_rule_engine_api:show_resource_type(#{name => 'built_in'}, []), %ct:pal("RShow : ~p", [RShow]), ?assertEqual(built_in, maps:get(name, RShow)), ok. @@ -521,7 +527,15 @@ t_rules_cli(_Config) -> %ct:pal("Result : ~p", [RCreate]), ?assertMatch({match, _}, re:run(RCreate, "created")), - RuleId = re:replace(re:replace(RCreate, "Rule\s", "", [{return, list}]), "\screated\n", "", [{return, list}]), + RuleId = re:replace( + re:replace( RCreate + , "Rule\s" + , "" + , [{return, list}] + ), + "\screated\n", + "", + [{return, list}]), RList = emqx_rule_engine_cli:rules(["list"]), ?assertMatch({match, _}, re:run(RList, RuleId)), @@ -562,8 +576,17 @@ t_actions_cli(_Config) -> t_resources_cli(_Config) -> mock_print(), - RCreate = emqx_rule_engine_cli:resources(["create", "built_in", "{\"a\" : 1}", "-d", "test resource"]), - ResId = re:replace(re:replace(RCreate, "Resource\s", "", [{return, list}]), "\screated\n", "", [{return, list}]), + RCreate = emqx_rule_engine_cli:resources( + ["create", "built_in", "{\"a\" : 1}", "-d", "test resource"]), + ResId = re:replace( + re:replace( RCreate + , "Resource\s" + , "" + , [{return, list}] + ), + "\screated\n", + "", + [{return, list}]), RList = emqx_rule_engine_cli:resources(["list"]), ?assertMatch({match, _}, re:run(RList, "test resource")), @@ -765,48 +788,121 @@ t_get_rules_ordered_by_ts(_Config) -> t_get_rules_for_2(_Config) -> Len0 = length(emqx_rule_registry:get_rules_for(<<"simple/1">>)), ok = emqx_rule_registry:add_rules( - [make_simple_rule(<<"rule-debug-1">>, <<"select * from \"simple/#\"">>, [<<"simple/#">>]), - make_simple_rule(<<"rule-debug-2">>, <<"select * from \"simple/+\"">>, [<<"simple/+">>]), - make_simple_rule(<<"rule-debug-3">>, <<"select * from \"simple/+/1\"">>, [<<"simple/+/1">>]), - make_simple_rule(<<"rule-debug-4">>, <<"select * from \"simple/1\"">>, [<<"simple/1">>]), - make_simple_rule(<<"rule-debug-5">>, <<"select * from \"simple/2,simple/+,simple/3\"">>, [<<"simple/2">>,<<"simple/+">>, <<"simple/3">>]), - make_simple_rule(<<"rule-debug-6">>, <<"select * from \"simple/2,simple/3,simple/4\"">>, [<<"simple/2">>,<<"simple/3">>, <<"simple/4">>]) + [make_simple_rule( + <<"rule-debug-1">>, + <<"select * from \"simple/#\"">>, + [<<"simple/#">>]), + make_simple_rule( + <<"rule-debug-2">>, + <<"select * from \"simple/+\"">>, + [<<"simple/+">>]), + make_simple_rule( + <<"rule-debug-3">>, + <<"select * from \"simple/+/1\"">>, + [<<"simple/+/1">>]), + make_simple_rule( + <<"rule-debug-4">>, + <<"select * from \"simple/1\"">>, + [<<"simple/1">>]), + make_simple_rule( + <<"rule-debug-5">>, + <<"select * from \"simple/2,simple/+,simple/3\"">>, + [<<"simple/2">>,<<"simple/+">>, <<"simple/3">>]), + make_simple_rule( + <<"rule-debug-6">>, + <<"select * from \"simple/2,simple/3,simple/4\"">>, + [<<"simple/2">>,<<"simple/3">>, <<"simple/4">>]) ]), ?assertEqual(Len0+4, length(emqx_rule_registry:get_rules_for(<<"simple/1">>))), - ok = emqx_rule_registry:remove_rules([<<"rule-debug-1">>, <<"rule-debug-2">>,<<"rule-debug-3">>, <<"rule-debug-4">>,<<"rule-debug-5">>, <<"rule-debug-6">>]), + ok = emqx_rule_registry:remove_rules( + [ <<"rule-debug-1">> + , <<"rule-debug-2">> + , <<"rule-debug-3">> + , <<"rule-debug-4">> + , <<"rule-debug-5">> + , <<"rule-debug-6">> + ]), ok. t_get_rules_with_same_event(_Config) -> PubT = <<"simple/1">>, PubN = length(emqx_rule_registry:get_rules_with_same_event(PubT)), ?assertEqual([], emqx_rule_registry:get_rules_with_same_event(<<"$events/client_connected">>)), - ?assertEqual([], emqx_rule_registry:get_rules_with_same_event(<<"$events/client_disconnected">>)), - ?assertEqual([], emqx_rule_registry:get_rules_with_same_event(<<"$events/session_subscribed">>)), - ?assertEqual([], emqx_rule_registry:get_rules_with_same_event(<<"$events/session_unsubscribed">>)), + ?assertEqual( + [], + emqx_rule_registry:get_rules_with_same_event(<<"$events/client_disconnected">>)), + ?assertEqual( + [], + emqx_rule_registry:get_rules_with_same_event(<<"$events/session_subscribed">>)), + ?assertEqual( + [], + emqx_rule_registry:get_rules_with_same_event(<<"$events/session_unsubscribed">>)), ?assertEqual([], emqx_rule_registry:get_rules_with_same_event(<<"$events/message_delivered">>)), ?assertEqual([], emqx_rule_registry:get_rules_with_same_event(<<"$events/message_acked">>)), ?assertEqual([], emqx_rule_registry:get_rules_with_same_event(<<"$events/message_dropped">>)), ok = emqx_rule_registry:add_rules( [make_simple_rule(<<"r1">>, <<"select * from \"simple/#\"">>, [<<"simple/#">>]), make_simple_rule(<<"r2">>, <<"select * from \"abc/+\"">>, [<<"abc/+">>]), - make_simple_rule(<<"r3">>, <<"select * from \"$events/client_connected\"">>, [<<"$events/client_connected">>]), - make_simple_rule(<<"r4">>, <<"select * from \"$events/client_disconnected\"">>, [<<"$events/client_disconnected">>]), - make_simple_rule(<<"r5">>, <<"select * from \"$events/session_subscribed\"">>, [<<"$events/session_subscribed">>]), - make_simple_rule(<<"r6">>, <<"select * from \"$events/session_unsubscribed\"">>, [<<"$events/session_unsubscribed">>]), - make_simple_rule(<<"r7">>, <<"select * from \"$events/message_delivered\"">>, [<<"$events/message_delivered">>]), - make_simple_rule(<<"r8">>, <<"select * from \"$events/message_acked\"">>, [<<"$events/message_acked">>]), - make_simple_rule(<<"r9">>, <<"select * from \"$events/message_dropped\"">>, [<<"$events/message_dropped">>]), - make_simple_rule(<<"r10">>, <<"select * from \"t/1, $events/session_subscribed, $events/client_connected\"">>, [<<"t/1">>, <<"$events/session_subscribed">>, <<"$events/client_connected">>]) + make_simple_rule( + <<"r3">>, + <<"select * from \"$events/client_connected\"">>, + [<<"$events/client_connected">>]), + make_simple_rule( + <<"r4">>, + <<"select * from \"$events/client_disconnected\"">>, + [<<"$events/client_disconnected">>]), + make_simple_rule( + <<"r5">>, + <<"select * from \"$events/session_subscribed\"">>, + [<<"$events/session_subscribed">>]), + make_simple_rule( + <<"r6">>, + <<"select * from \"$events/session_unsubscribed\"">>, + [<<"$events/session_unsubscribed">>]), + make_simple_rule( + <<"r7">>, + <<"select * from \"$events/message_delivered\"">>, + [<<"$events/message_delivered">>]), + make_simple_rule( + <<"r8">>, + <<"select * from \"$events/message_acked\"">>, + [<<"$events/message_acked">>]), + make_simple_rule( + <<"r9">>, + <<"select * from \"$events/message_dropped\"">>, + [<<"$events/message_dropped">>]), + make_simple_rule( + <<"r10">>, + <<"select * from \"t/1, $events/session_subscribed," + " $events/client_connected\"">>, + [<<"t/1">>, <<"$events/session_subscribed">>, <<"$events/client_connected">>]) ]), ?assertEqual(PubN + 3, length(emqx_rule_registry:get_rules_with_same_event(PubT))), - ?assertEqual(2, length(emqx_rule_registry:get_rules_with_same_event(<<"$events/client_connected">>))), - ?assertEqual(1, length(emqx_rule_registry:get_rules_with_same_event(<<"$events/client_disconnected">>))), - ?assertEqual(2, length(emqx_rule_registry:get_rules_with_same_event(<<"$events/session_subscribed">>))), - ?assertEqual(1, length(emqx_rule_registry:get_rules_with_same_event(<<"$events/session_unsubscribed">>))), - ?assertEqual(1, length(emqx_rule_registry:get_rules_with_same_event(<<"$events/message_delivered">>))), - ?assertEqual(1, length(emqx_rule_registry:get_rules_with_same_event(<<"$events/message_acked">>))), - ?assertEqual(1, length(emqx_rule_registry:get_rules_with_same_event(<<"$events/message_dropped">>))), - ok = emqx_rule_registry:remove_rules([<<"r1">>, <<"r2">>,<<"r3">>, <<"r4">>,<<"r5">>, <<"r6">>, <<"r7">>, <<"r8">>, <<"r9">>, <<"r10">>]), + ?assertEqual( + 2, + length(emqx_rule_registry:get_rules_with_same_event(<<"$events/client_connected">>))), + ?assertEqual( + 1, + length(emqx_rule_registry:get_rules_with_same_event(<<"$events/client_disconnected">>))), + ?assertEqual( + 2, + length(emqx_rule_registry:get_rules_with_same_event(<<"$events/session_subscribed">>))), + ?assertEqual( + 1, + length(emqx_rule_registry:get_rules_with_same_event(<<"$events/session_unsubscribed">>))), + ?assertEqual( + 1, + length(emqx_rule_registry:get_rules_with_same_event(<<"$events/message_delivered">>))), + ?assertEqual( + 1, + length(emqx_rule_registry:get_rules_with_same_event(<<"$events/message_acked">>))), + ?assertEqual( + 1, + length(emqx_rule_registry:get_rules_with_same_event(<<"$events/message_dropped">>))), + ok = emqx_rule_registry:remove_rules( + [<<"r1">>, <<"r2">>,<<"r3">>, + <<"r4">>,<<"r5">>, <<"r6">>, + <<"r7">>, <<"r8">>, <<"r9">>, <<"r10">>]), ok. t_add_get_remove_action(_Config) -> @@ -882,7 +978,11 @@ register_resource_types() -> emqx_rule_registry:register_resource_types([ResType1,ResType2]), ok. get_resource_type() -> - ?assertMatch({ok, #resource_type{name = <<"resource-type-debug-1">>}}, emqx_rule_registry:find_resource_type(<<"resource-type-debug-1">>)), + ?assertMatch( { ok + , #resource_type{name = <<"resource-type-debug-1">>} + } + , emqx_rule_registry:find_resource_type(<<"resource-type-debug-1">>) + ), ok. get_resource_types() -> ResTypes = emqx_rule_registry:get_resource_types(), @@ -947,11 +1047,18 @@ client_disconnected(Client, Client2) -> verify_event('client.disconnected'), ok. session_subscribed(Client2) -> - {ok, _, _} = emqtt:subscribe(Client2, #{'User-Property' => {<<"topic_name">>, <<"t1">>}}, <<"t1">>, 1), + {ok, _, _} = emqtt:subscribe( Client2 + , #{'User-Property' => {<<"topic_name">>, <<"t1">>}} + , <<"t1">> + , 1 + ), verify_event('session.subscribed'), ok. session_unsubscribed(Client2) -> - {ok, _, _} = emqtt:unsubscribe(Client2, #{'User-Property' => {<<"topic_name">>, <<"t1">>}}, <<"t1">>), + {ok, _, _} = emqtt:unsubscribe( Client2 + , #{'User-Property' => {<<"topic_name">>, <<"t1">>}} + , <<"t1">> + ), verify_event('session.unsubscribed'), ok. @@ -977,7 +1084,10 @@ t_mfa_action(_Config) -> {ok, #rule{id = Id}} = emqx_rule_engine:create_rule( #{id => <<"rule:t_mfa_action">>, rawsql => SQL, - actions => [#{id => <<"action:mfa-test">>, name => 'mfa-action', args => #{}}], + actions => [#{ id => <<"action:mfa-test">> + , name => 'mfa-action' + , args => #{} + }], description => <<"Debug rule">>}), {ok, Client} = emqtt:start_link([{username, <<"emqx">>}]), {ok, _} = emqtt:connect(Client), @@ -1676,12 +1786,18 @@ t_sqlparse_foreach_1(_Config) -> Sql3 = "foreach payload.sensors " "from \"t/#\" ", ?assertMatch({ok,[#{item := #{<<"cmd">> := <<"1">>}, clientid := <<"c_a">>}, - #{item := #{<<"cmd">> := <<"2">>, <<"name">> := <<"ct">>}, clientid := <<"c_a">>}]}, + #{item := #{ <<"cmd">> := <<"2">> + , <<"name">> := <<"ct">> + } + , clientid := <<"c_a">>}]}, emqx_rule_sqltester:test( #{<<"rawsql">> => Sql3, - <<"ctx">> => #{ - <<"payload">> => <<"{\"sensors\": [{\"cmd\":\"1\"}, {\"cmd\":\"2\",\"name\":\"ct\"}]}">>, <<"clientid">> => <<"c_a">>, - <<"topic">> => <<"t/a">>}})), + <<"ctx">> => + #{ <<"payload">> => <<"{\"sensors\": [{\"cmd\":\"1\"}, " + "{\"cmd\":\"2\",\"name\":\"ct\"}]}">> + , <<"clientid">> => <<"c_a">> + , <<"topic">> => <<"t/a">> + }})), Sql4 = "foreach payload.sensors " "from \"t/#\" ", {ok,[#{metadata := #{rule_id := TRuleId}}, @@ -1766,12 +1882,17 @@ t_sqlparse_foreach_4(_Config) -> #{<<"payload">> => <<"{\"sensors\": [{\"cmd\":\"1\"}, {\"cmd\":\"2\"}]}">>, <<"topic">> => <<"t/a">>}})), - ?assertMatch({ok,[#{<<"msg_type">> := <<"1">>, <<"name">> := <<"n1">>}, #{<<"msg_type">> := <<"2">>}]}, + ?assertMatch({ ok + , [ #{<<"msg_type">> := <<"1">>, <<"name">> := <<"n1">>} + , #{<<"msg_type">> := <<"2">>} + ] + }, emqx_rule_sqltester:test( #{<<"rawsql">> => Sql, <<"ctx">> => #{<<"payload">> => - <<"{\"sensors\": [{\"cmd\":\"1\", \"name\":\"n1\"}, {\"cmd\":\"2\"}, {\"name\":\"n3\"}]}">>, + <<"{\"sensors\": [{\"cmd\":\"1\", \"name\":\"n1\"}, " + "{\"cmd\":\"2\"}, {\"name\":\"n3\"}]}">>, <<"topic">> => <<"t/a">>}})), ?assertMatch({ok,[]}, emqx_rule_sqltester:test( @@ -1828,8 +1949,13 @@ t_sqlparse_foreach_7(_Config) -> "incase is_not_null(info.cmd) " "from \"t/#\" " "where s.page = '2' ", - Payload = <<"{\"sensors\": {\"page\": 2, \"collection\": {\"info\":[{\"name\":\"cmd1\", \"cmd\":\"1\"}, {\"cmd\":\"2\"}]} } }">>, - ?assertMatch({ok,[#{<<"name">> := <<"cmd1">>, <<"msg_type">> := <<"1">>}, #{<<"msg_type">> := <<"2">>}]}, + Payload = <<"{\"sensors\": {\"page\": 2, \"collection\": " + "{\"info\":[{\"name\":\"cmd1\", \"cmd\":\"1\"}, {\"cmd\":\"2\"}]} } }">>, + ?assertMatch({ ok + , [ #{<<"name">> := <<"cmd1">>, <<"msg_type">> := <<"1">>} + , #{<<"msg_type">> := <<"2">>} + ] + }, emqx_rule_sqltester:test( #{<<"rawsql">> => Sql, <<"ctx">> => @@ -1854,7 +1980,8 @@ t_sqlparse_foreach_8(_Config) -> "incase is_map(info) " "from \"t/#\" " "where s.page = '2' ", - Payload = <<"{\"sensors\": {\"page\": 2, \"collection\": {\"info\":[\"haha\", {\"name\":\"cmd1\", \"cmd\":\"1\"}]} } }">>, + Payload = <<"{\"sensors\": {\"page\": 2, \"collection\": " + "{\"info\":[\"haha\", {\"name\":\"cmd1\", \"cmd\":\"1\"}]} } }">>, ?assertMatch({ok,[#{<<"name">> := <<"cmd1">>, <<"msg_type">> := <<"1">>}]}, emqx_rule_sqltester:test( #{<<"rawsql">> => Sql, @@ -1862,10 +1989,11 @@ t_sqlparse_foreach_8(_Config) -> #{<<"payload">> => Payload, <<"topic">> => <<"t/a">>}})), - Sql3 = "foreach json_decode(payload) as p, p.sensors as s, s.collection as c, sublist(2,1,c.info) as info " - "do info.cmd as msg_type, info.name as name " - "from \"t/#\" " - "where s.page = '2' ", + Sql3 = "foreach json_decode(payload) as p, p.sensors as s," + " s.collection as c, sublist(2,1,c.info) as info " + "do info.cmd as msg_type, info.name as name " + "from \"t/#\" " + "where s.page = '2' ", [?assertMatch({ok,[#{<<"name">> := <<"cmd1">>, <<"msg_type">> := <<"1">>}]}, emqx_rule_sqltester:test( #{<<"rawsql">> => SqlN, @@ -1992,10 +2120,12 @@ t_sqlparse_array_index_1(_Config) -> Sql3 = "select " " payload.x[2].y " "from \"t/#\" ", - ?assertMatch({ok, #{<<"payload">> := #{<<"x">> := [#{<<"y">> := 3}]}}}, emqx_rule_sqltester:test( + ?assertMatch( {ok, #{<<"payload">> := #{<<"x">> := [#{<<"y">> := 3}]}}} + , emqx_rule_sqltester:test( #{<<"rawsql">> => Sql3, <<"ctx">> => #{<<"payload">> => #{<<"x">> => [1,#{y => 3},4]}, - <<"topic">> => <<"t/a">>}})), + <<"topic">> => <<"t/a">>}}) + ), %% index get with 'as' Sql4 = "select " @@ -2228,10 +2358,12 @@ t_sqlparse_new_map(_Config) -> t_sqlparse_payload_as(_Config) -> %% https://github.com/emqx/emqx/issues/3866 Sql00 = "SELECT " - " payload, map_get('engineWorkTime', payload.params, -1) as payload.params.engineWorkTime, " + " payload, map_get('engineWorkTime', payload.params, -1) " + "as payload.params.engineWorkTime, " " map_get('hydOilTem', payload.params, -1) as payload.params.hydOilTem " "FROM \"t/#\" ", - Payload1 = <<"{ \"msgId\": 1002, \"params\": { \"convertTemp\": 20, \"engineSpeed\": 42, \"hydOilTem\": 30 } }">>, + Payload1 = <<"{ \"msgId\": 1002, \"params\": " + "{ \"convertTemp\": 20, \"engineSpeed\": 42, \"hydOilTem\": 30 } }">>, {ok, Res01} = emqx_rule_sqltester:test( #{<<"rawsql">> => Sql00, <<"ctx">> => #{<<"payload">> => Payload1, diff --git a/src/emqx_ctl.erl b/src/emqx_ctl.erl index 400821537..7b73c50fe 100644 --- a/src/emqx_ctl.erl +++ b/src/emqx_ctl.erl @@ -57,6 +57,8 @@ , code_change/3 ]). +-elvis([{elvis_style, invalid_dynamic_call, #{ignore => [emqx_ctl]}}]). + -record(state, {seq = 0}). -type(cmd() :: atom()). From c316cc464f599880f998fb876f2876a8829c146e Mon Sep 17 00:00:00 2001 From: zhanghongtong Date: Mon, 7 Feb 2022 15:20:10 +0800 Subject: [PATCH 04/13] ci(build_packages): push muilt arch image for aws ecr --- .github/workflows/build_packages.yaml | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index efae501e6..faa04db49 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -338,6 +338,11 @@ jobs: strategy: matrix: profile: ${{fromJSON(needs.prepare.outputs.profiles)}} + registry: + - 'docker.io' + include: + - profile: emqx + registry: 'public.ecr.aws' steps: - uses: actions/download-artifact@v2 @@ -351,10 +356,24 @@ jobs: with: image: tonistiigi/binfmt:latest platforms: all + - uses: aws-actions/configure-aws-credentials@v1 + if: matrix.repository == 'public.ecr.aws' + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_DEFAULT_REGION }} + - name: Push image to aws ecr + if: matrix.repository == 'public.ecr.aws' + run: aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws + - uses: docker/login-action@v1 + if: matrix.repository == 'docker.io' + with: + username: ${{ secrets.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} - uses: docker/metadata-action@v3 id: meta with: - images: ${{ github.repository_owner }}/${{ matrix.profile }} + images: ${{ matrix.registry }}/${{ github.repository_owner }}/${{ matrix.profile }} flavor: | latest=${{ !github.event.release.prerelease }} tags: | @@ -363,11 +382,6 @@ jobs: type=match,pattern=[v|e](.*),group=1 labels: org.opencontainers.image.otp.version=${{ matrix.otp }} - - uses: docker/login-action@v1 - if: github.event_name == 'release' - with: - username: ${{ secrets.DOCKER_HUB_USER }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - uses: docker/build-push-action@v2 if: matrix.profile != 'emqx-ee' with: @@ -398,20 +412,6 @@ jobs: EMQX_NAME=${{ matrix.profile }} file: source/deploy/docker/Dockerfile.enterprise context: source - - uses: aws-actions/configure-aws-credentials@v1 - if: github.event_name == 'release' && !github.event.release.prerelease && matrix.profile == 'emqx' - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ secrets.AWS_DEFAULT_REGION }} - - name: Push image to aws ecr - if: github.event_name == 'release' && !github.event.release.prerelease && matrix.profile == 'emqx' - run: | - version=${GITHUB_REF##*/} - docker pull emqx/emqx:${version#v} - docker tag emqx/emqx:${version#v} public.ecr.aws/emqx/emqx:${version#v} - aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws - docker push public.ecr.aws/emqx/emqx:${version#v} delete-artifact: runs-on: ubuntu-20.04 From ec0843633cb5721eca74680244368342ef654dd4 Mon Sep 17 00:00:00 2001 From: zhanghongtong Date: Thu, 10 Feb 2022 09:36:16 +0800 Subject: [PATCH 05/13] chore: change step name to match the actual commands --- .github/workflows/build_packages.yaml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index faa04db49..1a5603126 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -362,7 +362,7 @@ jobs: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ secrets.AWS_DEFAULT_REGION }} - - name: Push image to aws ecr + - name: Docker login to aws ecr if: matrix.repository == 'public.ecr.aws' run: aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws - uses: docker/login-action@v1 @@ -491,13 +491,6 @@ jobs: -X POST \ -d "{\"repo\":\"emqx/emqx\", \"tag\": \"${{ env.version }}\" }" \ ${{ secrets.EMQX_IO_RELEASE_API }} - - name: push docker image to aws ecr - if: github.event_name == 'release' && matrix.profile == 'emqx' - run: | - set -e -x -u - aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws - docker tag emqx/emqx:${version#v} public.ecr.aws/emqx/emqx:${version#v} - docker push public.ecr.aws/emqx/emqx:${version#v} - name: update repo.emqx.io if: github.event_name == 'release' && endsWith(github.repository, 'enterprise') && matrix.profile == 'emqx-ee' run: | From b09a38d53f0f0e7e34ef7537089b27d95fb9eaba Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Thu, 10 Feb 2022 18:30:22 +0800 Subject: [PATCH 06/13] chore: update release to 4.3.12 --- include/emqx_release.hrl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/emqx_release.hrl b/include/emqx_release.hrl index e919c12de..197ec2906 100644 --- a/include/emqx_release.hrl +++ b/include/emqx_release.hrl @@ -29,7 +29,7 @@ -ifndef(EMQX_ENTERPRISE). --define(EMQX_RELEASE, {opensource, "4.3.11"}). +-define(EMQX_RELEASE, {opensource, "4.3.12"}). -else. From fdef292ef7b2643549239321ecbf194956938783 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Thu, 10 Feb 2022 09:31:36 -0300 Subject: [PATCH 07/13] fix(appup): rm redundant `load_module` instruction after `update` --- .../src/emqx_rule_engine.appup.src | 42 +++++++------------ 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src index 76ceda825..c6990ceb7 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src +++ b/apps/emqx_rule_engine/src/emqx_rule_engine.appup.src @@ -1,31 +1,27 @@ %% -*- mode: erlang -*- {VSN, [{"4.3.6", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.6"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.6"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.5", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.5"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.5"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.4", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.4"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.4"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.3", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.3"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.3"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, @@ -33,8 +29,7 @@ {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.2", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.2"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.2"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, @@ -43,8 +38,7 @@ {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.1", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.1"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.1"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, @@ -53,8 +47,7 @@ {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.0", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.0"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.0"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, @@ -65,31 +58,27 @@ {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {<<".*">>,[]}], [{"4.3.6", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.6"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.6"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.5", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.5"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.5"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.4", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.4"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.4"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.3", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.3"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.3"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_actions,brutal_purge,soft_purge,[]}, @@ -97,8 +86,7 @@ {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.2", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.2"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.2"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, {apply,{emqx_stats,cancel_update,[rule_registery_stats]}}, @@ -107,8 +95,7 @@ {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.1", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.1"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.1"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_registry,brutal_purge,soft_purge,[]}, @@ -117,8 +104,7 @@ {load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]}, {"4.3.0", - [{load_module,emqx_rule_metrics,brutal_purge,soft_purge,[]}, - {update,emqx_rule_metrics,{advanced,["4.3.0"]}}, + [{update,emqx_rule_metrics,{advanced,["4.3.0"]}}, {load_module,emqx_rule_events,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]}, {load_module,emqx_rule_engine,brutal_purge,soft_purge,[]}, From 28508e23ecfb17a29027bd4dd76700657688a787 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Fri, 11 Feb 2022 13:07:44 +0100 Subject: [PATCH 08/13] ci: dump logs when failed to stop --- .ci/build_packages/tests.sh | 7 ++++++- .github/workflows/build_packages.yaml | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.ci/build_packages/tests.sh b/.ci/build_packages/tests.sh index 3b97c01b8..4b02d92ae 100755 --- a/.ci/build_packages/tests.sh +++ b/.ci/build_packages/tests.sh @@ -153,7 +153,12 @@ relup_test(){ ./emqx/bin/emqx install "${TARGET_VERSION}" [ "$(./emqx/bin/emqx versions |grep permanent | awk '{print $2}')" = "${TARGET_VERSION}" ] || exit 1 ./emqx/bin/emqx_ctl status - ./emqx/bin/emqx stop + if ! ./emqx/bin/emqx stop; then + cat emqx/log/erlang.log.1 || true + cat emqx/log/emqx.log.1 || true + echo "failed to stop emqx" + exit 1 + fi rm -rf emqx done fi diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index 1a5603126..41376cc19 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -195,7 +195,12 @@ jobs: exit 1 fi ./emqx/bin/emqx_ctl status - ./emqx/bin/emqx stop + if ! ./emqx/bin/emqx stop; then + cat emqx/log/erlang.log.1 || true + cat emqx/log/emqx.log.1 || true + echo "failed to stop emqx" + exit 1 + fi rm -rf emqx openssl dgst -sha256 ./_packages/${{ matrix.profile }}/$pkg_name | awk '{print $2}' > ./_packages/${{ matrix.profile }}/$pkg_name.sha256 - uses: actions/upload-artifact@v1 From a42403e0460c0e6666b28a9c4d465c053e29210b Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Fri, 11 Feb 2022 15:56:25 +0100 Subject: [PATCH 09/13] ci: quite unzip --- .ci/build_packages/tests.sh | 2 +- .ci/docker-compose-file/http-service/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/build_packages/tests.sh b/.ci/build_packages/tests.sh index 4b02d92ae..b12957540 100755 --- a/.ci/build_packages/tests.sh +++ b/.ci/build_packages/tests.sh @@ -145,7 +145,7 @@ relup_test(){ find . -maxdepth 1 -name "${EMQX_NAME}-*-${ARCH}.zip" | while read -r pkg; do packagename=$(basename "${pkg}") - unzip "$packagename" + unzip -q "$packagename" ./emqx/bin/emqx start || ( tail emqx/log/emqx.log.1 && exit 1 ) ./emqx/bin/emqx_ctl status ./emqx/bin/emqx versions diff --git a/.ci/docker-compose-file/http-service/Dockerfile b/.ci/docker-compose-file/http-service/Dockerfile index df1f7f98c..6601841ef 100644 --- a/.ci/docker-compose-file/http-service/Dockerfile +++ b/.ci/docker-compose-file/http-service/Dockerfile @@ -1,7 +1,7 @@ FROM tomcat:10.0.5 RUN wget https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip \ - && unzip apache-maven-3.6.3-bin.zip \ + && unzip -q apache-maven-3.6.3-bin.zip \ && mv apache-maven-3.6.3 /opt/apache-maven-3.6.3/ \ && ln -s /opt/apache-maven-3.6.3/ /opt/maven ENV M2_HOME=/opt/maven From 2df43f8b5fa34db1b95de1c6c472490c74d6edeb Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Fri, 11 Feb 2022 16:19:02 +0100 Subject: [PATCH 10/13] ci: add more time to allow stop --- .ci/build_packages/tests.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.ci/build_packages/tests.sh b/.ci/build_packages/tests.sh index b12957540..01fdc07dc 100755 --- a/.ci/build_packages/tests.sh +++ b/.ci/build_packages/tests.sh @@ -152,6 +152,7 @@ relup_test(){ cp "${PACKAGE_PATH}/${EMQX_NAME}"-*-"${TARGET_VERSION}-${ARCH}".zip ./emqx/releases ./emqx/bin/emqx install "${TARGET_VERSION}" [ "$(./emqx/bin/emqx versions |grep permanent | awk '{print $2}')" = "${TARGET_VERSION}" ] || exit 1 + export EMQX_WAIT_FOR_STOP=300 ./emqx/bin/emqx_ctl status if ! ./emqx/bin/emqx stop; then cat emqx/log/erlang.log.1 || true From 257f6cc589d756195aaedd29a7b1e88d879fa8a5 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Fri, 11 Feb 2022 21:24:40 +0100 Subject: [PATCH 11/13] ci: fix action typo repository -> registry --- .github/workflows/build_packages.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index 41376cc19..15992ebb1 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -362,16 +362,16 @@ jobs: image: tonistiigi/binfmt:latest platforms: all - uses: aws-actions/configure-aws-credentials@v1 - if: matrix.repository == 'public.ecr.aws' + if: matrix.registry == 'public.ecr.aws' with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ secrets.AWS_DEFAULT_REGION }} - name: Docker login to aws ecr - if: matrix.repository == 'public.ecr.aws' + if: matrix.registry == 'public.ecr.aws' run: aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws - uses: docker/login-action@v1 - if: matrix.repository == 'docker.io' + if: matrix.registry == 'docker.io' with: username: ${{ secrets.DOCKER_HUB_USER }} password: ${{ secrets.DOCKER_HUB_TOKEN }} From 857e9aee5253bb2b4949fc03e08ae22b14ff99e3 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Sat, 12 Feb 2022 10:48:28 +0100 Subject: [PATCH 12/13] ci: fix sha256sum in windows for some reason Get-FileHash (or maybe later piped tools) produced non-text content --- .github/workflows/build_packages.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index 15992ebb1..393bc2a79 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -108,7 +108,7 @@ jobs: mkdir -p _packages/${{ matrix.profile }} Compress-Archive -Path _build/${{ matrix.profile }}/rel/emqx -DestinationPath _build/${{ matrix.profile }}/rel/$pkg_name mv _build/${{ matrix.profile }}/rel/$pkg_name _packages/${{ matrix.profile }} - Get-FileHash -Path "_packages/${{ matrix.profile }}/$pkg_name" | Format-List | grep 'Hash' | awk '{print $3}' > _packages/${{ matrix.profile }}/$pkg_name.sha256 + sha256sum "_packages/${{ matrix.profile }}/$pkg_name" | head -c 64 > "_packages/${{ matrix.profile }}/${pkg_name}.sha256" - name: run emqx timeout-minutes: 1 run: | @@ -202,7 +202,7 @@ jobs: exit 1 fi rm -rf emqx - openssl dgst -sha256 ./_packages/${{ matrix.profile }}/$pkg_name | awk '{print $2}' > ./_packages/${{ matrix.profile }}/$pkg_name.sha256 + sha256sum ./_packages/${{ matrix.profile }}/$pkg_name | head -c64 > ./_packages/${{ matrix.profile }}/$pkg_name.sha256 - uses: actions/upload-artifact@v1 if: startsWith(github.ref, 'refs/tags/') with: From 5171d3811c37ebccd9704837320a598a706b12ec Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Sat, 12 Feb 2022 12:24:48 +0100 Subject: [PATCH 13/13] ci: revert to openssl digest for sha256 sum on mac --- .github/workflows/build_packages.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index 393bc2a79..87f42f55e 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -202,7 +202,8 @@ jobs: exit 1 fi rm -rf emqx - sha256sum ./_packages/${{ matrix.profile }}/$pkg_name | head -c64 > ./_packages/${{ matrix.profile }}/$pkg_name.sha256 + #sha256sum ./_packages/${{ matrix.profile }}/$pkg_name | head -c64 > ./_packages/${{ matrix.profile }}/$pkg_name.sha256 + openssl dgst -sha256 ./_packages/${{ matrix.profile }}/$pkg_name | awk '{print $2}' > ./_packages/${{ matrix.profile }}/$pkg_name.sha256 - uses: actions/upload-artifact@v1 if: startsWith(github.ref, 'refs/tags/') with: