From 350e8433ab4962f6d26cb6c4e4b1d7d8a6be4272 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Mon, 30 Oct 2023 12:09:53 +0100 Subject: [PATCH] fix(bridge_v2): downgrade bridge type for GET api results --- apps/emqx_bridge/src/emqx_bridge_api.erl | 5 ++- .../emqx_bridge_kafka_impl_producer_SUITE.erl | 38 ++++++++++--------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/apps/emqx_bridge/src/emqx_bridge_api.erl b/apps/emqx_bridge/src/emqx_bridge_api.erl index ff7f8d44d..945ff250c 100644 --- a/apps/emqx_bridge/src/emqx_bridge_api.erl +++ b/apps/emqx_bridge/src/emqx_bridge_api.erl @@ -902,7 +902,7 @@ format_resource( redact( maps:merge( RawConfFull#{ - type => Type, + type => downgrade_type(Type), name => maps:get(<<"name">>, RawConf, BridgeName), node => Node }, @@ -1156,3 +1156,6 @@ non_compat_bridge_msg() -> upgrade_type(Type) -> emqx_bridge_lib:upgrade_type(Type). + +downgrade_type(Type) -> + emqx_bridge_lib:downgrade_type(Type). diff --git a/apps/emqx_bridge_kafka/test/emqx_bridge_kafka_impl_producer_SUITE.erl b/apps/emqx_bridge_kafka/test/emqx_bridge_kafka_impl_producer_SUITE.erl index b8d981698..3daa54142 100644 --- a/apps/emqx_bridge_kafka/test/emqx_bridge_kafka_impl_producer_SUITE.erl +++ b/apps/emqx_bridge_kafka/test/emqx_bridge_kafka_impl_producer_SUITE.erl @@ -255,6 +255,18 @@ pre_create_atoms() -> kafka__probe_ ]. +http_get_bridges(UrlPath, Name0) -> + Name = iolist_to_binary(Name0), + {ok, _Code, BridgesData} = http_get(UrlPath), + Bridges = json(BridgesData), + lists:filter( + fun + (#{<<"name">> := N}) when N =:= Name -> true; + (_) -> false + end, + Bridges + ). + kafka_bridge_rest_api_helper(Config) -> BridgeType = ?BRIDGE_TYPE, BridgeName = "my_kafka_bridge", @@ -274,27 +286,16 @@ kafka_bridge_rest_api_helper(Config) -> BridgesPartsOpRestart = OpUrlFun("restart"), BridgesPartsOpStop = OpUrlFun("stop"), %% List bridges - MyKafkaBridgeExists = fun() -> - {ok, _Code, BridgesData} = http_get(BridgesParts), - Bridges = json(BridgesData), - lists:any( - fun - (#{<<"name">> := <<"my_kafka_bridge">>}) -> true; - (_) -> false - end, - Bridges - ) - end, %% Delete if my_kafka_bridge exists - case MyKafkaBridgeExists() of - true -> + case http_get_bridges(BridgesParts, BridgeName) of + [_] -> %% Delete the bridge my_kafka_bridge {ok, 204, <<>>} = http_delete(BridgesPartsIdDeleteAlsoActions); - false -> + [] -> ok end, try - false = MyKafkaBridgeExists(), + ?assertEqual([], http_get_bridges(BridgesParts, BridgeName)), %% Create new Kafka bridge KafkaTopic = test_topic_one_partition(), CreateBodyTmp = #{ @@ -316,7 +317,7 @@ kafka_bridge_rest_api_helper(Config) -> CreateBody = CreateBodyTmp#{<<"ssl">> => maps:get(<<"ssl">>, Config)}, {ok, 201, _Data} = http_post(BridgesParts, CreateBody), %% Check that the new bridge is in the list of bridges - true = MyKafkaBridgeExists(), + ?assertMatch([#{<<"type">> := <<"kafka">>}], http_get_bridges(BridgesParts, BridgeName)), %% Probe should work %% no extra atoms should be created when probing %% See pre_create_atoms() above @@ -416,8 +417,9 @@ kafka_bridge_rest_api_helper(Config) -> % this delete should not be necessary beause of the also_delete_dep_actions flag % {ok, 204, _} = http_delete(["rules", RuleId]), {ok, 204, _} = http_delete(BridgesPartsIdDeleteAlsoActions), - false = MyKafkaBridgeExists(), - delete_all_bridges() + Remain = http_get_bridges(BridgesParts, BridgeName), + delete_all_bridges(), + ?assertEqual([], Remain) end, ok.