fix(telemetry): count bridges referenced in `from` rule clauses
This commit is contained in:
parent
9e706fc76d
commit
47ed9cbc76
|
@ -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),
|
||||
|
|
|
@ -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) ->
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue