fix(telemetry): count bridges referenced in `from` rule clauses

This commit is contained in:
Thales Macedo Garitezi 2022-05-09 13:14:27 -03:00
parent 9e706fc76d
commit 47ed9cbc76
No known key found for this signature in database
GPG Key ID: DD279F8152A9B6DD
3 changed files with 35 additions and 11 deletions

View File

@ -76,10 +76,10 @@ t_get_basic_usage_info_1(_Config) ->
BasicUsageInfo = emqx_bridge:get_basic_usage_info(),
?assertEqual(
#{
num_bridges => 2,
num_bridges => 3,
count_by_type => #{
http => 1,
mqtt => 1
mqtt => 2
}
},
BasicUsageInfo
@ -92,17 +92,26 @@ setup_fake_telemetry_data() ->
#{
<<"mqtt">> => #{
<<"my_mqtt_connector">> =>
#{server => "127.0.0.1:1883"}
#{server => "127.0.0.1:1883"},
<<"my_mqtt_connector2">> =>
#{server => "127.0.0.1:1884"}
}
}
},
MQTTConfig = #{
MQTTConfig1 = #{
connector => <<"mqtt:my_mqtt_connector">>,
enable => true,
direction => ingress,
remote_topic => <<"aws/#">>,
remote_qos => 1
},
MQTTConfig2 = #{
connector => <<"mqtt:my_mqtt_connector2">>,
enable => true,
direction => ingress,
remote_topic => <<"$bridges/mqtt:some_bridge_in">>,
remote_qos => 1
},
HTTPConfig = #{
url => <<"http://localhost:9901/messages/${topic}">>,
enable => true,
@ -124,7 +133,10 @@ setup_fake_telemetry_data() ->
HTTPConfig#{enable => false}
},
<<"mqtt">> =>
#{<<"basic_usage_info_mqtt">> => MQTTConfig}
#{
<<"basic_usage_info_mqtt">> => MQTTConfig1,
<<"basic_usage_info_mqtt_from_select">> => MQTTConfig2
}
}
},
ok = emqx_common_test_helpers:load_config(emqx_connector_schema, ConnectorConf),

View File

@ -434,7 +434,7 @@ t_rule_engine_and_data_bridge_info(_Config) ->
RuleInfo = get_value(rule_engine, TelemetryData),
BridgeInfo = get_value(bridge, TelemetryData),
?assertEqual(
#{num_rules => 2},
#{num_rules => 3},
RuleInfo
),
?assertEqual(
@ -442,9 +442,9 @@ t_rule_engine_and_data_bridge_info(_Config) ->
data_bridge =>
#{
http => #{num => 1, num_linked_by_rules => 3},
mqtt => #{num => 1, num_linked_by_rules => 1}
mqtt => #{num => 2, num_linked_by_rules => 2}
},
num_data_bridges => 2
num_data_bridges => 3
},
BridgeInfo
),
@ -641,6 +641,17 @@ setup_fake_rule_engine_data() ->
]
}
),
{ok, _} =
emqx_rule_engine:create_rule(
#{
id => <<"rule:t_get_basic_usage_info:3">>,
sql => <<"select 1 from \"$bridges/mqtt:mqtt_in\"">>,
outputs =>
[
#{function => console}
]
}
),
ok.
set_special_configs(emqx_authz) ->

View File

@ -265,9 +265,10 @@ get_basic_usage_info() ->
NumRules = length(EnabledRules),
ReferencedBridges =
lists:foldl(
fun(#{outputs := Outputs}, Acc) ->
BridgeIDs = lists:filter(fun is_binary/1, Outputs),
tally_referenced_bridges(BridgeIDs, Acc)
fun(#{outputs := Outputs, from := From}, Acc) ->
BridgeIDs0 = [BridgeID || <<"$bridges/", BridgeID/binary>> <- From],
BridgeIDs1 = lists:filter(fun is_binary/1, Outputs),
tally_referenced_bridges(BridgeIDs0 ++ BridgeIDs1, Acc)
end,
#{},
EnabledRules