فهرست منبع

fix: don't add disable bridge to connector's channel

zhongwencool 2 سال پیش
والد
کامیت
f9d16340e0

+ 26 - 0
apps/emqx_bridge/test/emqx_bridge_v2_SUITE.erl

@@ -221,6 +221,32 @@ t_create_remove(_) ->
     ok = emqx_bridge_v2:remove(bridge_type(), my_test_bridge),
     ok.
 
+t_create_disabled_bridge(_) ->
+    Config = #{<<"connector">> := Connector} = bridge_config(),
+    Disable = Config#{<<"enable">> => false},
+    BridgeType = bridge_type(),
+    {ok, _} = emqx_bridge_v2:create(BridgeType, my_enable_bridge, Config),
+    {ok, _} = emqx_bridge_v2:create(BridgeType, my_disable_bridge, Disable),
+    ConnectorId = emqx_connector_resource:resource_id(con_type(), Connector),
+    ?assertMatch(
+        [
+            {_, #{
+                enable := true,
+                connector := Connector,
+                bridge_type := _
+            }},
+            {_, #{
+                enable := false,
+                connector := Connector,
+                bridge_type := _
+            }}
+        ],
+        emqx_bridge_v2:get_channels_for_connector(ConnectorId)
+    ),
+    ok = emqx_bridge_v2:remove(bridge_type(), my_enable_bridge),
+    ok = emqx_bridge_v2:remove(bridge_type(), my_disable_bridge),
+    ok.
+
 t_list(_) ->
     [] = emqx_bridge_v2:list(),
     {ok, _} = emqx_bridge_v2:create(bridge_type(), my_test_bridge, bridge_config()),

+ 1 - 1
apps/emqx_connector/test/emqx_connector_SUITE.erl

@@ -159,7 +159,7 @@ t_remove_fail({'init', Config}) ->
     meck:new(?CONNECTOR, [non_strict]),
     meck:expect(?CONNECTOR, callback_mode, 0, async_if_possible),
     meck:expect(?CONNECTOR, on_start, 2, {ok, connector_state}),
-    meck:expect(?CONNECTOR, on_get_channels, 1, [{<<"my_channel">>, #{}}]),
+    meck:expect(?CONNECTOR, on_get_channels, 1, [{<<"my_channel">>, #{enable => true}}]),
     meck:expect(?CONNECTOR, on_add_channel, 4, {ok, connector_state}),
     meck:expect(?CONNECTOR, on_stop, 2, ok),
     meck:expect(?CONNECTOR, on_get_status, 2, connected),

+ 6 - 3
apps/emqx_resource/src/emqx_resource_manager.erl

@@ -622,13 +622,16 @@ start_resource(Data, From) ->
 
 add_channels(Data) ->
     %% Add channels to the Channels map but not to the resource state
-    %% Channels will be added to the resouce state after the initial health_check
+    %% Channels will be added to the resource state after the initial health_check
     %% if that succeeds.
     ChannelIDConfigTuples = emqx_resource:call_get_channels(Data#data.id, Data#data.mod),
     Channels = Data#data.added_channels,
     NewChannels = lists:foldl(
-        fun({ChannelID, _Conf}, Acc) ->
-            maps:put(ChannelID, channel_status(), Acc)
+        fun
+            ({ChannelID, #{enable := true}}, Acc) ->
+                maps:put(ChannelID, channel_status(), Acc);
+            ({_, #{enable := false}}, Acc) ->
+                Acc
         end,
         Channels,
         ChannelIDConfigTuples