|
14 | 14 |
|
15 | 15 | -compile(export_all). |
16 | 16 |
|
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, |
18 | 20 | with_amqp10_session/2, |
19 | 21 | amqp10_publish_expect/5, |
20 | | - amqp10_declare_queue/3]). |
| 22 | + amqp10_declare_queue/3, |
| 23 | + amqp10_publish/4, |
| 24 | + amqp10_expect_count/3 |
| 25 | + ]). |
21 | 26 |
|
22 | 27 | -define(PARAM, <<"test">>). |
23 | 28 |
|
@@ -55,7 +60,16 @@ tests() -> |
55 | 60 | simple_classic_on_publish, |
56 | 61 | simple_quorum_no_ack, |
57 | 62 | 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 |
59 | 73 | ]. |
60 | 74 |
|
61 | 75 | %% ------------------------------------------------------------------- |
@@ -234,3 +248,69 @@ simple_queue_type_ack_mode(Config, Type, AckMode) -> |
234 | 248 | set_param(Config, ?PARAM, ShovelArgs), |
235 | 249 | amqp10_publish_expect(Sess, Src, Dest, <<"hello">>, 10) |
236 | 250 | 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