test(apply rule trace): add test case for republish and console print
This commit is contained in:
parent
b9cd75eef0
commit
e32745bca6
|
@ -252,11 +252,14 @@ create_rule_and_action_http(BridgeType, RuleTopic, Config) ->
|
||||||
create_rule_and_action_http(BridgeType, RuleTopic, Config, Opts) ->
|
create_rule_and_action_http(BridgeType, RuleTopic, Config, Opts) ->
|
||||||
BridgeName = ?config(bridge_name, Config),
|
BridgeName = ?config(bridge_name, Config),
|
||||||
BridgeId = emqx_bridge_resource:bridge_id(BridgeType, BridgeName),
|
BridgeId = emqx_bridge_resource:bridge_id(BridgeType, BridgeName),
|
||||||
|
create_rule_and_action(BridgeId, RuleTopic, Opts).
|
||||||
|
|
||||||
|
create_rule_and_action(Action, RuleTopic, Opts) ->
|
||||||
SQL = maps:get(sql, Opts, <<"SELECT * FROM \"", RuleTopic/binary, "\"">>),
|
SQL = maps:get(sql, Opts, <<"SELECT * FROM \"", RuleTopic/binary, "\"">>),
|
||||||
Params = #{
|
Params = #{
|
||||||
enable => true,
|
enable => true,
|
||||||
sql => SQL,
|
sql => SQL,
|
||||||
actions => [BridgeId]
|
actions => [Action]
|
||||||
},
|
},
|
||||||
Path = emqx_mgmt_api_test_util:api_path(["rules"]),
|
Path = emqx_mgmt_api_test_util:api_path(["rules"]),
|
||||||
AuthHeader = emqx_mgmt_api_test_util:auth_header_(),
|
AuthHeader = emqx_mgmt_api_test_util:auth_header_(),
|
||||||
|
|
|
@ -26,7 +26,24 @@
|
||||||
-define(CONF_DEFAULT, <<"rule_engine {rules {}}">>).
|
-define(CONF_DEFAULT, <<"rule_engine {rules {}}">>).
|
||||||
|
|
||||||
all() ->
|
all() ->
|
||||||
emqx_common_test_helpers:all(?MODULE).
|
[
|
||||||
|
emqx_common_test_helpers:all(?MODULE),
|
||||||
|
{group, republish},
|
||||||
|
{group, console_print}
|
||||||
|
].
|
||||||
|
|
||||||
|
groups() ->
|
||||||
|
[
|
||||||
|
{republish, [], basic_tests()},
|
||||||
|
{console_print, [], basic_tests()}
|
||||||
|
].
|
||||||
|
|
||||||
|
basic_tests() ->
|
||||||
|
[
|
||||||
|
t_basic_apply_rule_trace_ruleid,
|
||||||
|
t_basic_apply_rule_trace_clientid,
|
||||||
|
t_basic_apply_rule_trace_ruleid_stop_after_render
|
||||||
|
].
|
||||||
|
|
||||||
init_per_suite(Config) ->
|
init_per_suite(Config) ->
|
||||||
application:load(emqx_conf),
|
application:load(emqx_conf),
|
||||||
|
@ -50,6 +67,12 @@ init_per_suite(Config) ->
|
||||||
emqx_mgmt_api_test_util:init_suite(),
|
emqx_mgmt_api_test_util:init_suite(),
|
||||||
[{apps, Apps} | Config].
|
[{apps, Apps} | Config].
|
||||||
|
|
||||||
|
init_per_group(GroupName, Config) ->
|
||||||
|
[{group_name, GroupName} | Config].
|
||||||
|
|
||||||
|
end_per_group(_GroupName, Config) ->
|
||||||
|
Config.
|
||||||
|
|
||||||
end_per_suite(Config) ->
|
end_per_suite(Config) ->
|
||||||
Apps = ?config(apps, Config),
|
Apps = ?config(apps, Config),
|
||||||
emqx_mgmt_api_test_util:end_suite(),
|
emqx_mgmt_api_test_util:end_suite(),
|
||||||
|
@ -67,28 +90,58 @@ end_per_testcase(_TestCase, _Config) ->
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
t_basic_apply_rule_trace_ruleid(Config) ->
|
t_basic_apply_rule_trace_ruleid(Config) ->
|
||||||
basic_apply_rule_test_helper(Config, ruleid, false).
|
basic_apply_rule_test_helper(get_action(Config), ruleid, false).
|
||||||
|
|
||||||
t_basic_apply_rule_trace_clientid(Config) ->
|
t_basic_apply_rule_trace_clientid(Config) ->
|
||||||
basic_apply_rule_test_helper(Config, clientid, false).
|
basic_apply_rule_test_helper(get_action(Config), clientid, false).
|
||||||
|
|
||||||
t_basic_apply_rule_trace_ruleid_stop_after_render(Config) ->
|
t_basic_apply_rule_trace_ruleid_stop_after_render(Config) ->
|
||||||
basic_apply_rule_test_helper(Config, ruleid, true).
|
basic_apply_rule_test_helper(get_action(Config), ruleid, true).
|
||||||
|
|
||||||
basic_apply_rule_test_helper(Config, TraceType, StopAfterRender) ->
|
get_action(Config) ->
|
||||||
|
case ?config(group_name, Config) of
|
||||||
|
republish ->
|
||||||
|
republish_action();
|
||||||
|
console_print ->
|
||||||
|
console_print_action();
|
||||||
|
_ ->
|
||||||
|
make_http_bridge(Config)
|
||||||
|
end.
|
||||||
|
|
||||||
|
make_http_bridge(Config) ->
|
||||||
HTTPServerConfig = ?config(http_server, Config),
|
HTTPServerConfig = ?config(http_server, Config),
|
||||||
emqx_bridge_http_test_lib:make_bridge(HTTPServerConfig),
|
emqx_bridge_http_test_lib:make_bridge(HTTPServerConfig),
|
||||||
#{status := connected} = emqx_bridge_v2:health_check(
|
#{status := connected} = emqx_bridge_v2:health_check(
|
||||||
http, emqx_bridge_http_test_lib:bridge_name()
|
http, emqx_bridge_http_test_lib:bridge_name()
|
||||||
),
|
),
|
||||||
|
BridgeName = ?config(bridge_name, Config),
|
||||||
|
emqx_bridge_resource:bridge_id(http, BridgeName).
|
||||||
|
|
||||||
|
republish_action() ->
|
||||||
|
#{
|
||||||
|
<<"args">> =>
|
||||||
|
#{
|
||||||
|
<<"mqtt_properties">> => #{},
|
||||||
|
<<"payload">> => <<"MY PL">>,
|
||||||
|
<<"qos">> => 0,
|
||||||
|
<<"retain">> => false,
|
||||||
|
<<"topic">> => <<"rule_apply_test_SUITE">>,
|
||||||
|
<<"user_properties">> => <<>>
|
||||||
|
},
|
||||||
|
<<"function">> => <<"republish">>
|
||||||
|
}.
|
||||||
|
|
||||||
|
console_print_action() ->
|
||||||
|
#{<<"function">> => <<"console">>}.
|
||||||
|
|
||||||
|
basic_apply_rule_test_helper(Action, TraceType, StopAfterRender) ->
|
||||||
%% Create Rule
|
%% Create Rule
|
||||||
RuleTopic = iolist_to_binary([<<"my_rule_topic/">>, atom_to_binary(?FUNCTION_NAME)]),
|
RuleTopic = iolist_to_binary([<<"my_rule_topic/">>, atom_to_binary(?FUNCTION_NAME)]),
|
||||||
SQL = <<"SELECT payload.id as id FROM \"", RuleTopic/binary, "\"">>,
|
SQL = <<"SELECT payload.id as id FROM \"", RuleTopic/binary, "\"">>,
|
||||||
{ok, #{<<"id">> := RuleId}} =
|
{ok, #{<<"id">> := RuleId}} =
|
||||||
emqx_bridge_testlib:create_rule_and_action_http(
|
emqx_bridge_testlib:create_rule_and_action(
|
||||||
http,
|
Action,
|
||||||
RuleTopic,
|
RuleTopic,
|
||||||
Config,
|
|
||||||
#{sql => SQL}
|
#{sql => SQL}
|
||||||
),
|
),
|
||||||
ClientId = <<"c_emqx">>,
|
ClientId = <<"c_emqx">>,
|
||||||
|
@ -127,9 +180,14 @@ basic_apply_rule_test_helper(Config, TraceType, StopAfterRender) ->
|
||||||
io:format("THELOG:~n~s", [Bin]),
|
io:format("THELOG:~n~s", [Bin]),
|
||||||
?assertNotEqual(nomatch, binary:match(Bin, [<<"rule_activated">>])),
|
?assertNotEqual(nomatch, binary:match(Bin, [<<"rule_activated">>])),
|
||||||
?assertNotEqual(nomatch, binary:match(Bin, [<<"SQL_yielded_result">>])),
|
?assertNotEqual(nomatch, binary:match(Bin, [<<"SQL_yielded_result">>])),
|
||||||
?assertNotEqual(nomatch, binary:match(Bin, [<<"bridge_action">>])),
|
case Action of
|
||||||
?assertNotEqual(nomatch, binary:match(Bin, [<<"action_template_rendered">>])),
|
A when is_binary(A) ->
|
||||||
?assertNotEqual(nomatch, binary:match(Bin, [<<"QUERY_ASYNC">>]))
|
?assertNotEqual(nomatch, binary:match(Bin, [<<"bridge_action">>])),
|
||||||
|
?assertNotEqual(nomatch, binary:match(Bin, [<<"QUERY_ASYNC">>]));
|
||||||
|
_ ->
|
||||||
|
?assertNotEqual(nomatch, binary:match(Bin, [<<"call_action_function">>]))
|
||||||
|
end,
|
||||||
|
?assertNotEqual(nomatch, binary:match(Bin, [<<"action_template_rendered">>]))
|
||||||
end
|
end
|
||||||
),
|
),
|
||||||
case StopAfterRender of
|
case StopAfterRender of
|
||||||
|
|
Loading…
Reference in New Issue