From ed16e678bef79068aa3e2df5973d1107a8833cd4 Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Thu, 16 May 2024 17:31:44 +0200 Subject: [PATCH] fix(rule apply test): add default values to context Fixes: https://emqx.atlassian.net/browse/EMQX-12378 --- apps/emqx_rule_engine/src/emqx_rule_sqltester.erl | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/emqx_rule_engine/src/emqx_rule_sqltester.erl b/apps/emqx_rule_engine/src/emqx_rule_sqltester.erl index 6d393c24a..2236057e9 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_sqltester.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_sqltester.erl @@ -52,7 +52,8 @@ do_apply_rule( do_apply_matched_rule( Rule, Context, - StopAfterRender + StopAfterRender, + EventTopics ); false -> {error, nomatch} @@ -61,17 +62,21 @@ do_apply_rule( case lists:member(InTopic, EventTopics) of true -> %% the rule is for both publish and events, test it directly - do_apply_matched_rule(Rule, Context, StopAfterRender); + do_apply_matched_rule(Rule, Context, StopAfterRender, EventTopics); false -> {error, nomatch} end end. -do_apply_matched_rule(Rule, Context, StopAfterRender) -> +do_apply_matched_rule(Rule, Context, StopAfterRender, EventTopics) -> update_process_trace_metadata(StopAfterRender), + FullContext = fill_default_values( + hd(EventTopics), + emqx_rule_maps:atom_key_map(Context) + ), ApplyRuleRes = emqx_rule_runtime:apply_rule( Rule, - Context, + FullContext, apply_rule_environment() ), reset_trace_process_metadata(StopAfterRender), @@ -99,6 +104,7 @@ apply_rule_environment() -> #{}. -spec test(#{sql := binary(), context := map()}) -> {ok, map() | list()} | {error, term()}. test(#{sql := Sql, context := Context}) -> + x:show(context, Context), case emqx_rule_sqlparser:parse(Sql) of {ok, Select} -> InTopic = get_in_topic(Context),