Skip to content

Commit 307b61f

Browse files
Merge pull request #14415 from rabbitmq/shovel-10-delete-after
Shovel amqp1.0: fix delete after validation
2 parents 425a9d6 + b6d831b commit 307b61f

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

deps/rabbitmq_shovel/src/rabbit_shovel_parameters.erl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ amqp10_src_validation(_Def, User) ->
183183
{<<"src-uri">>, validate_uri_fun(User), mandatory},
184184
{<<"src-address">>, fun rabbit_parameter_validation:binary/2, mandatory},
185185
{<<"src-prefetch-count">>, fun rabbit_parameter_validation:number/2, optional},
186-
{<<"src-delete-after">>, fun validate_delete_after/2, optional}
186+
{<<"src-delete-after">>, fun validate_amqp10_delete_after/2, optional}
187187
].
188188

189189
amqp091_src_validation(_Def, User) ->
@@ -302,6 +302,12 @@ validate_delete_after(Name, Term) ->
302302
{error, "~ts should be a number greater than or equal to 0, \"never\" or \"queue-length\", actually was "
303303
"~tp", [Name, Term]}.
304304

305+
validate_amqp10_delete_after(_Name, <<"never">>) -> ok;
306+
validate_amqp10_delete_after(_Name, N) when is_integer(N), N >= 0 -> ok;
307+
validate_amqp10_delete_after(Name, Term) ->
308+
{error, "~ts should be a number greater than or equal to 0 or \"never\", actually was "
309+
"~tp", [Name, Term]}.
310+
305311
validate_internal_owner(Name, Term0) ->
306312
Term = rabbit_data_coercion:to_proplist(Term0),
307313

deps/rabbitmq_shovel/test/amqp10_dynamic_SUITE.erl

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ groups() ->
2929
simple_amqp10_dest,
3030
simple_amqp10_src,
3131
amqp091_to_amqp10_with_dead_lettering,
32-
amqp10_to_amqp091_application_properties
32+
amqp10_to_amqp091_application_properties,
33+
test_amqp10_delete_after_queue_length
3334
]},
3435
{with_map_config, [], [
3536
simple,
@@ -341,6 +342,25 @@ autodelete_amqp091_dest(Config, {AckMode, After, ExpSrc, ExpDest}) ->
341342
expect_count(Session, Src, ExpSrc)
342343
end.
343344

345+
test_amqp10_delete_after_queue_length(Config) ->
346+
Src = ?config(srcq, Config),
347+
Dest = ?config(destq, Config),
348+
Uri = shovel_test_utils:make_uri(Config, 0),
349+
Error = rabbit_ct_broker_helpers:rpc(
350+
Config, 0,
351+
rabbit_runtime_parameters, set,
352+
[<<"/">>, <<"shovel">>, <<"test">>, [{<<"src-uri">>, Uri},
353+
{<<"dest-uri">>, [Uri]},
354+
{<<"src-protocol">>, <<"amqp10">>},
355+
{<<"src-address">>, Src},
356+
{<<"src-delete-after">>, <<"queue-length">>},
357+
{<<"dest-protocol">>, <<"amqp10">>},
358+
{<<"dest-address">>, Dest}],
359+
none]),
360+
?assertMatch({error_string, _}, Error),
361+
{_, Msg} = Error,
362+
?assertMatch(match, re:run(Msg, "Validation failed.*", [{capture, none}])).
363+
344364
%%----------------------------------------------------------------------------
345365

346366
with_session(Config, Fun) ->

0 commit comments

Comments
 (0)