Skip to content

Commit d5f9ff2

Browse files
committed
Shovel tests: tests for autodelete common to all protocols
1 parent 1dd2508 commit d5f9ff2

File tree

1 file changed

+83
-3
lines changed

1 file changed

+83
-3
lines changed

deps/rabbitmq_shovel/test/shovel_dynamic_SUITE.erl

Lines changed: 83 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,15 @@
1414

1515
-compile(export_all).
1616

17-
-import(shovel_test_utils, [set_param/3,
17+
-import(shovel_test_utils, [await_autodelete/2,
18+
set_param/3,
19+
set_param_nowait/3,
1820
with_amqp10_session/2,
1921
amqp10_publish_expect/5,
20-
amqp10_declare_queue/3]).
22+
amqp10_declare_queue/3,
23+
amqp10_publish/4,
24+
amqp10_expect_count/3
25+
]).
2126

2227
-define(PARAM, <<"test">>).
2328

@@ -55,7 +60,16 @@ tests() ->
5560
simple_classic_on_publish,
5661
simple_quorum_no_ack,
5762
simple_quorum_on_confirm,
58-
simple_quorum_on_publish
63+
simple_quorum_on_publish,
64+
autodelete_classic_on_confirm,
65+
autodelete_quorum_on_confirm,
66+
autodelete_classic_on_publish,
67+
autodelete_quorum_on_publish,
68+
autodelete_no_ack,
69+
autodelete_classic_on_confirm_no_transfer,
70+
autodelete_quorum_on_confirm_no_transfer,
71+
autodelete_classic_on_publish_no_transfer,
72+
autodelete_quorum_on_publish_no_transfer
5973
].
6074

6175
%% -------------------------------------------------------------------
@@ -234,3 +248,69 @@ simple_queue_type_ack_mode(Config, Type, AckMode) ->
234248
set_param(Config, ?PARAM, ShovelArgs),
235249
amqp10_publish_expect(Sess, Src, Dest, <<"hello">>, 10)
236250
end).
251+
252+
autodelete_classic_on_confirm_no_transfer(Config) ->
253+
autodelete(Config, <<"classic">>, <<"on-confirm">>, 0, 100, 0).
254+
255+
autodelete_quorum_on_confirm_no_transfer(Config) ->
256+
autodelete(Config, <<"quorum">>, <<"on-confirm">>, 0, 100, 0).
257+
258+
autodelete_classic_on_publish_no_transfer(Config) ->
259+
autodelete(Config, <<"classic">>, <<"on-publish">>, 0, 100, 0).
260+
261+
autodelete_quorum_on_publish_no_transfer(Config) ->
262+
autodelete(Config, <<"quorum">>, <<"on-publish">>, 0, 100, 0).
263+
264+
autodelete_classic_on_confirm(Config) ->
265+
autodelete(Config, <<"classic">>, <<"on-confirm">>, 50, 50, 50).
266+
267+
autodelete_quorum_on_confirm(Config) ->
268+
autodelete(Config, <<"quorum">>, <<"on-confirm">>, 50, 50, 50).
269+
270+
autodelete_classic_on_publish(Config) ->
271+
autodelete(Config, <<"classic">>, <<"on-publish">>, 50, 50, 50).
272+
273+
autodelete_quorum_on_publish(Config) ->
274+
autodelete(Config, <<"quorum">>, <<"on-publish">>, 50, 50, 50).
275+
276+
autodelete_no_ack(Config) ->
277+
ExtraArgs = [{<<"ack-mode">>, <<"no-ack">>},
278+
{<<"src-delete-after">>, 100}],
279+
ShovelArgs = ?config(shovel_args, Config) ++ ExtraArgs,
280+
Uri = shovel_test_utils:make_uri(Config, 0),
281+
?assertMatch({error_string, _},
282+
rabbit_ct_broker_helpers:rpc(
283+
Config, 0, rabbit_runtime_parameters, set,
284+
[<<"/">>, <<"shovel">>, ?PARAM,
285+
[{<<"src-uri">>, Uri},
286+
{<<"dest-uri">>, [Uri]}] ++ ShovelArgs,
287+
none])).
288+
289+
autodelete(Config, Type, AckMode, After, ExpSrc, ExpDest) ->
290+
Src = ?config(srcq, Config),
291+
Dest = ?config(destq, Config),
292+
with_amqp10_session(
293+
Config,
294+
fun (Sess) ->
295+
amqp10_declare_queue(Sess, Src, #{<<"x-queue-type">> => {utf8, Type}}),
296+
amqp10_declare_queue(Sess, Dest, #{<<"x-queue-type">> => {utf8, Type}}),
297+
amqp10_publish(Sess, Src, <<"hello">>, 100),
298+
ExtraArgs = [{<<"ack-mode">>, AckMode},
299+
{<<"src-delete-after">>, After}],
300+
ShovelArgs = ?config(shovel_args, Config) ++ ExtraArgs,
301+
set_param_nowait(Config, ?PARAM, ShovelArgs),
302+
await_autodelete(Config, ?PARAM),
303+
amqp10_expect_count(Sess, Src, ExpSrc),
304+
amqp10_expect_count(Sess, Dest, ExpDest)
305+
end).
306+
307+
%%----------------------------------------------------------------------------
308+
maybe_skip_local_protocol(Config) ->
309+
[Node] = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
310+
case rabbit_ct_broker_helpers:enable_feature_flag(
311+
Config, [Node], 'rabbitmq_4.0.0') of
312+
ok ->
313+
Config;
314+
_ ->
315+
{skip, "This group requires rabbitmq_4.0.0 feature flag"}
316+
end.

0 commit comments

Comments
 (0)