99
1010-include_lib (" common_test/include/ct.hrl" ).
1111-include_lib (" eunit/include/eunit.hrl" ).
12+ -include_lib (" rabbitmq_ct_helpers/include/rabbit_assert.hrl" ).
1213-compile (export_all ).
1314
1415-import (shovel_test_utils , [await_credit /1 ]).
@@ -28,6 +29,7 @@ groups() ->
2829 autodelete_amqp091_src_on_publish ,
2930 autodelete_amqp091_dest_on_confirm ,
3031 autodelete_amqp091_dest_on_publish ,
32+ autodelete_with_rejections ,
3133 simple_amqp10_dest ,
3234 simple_amqp10_src ,
3335 amqp091_to_amqp10_with_dead_lettering ,
@@ -77,6 +79,7 @@ init_per_testcase(Testcase, Config0) ->
7779 rabbit_ct_helpers :testcase_started (Config , Testcase ).
7880
7981end_per_testcase (Testcase , Config ) ->
82+ rabbit_ct_broker_helpers :rpc (Config , 0 , ? MODULE , delete_all_queues , []),
8083 rabbit_ct_helpers :testcase_finished (Config , Testcase ).
8184
8285% % -------------------------------------------------------------------
@@ -344,6 +347,36 @@ autodelete_amqp091_dest(Config, {AckMode, After, ExpSrc, ExpDest}) ->
344347 expect_count (Session , Src , ExpSrc )
345348 end .
346349
350+ autodelete_with_rejections (Config ) ->
351+ Src = ? config (srcq , Config ),
352+ Dest = ? config (destq , Config ),
353+ with_session (
354+ Config ,
355+ fun (Sess ) ->
356+ {ok , LinkPair } = rabbitmq_amqp_client :attach_management_link_pair_sync (Sess , <<" my link pair" >>),
357+ {ok , _ } = rabbitmq_amqp_client :declare_queue (LinkPair , Dest ,
358+ #{arguments => #{<<" x-max-length" >> => {uint , 5 },
359+ <<" x-overflow" >> => {utf8 , <<" reject-publish" >>}}}),
360+
361+ shovel_test_utils :set_param (Config , <<" test" >>,
362+ [{<<" src-protocol" >>, <<" local" >>},
363+ {<<" src-queue" >>, Src },
364+ {<<" src-delete-after" >>, 10 },
365+ {<<" dest-protocol" >>, <<" local" >>},
366+ {<<" dest-predeclared" >>, true },
367+ {<<" dest-queue" >>, Dest }
368+ ]),
369+ publish_count (Sess , Src , <<" hello" >>, 10 ),
370+ await_autodelete (Config , <<" test" >>),
371+ Expected = lists :sort ([[Src , <<" 5" >>], [Dest , <<" 5" >>]]),
372+ ? awaitMatch (
373+ Expected ,
374+ lists :sort (rabbit_ct_broker_helpers :rabbitmqctl_list (
375+ Config , 0 ,
376+ [" list_queues" , " name" , " messages_ready" , " --no-table-headers" ])),
377+ 30_000 )
378+ end ).
379+
347380test_amqp10_delete_after_queue_length (Config ) ->
348381 Src = ? config (srcq , Config ),
349382 Dest = ? config (destq , Config ),
@@ -512,3 +545,10 @@ await_autodelete1(_Config, Name) ->
512545shovels_from_parameters () ->
513546 L = rabbit_runtime_parameters :list (<<" /" >>, <<" shovel" >>),
514547 [rabbit_misc :pget (name , Shovel ) || Shovel <- L ].
548+
549+ delete_all_queues () ->
550+ Queues = rabbit_amqqueue :list (),
551+ lists :foreach (
552+ fun (Q ) ->
553+ {ok , _ } = rabbit_amqqueue :delete (Q , false , false , <<" dummy" >>)
554+ end , Queues ).
0 commit comments