Просмотр исходного кода

fix(kinesis): replace default payload template

Fixes https://emqx.atlassian.net/browse/EMQX-10766
Paulo Zulato 2 лет назад
Родитель
Сommit
afffdbbaa1

+ 1 - 1
apps/emqx_bridge_kinesis/src/emqx_bridge_kinesis.erl

@@ -83,7 +83,7 @@ fields(producer) ->
             sc(
                 binary(),
                 #{
-                    default => <<>>,
+                    default => <<"${.}">>,
                     desc => ?DESC("payload_template")
                 }
             )},

+ 42 - 2
apps/emqx_bridge_kinesis/test/emqx_bridge_kinesis_impl_producer_SUITE.erl

@@ -228,13 +228,17 @@ create_bridge_http(Config, KinesisConfigOverrides) ->
     Res.
 
 create_bridge(Config) ->
-    create_bridge(Config, _KinesisConfigOverrides = #{}).
+    create_bridge(Config, #{}, []).
 
 create_bridge(Config, KinesisConfigOverrides) ->
+    create_bridge(Config, KinesisConfigOverrides, []).
+
+create_bridge(Config, KinesisConfigOverrides, Removes) ->
     TypeBin = ?BRIDGE_TYPE_BIN,
     Name = ?config(kinesis_name, Config),
     KinesisConfig0 = ?config(kinesis_config, Config),
-    KinesisConfig = emqx_utils_maps:deep_merge(KinesisConfig0, KinesisConfigOverrides),
+    KinesisConfig1 = emqx_utils_maps:deep_merge(KinesisConfig0, KinesisConfigOverrides),
+    KinesisConfig = emqx_utils_maps:deep_remove(Removes, KinesisConfig1),
     ct:pal("creating bridge: ~p", [KinesisConfig]),
     Res = emqx_bridge:create(TypeBin, Name, KinesisConfig),
     ct:pal("bridge creation result: ~p", [Res]),
@@ -862,3 +866,39 @@ t_access_denied(Config) ->
         end
     ),
     ok.
+
+t_empty_payload_template(Config) ->
+    ResourceId = ?config(resource_id, Config),
+    TelemetryTable = ?config(telemetry_table, Config),
+    Removes = [<<"payload_template">>],
+    ?assertMatch({ok, _}, create_bridge(Config, #{}, Removes)),
+    {ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
+    emqx_common_test_helpers:on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
+    assert_empty_metrics(ResourceId),
+    ShardIt = get_shard_iterator(Config),
+    Payload = <<"payload">>,
+    Message = emqx_message:make(?TOPIC, Payload),
+    emqx:publish(Message),
+    %% to avoid test flakiness
+    wait_telemetry_event(TelemetryTable, success, ResourceId),
+    wait_until_gauge_is(queuing, 0, 500),
+    wait_until_gauge_is(inflight, 0, 500),
+    assert_metrics(
+        #{
+            dropped => 0,
+            failed => 0,
+            inflight => 0,
+            matched => 1,
+            queuing => 0,
+            retried => 0,
+            success => 1
+        },
+        ResourceId
+    ),
+    Record = wait_record(Config, ShardIt, 100, 10),
+    Data = proplists:get_value(<<"Data">>, Record),
+    ?assertMatch(
+        #{<<"payload">> := <<"payload">>, <<"topic">> := ?TOPIC},
+        emqx_utils_json:decode(Data, [return_maps])
+    ),
+    ok.

+ 1 - 0
changes/ee/fix-11452.en.md

@@ -0,0 +1 @@
+The default payload template for Kinesis was updated to store the entire message when no template is provided.