test(rule_engine_metrics): add more test
This commit is contained in:
parent
1211c658fc
commit
2074dd63f9
|
@ -1336,36 +1336,41 @@ t_metrics(_Config) ->
|
||||||
ok = emqx_rule_engine:load_providers(),
|
ok = emqx_rule_engine:load_providers(),
|
||||||
TopicRule = create_simple_repub_rule(
|
TopicRule = create_simple_repub_rule(
|
||||||
<<"t2">>,
|
<<"t2">>,
|
||||||
"SELECT payload.msg as msg "
|
"SELECT payload.msg as msg, payload.idx as idx "
|
||||||
"FROM \"t1\" "
|
"FROM \"t1\" "
|
||||||
"WHERE msg= 'hello' "),
|
"WHERE msg = 'hello' and idx + 1 > 2 "),
|
||||||
#rule{id = RuleId} = TopicRule,
|
#rule{id = RuleId} = TopicRule,
|
||||||
?assertEqual(0, emqx_rule_metrics:get_rules_matched(RuleId)),
|
?assertEqual(0, emqx_rule_metrics:get_rules_matched(RuleId)),
|
||||||
?assertEqual(0, emqx_rule_metrics:get_rules_passed(RuleId)),
|
?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_failed(RuleId)),
|
||||||
?assertEqual(0, emqx_rule_metrics:get_rules_exception(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, Client} = emqtt:start_link([{username, <<"emqx">>}]),
|
||||||
{ok, _} = emqtt:connect(Client),
|
{ok, _} = emqtt:connect(Client),
|
||||||
ct:sleep(200),
|
ct:sleep(200),
|
||||||
|
PublishMoreTimes = fun(SomeMessage, Times) ->
|
||||||
emqtt:publish(Client, <<"t1">>, <<"{\"msg\":\"hello\"}">>, 0),
|
[begin
|
||||||
ct:sleep(200),
|
emqtt:publish(Client, <<"t1">>, SomeMessage, 0),
|
||||||
?assertEqual(1, emqx_rule_metrics:get_rules_matched(RuleId)),
|
ct:sleep(200)
|
||||||
?assertEqual(1, emqx_rule_metrics:get_rules_passed(RuleId)),
|
end || _ <- lists:seq(1, Times)] end,
|
||||||
|
PublishMoreTimes(<<"{\"msg\":\"hello\", \"idx\":5}">>, 10),
|
||||||
|
?assertEqual(10, emqx_rule_metrics:get_rules_matched(RuleId)),
|
||||||
|
?assertEqual(10, emqx_rule_metrics:get_rules_passed(RuleId)),
|
||||||
?assertEqual(0, emqx_rule_metrics:get_rules_failed(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_exception(RuleId)),
|
||||||
?assertEqual(0, emqx_rule_metrics:get_rules_no_result(RuleId)),
|
?assertEqual(0, emqx_rule_metrics:get_rules_no_result(RuleId)),
|
||||||
|
PublishMoreTimes(<<"{\"msg\":\"hello\", \"idx\":0}">>, 10),
|
||||||
emqtt:publish(Client, <<"t1">>, <<"{\"msg1\":\"hello\"}">>, 0),
|
?assertEqual(20, emqx_rule_metrics:get_rules_matched(RuleId)),
|
||||||
ct:sleep(200),
|
?assertEqual(10, emqx_rule_metrics:get_rules_passed(RuleId)),
|
||||||
?assertEqual(2, emqx_rule_metrics:get_rules_matched(RuleId)),
|
?assertEqual(10, emqx_rule_metrics:get_rules_failed(RuleId)),
|
||||||
?assertEqual(1, emqx_rule_metrics:get_rules_passed(RuleId)),
|
|
||||||
?assertEqual(1, emqx_rule_metrics:get_rules_failed(RuleId)),
|
|
||||||
?assertEqual(0, emqx_rule_metrics:get_rules_exception(RuleId)),
|
?assertEqual(0, emqx_rule_metrics:get_rules_exception(RuleId)),
|
||||||
?assertEqual(1, emqx_rule_metrics:get_rules_no_result(RuleId)),
|
?assertEqual(10, emqx_rule_metrics:get_rules_no_result(RuleId)),
|
||||||
|
PublishMoreTimes(<<"{\"msg\":\"hello\", \"idx\":\"somevalue\"}">>, 10),
|
||||||
|
?assertEqual(30, emqx_rule_metrics:get_rules_matched(RuleId)),
|
||||||
|
?assertEqual(10, emqx_rule_metrics:get_rules_passed(RuleId)),
|
||||||
|
?assertEqual(20, emqx_rule_metrics:get_rules_failed(RuleId)),
|
||||||
|
?assertEqual(10, emqx_rule_metrics:get_rules_exception(RuleId)),
|
||||||
|
?assertEqual(10, emqx_rule_metrics:get_rules_no_result(RuleId)),
|
||||||
emqtt:stop(Client),
|
emqtt:stop(Client),
|
||||||
emqx_rule_registry:remove_rule(TopicRule).
|
emqx_rule_registry:remove_rule(TopicRule).
|
||||||
|
|
||||||
|
@ -1374,7 +1379,7 @@ t_metrics1(_Config) ->
|
||||||
TopicRule = create_simple_repub_rule(
|
TopicRule = create_simple_repub_rule(
|
||||||
<<"t2">>,
|
<<"t2">>,
|
||||||
"FOREACH payload.sensors "
|
"FOREACH payload.sensors "
|
||||||
"DO clientid,item.name as name, item.idx as idx "
|
"DO clientid,item.name as name, item.idx + 1 as idx "
|
||||||
"INCASE item.idx >= 1 "
|
"INCASE item.idx >= 1 "
|
||||||
"FROM \"t1\" "),
|
"FROM \"t1\" "),
|
||||||
#rule{id = RuleId} = TopicRule,
|
#rule{id = RuleId} = TopicRule,
|
||||||
|
@ -1382,33 +1387,51 @@ t_metrics1(_Config) ->
|
||||||
?assertEqual(0, emqx_rule_metrics:get_rules_passed(RuleId)),
|
?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_failed(RuleId)),
|
||||||
?assertEqual(0, emqx_rule_metrics:get_rules_exception(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, Client} = emqtt:start_link([{username, <<"emqx">>}]),
|
||||||
{ok, _} = emqtt:connect(Client),
|
{ok, _} = emqtt:connect(Client),
|
||||||
ct:sleep(200),
|
ct:sleep(200),
|
||||||
|
PublishMoreTimes = fun(SomeMessage, Times) ->
|
||||||
|
[begin
|
||||||
|
emqtt:publish(Client, <<"t1">>, SomeMessage, 0),
|
||||||
|
ct:sleep(200)
|
||||||
|
end || _ <- lists:seq(1, Times)] end,
|
||||||
Message = <<"{\"date\": \"2020-04-24\",
|
Message = <<"{\"date\": \"2020-04-24\",
|
||||||
\"sensors\": [
|
\"sensors\": [
|
||||||
{\"name\": \"a\", \"idx \":0},
|
{\"name\": \"a\", \"idx\":0},
|
||||||
{\"name\": \"b\", \"idx \":1},
|
{\"name\": \"b\", \"idx\":1},
|
||||||
{\"name\": \"c\", \"idx \":2}
|
{\"name\": \"c\", \"idx\":2}
|
||||||
]}">>,
|
]}">>,
|
||||||
emqtt:publish(Client, <<"t1">>, Message, 0),
|
PublishMoreTimes(Message, 10),
|
||||||
ct:sleep(200),
|
?assertEqual(10, emqx_rule_metrics:get_rules_matched(RuleId)),
|
||||||
?assertEqual(1, emqx_rule_metrics:get_rules_matched(RuleId)),
|
?assertEqual(10, emqx_rule_metrics:get_rules_passed(RuleId)),
|
||||||
?assertEqual(1, emqx_rule_metrics:get_rules_passed(RuleId)),
|
|
||||||
?assertEqual(0, emqx_rule_metrics:get_rules_failed(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_exception(RuleId)),
|
||||||
?assertEqual(0, emqx_rule_metrics:get_rules_no_result(RuleId)),
|
?assertEqual(0, emqx_rule_metrics:get_rules_no_result(RuleId)),
|
||||||
|
Message1 = <<"{\"date\": \"2020-04-24\",
|
||||||
emqtt:publish(Client, <<"t1">>, <<"{\"msg1\":\"hello\"}">>, 0),
|
\"sensors\": [
|
||||||
ct:sleep(200),
|
{\"name\": \"a\", \"idx\":0},
|
||||||
?assertEqual(2, emqx_rule_metrics:get_rules_matched(RuleId)),
|
{\"name\": \"b\", \"idx\":0},
|
||||||
?assertEqual(1, emqx_rule_metrics:get_rules_passed(RuleId)),
|
{\"name\": \"c\", \"idx\":0}
|
||||||
?assertEqual(1, emqx_rule_metrics:get_rules_failed(RuleId)),
|
]}">>,
|
||||||
|
PublishMoreTimes(Message1, 10),
|
||||||
|
?assertEqual(20, emqx_rule_metrics:get_rules_matched(RuleId)),
|
||||||
|
?assertEqual(10, emqx_rule_metrics:get_rules_passed(RuleId)),
|
||||||
|
?assertEqual(10, emqx_rule_metrics:get_rules_failed(RuleId)),
|
||||||
?assertEqual(0, emqx_rule_metrics:get_rules_exception(RuleId)),
|
?assertEqual(0, emqx_rule_metrics:get_rules_exception(RuleId)),
|
||||||
?assertEqual(1, emqx_rule_metrics:get_rules_no_result(RuleId)),
|
?assertEqual(10, emqx_rule_metrics:get_rules_no_result(RuleId)),
|
||||||
|
Message2 = <<"{\"date\": \"2020-04-24\",
|
||||||
|
\"sensors\": [
|
||||||
|
{\"name\": \"a\", \"idx\":0},
|
||||||
|
{\"name\": \"b\", \"idx\":1},
|
||||||
|
{\"name\": \"c\", \"idx\":\"some string\"}
|
||||||
|
]}">>,
|
||||||
|
PublishMoreTimes(Message2, 10),
|
||||||
|
?assertEqual(30, emqx_rule_metrics:get_rules_matched(RuleId)),
|
||||||
|
?assertEqual(10, emqx_rule_metrics:get_rules_passed(RuleId)),
|
||||||
|
?assertEqual(20, emqx_rule_metrics:get_rules_failed(RuleId)),
|
||||||
|
?assertEqual(10, emqx_rule_metrics:get_rules_exception(RuleId)),
|
||||||
|
?assertEqual(10, emqx_rule_metrics:get_rules_no_result(RuleId)),
|
||||||
|
|
||||||
emqtt:stop(Client),
|
emqtt:stop(Client),
|
||||||
emqx_rule_registry:remove_rule(TopicRule).
|
emqx_rule_registry:remove_rule(TopicRule).
|
||||||
|
|
Loading…
Reference in New Issue