From afffdbbaa1a1a66fd0b90b846e3de4ac511df9cf Mon Sep 17 00:00:00 2001 From: Paulo Zulato Date: Tue, 15 Aug 2023 14:10:38 -0300 Subject: [PATCH] fix(kinesis): replace default payload template Fixes https://emqx.atlassian.net/browse/EMQX-10766 --- .../src/emqx_bridge_kinesis.erl | 2 +- ...mqx_bridge_kinesis_impl_producer_SUITE.erl | 44 ++++++++++++++++++- changes/ee/fix-11452.en.md | 1 + 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 changes/ee/fix-11452.en.md diff --git a/apps/emqx_bridge_kinesis/src/emqx_bridge_kinesis.erl b/apps/emqx_bridge_kinesis/src/emqx_bridge_kinesis.erl index cb3cd3788..5ed60c8aa 100644 --- a/apps/emqx_bridge_kinesis/src/emqx_bridge_kinesis.erl +++ b/apps/emqx_bridge_kinesis/src/emqx_bridge_kinesis.erl @@ -83,7 +83,7 @@ fields(producer) -> sc( binary(), #{ - default => <<>>, + default => <<"${.}">>, desc => ?DESC("payload_template") } )}, diff --git a/apps/emqx_bridge_kinesis/test/emqx_bridge_kinesis_impl_producer_SUITE.erl b/apps/emqx_bridge_kinesis/test/emqx_bridge_kinesis_impl_producer_SUITE.erl index d0fe4a1b4..69b4a2d86 100644 --- a/apps/emqx_bridge_kinesis/test/emqx_bridge_kinesis_impl_producer_SUITE.erl +++ b/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. diff --git a/changes/ee/fix-11452.en.md b/changes/ee/fix-11452.en.md new file mode 100644 index 000000000..bd6080fce --- /dev/null +++ b/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.