99
1010-include_lib (" amqp_client/include/amqp_client.hrl" ).
1111-include_lib (" stdlib/include/assert.hrl" ).
12+ -include_lib (" rabbitmq_ct_helpers/include/rabbit_assert.hrl" ).
1213
1314-compile (export_all ).
1415
@@ -26,11 +27,14 @@ groups() ->
2627 delete_not_found ,
2728 delete ,
2829 delete_internal ,
29- delete_internal_owner
30+ delete_internal_owner ,
31+ delete_invalid_uri ,
32+ delete_non_existent_dest_address
3033 ]},
3134 {cluster_size_2 , [], [
32- clear_param_on_different_node
33- ]}
35+ clear_param_on_different_node ,
36+ delete_invalid_uri_another_node
37+ ]}
3438 ].
3539
3640% % -------------------------------------------------------------------
@@ -64,6 +68,15 @@ end_per_group(_Group, Config) ->
6468 rabbit_ct_client_helpers :teardown_steps () ++
6569 rabbit_ct_broker_helpers :teardown_steps ()).
6670
71+ init_per_testcase (Testcase , Config ) when Testcase == delete_invalid_uri_another_node ->
72+ case rabbit_ct_helpers :is_mixed_versions (Config ) of
73+ true ->
74+ % % The code changes to delete shovel are compatible with older versions, however
75+ % % older versions fail to delete invalid shovels
76+ {skip , " not mixed versions compatible" };
77+ false ->
78+ rabbit_ct_helpers :testcase_started (Config , Testcase )
79+ end ;
6780init_per_testcase (Testcase , Config ) ->
6881 rabbit_ct_helpers :testcase_started (Config , Testcase ).
6982
@@ -148,3 +161,67 @@ clear_param_on_different_node(Config) ->
148161 status , []), " Deleted shovel still reported on node A" ),
149162 ? assertEqual ([], rabbit_ct_broker_helpers :rpc (Config , B , rabbit_shovel_status ,
150163 status , []), " Deleted shovel still reported on node B" ).
164+
165+ delete_invalid_uri (Config ) ->
166+ ok = rabbit_ct_broker_helpers :rpc (
167+ Config , 0 , rabbit_runtime_parameters , set ,
168+ [<<" /" >>, <<" shovel" >>, <<" myshovel" >>,
169+ [{<<" src-protocol" >>, <<" amqp091" >>},
170+ {<<" src-uri" >>, <<" amqp://foo" >>},
171+ {<<" src-queue" >>, <<" src" >>},
172+ {<<" dest-protocol" >>, <<" amqp091" >>},
173+ {<<" dest-uri" >>, shovel_test_utils :make_uri (Config , 0 )},
174+ {<<" dest-queue" >>, <<" dest" >>}],
175+ none ]),
176+ ? awaitMatch ([{{<<" /" >>, <<" myshovel" >>}, dynamic , {terminated , _ }, _ , _ }],
177+ rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_shovel_status ,
178+ status , []),
179+ 45_000 ),
180+ [A ] = rabbit_ct_broker_helpers :get_node_configs (Config , nodename ),
181+ Opts = #{node => A , vhost => <<" /" >>, force => false },
182+ ok = ? CMD :run ([<<" myshovel" >>], Opts ),
183+ [] = rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_shovel_status ,
184+ status , []).
185+
186+ delete_non_existent_dest_address (Config ) ->
187+ Uri = shovel_test_utils :make_uri (Config , 0 ),
188+ ok = rabbit_ct_broker_helpers :rpc (
189+ Config , 0 , rabbit_runtime_parameters , set ,
190+ [<<" /" >>, <<" shovel" >>, <<" myshovel" >>,
191+ [{<<" src-protocol" >>, <<" amqp091" >>},
192+ {<<" src-uri" >>, Uri },
193+ {<<" src-queue" >>, <<" src" >>},
194+ {<<" dest-protocol" >>, <<" amqp10" >>},
195+ {<<" dest-uri" >>, Uri },
196+ {<<" dest-address" >>, <<" /queues/q2" >>}],
197+ none ]),
198+ ? awaitMatch ([{{<<" /" >>, <<" myshovel" >>}, dynamic , {terminated , _ }, _ , _ }],
199+ rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_shovel_status ,
200+ status , []),
201+ 45_000 ),
202+ [A ] = rabbit_ct_broker_helpers :get_node_configs (Config , nodename ),
203+ Opts = #{node => A , vhost => <<" /" >>, force => false },
204+ ok = ? CMD :run ([<<" myshovel" >>], Opts ),
205+ [] = rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_shovel_status ,
206+ status , []).
207+
208+ delete_invalid_uri_another_node (Config ) ->
209+ ok = rabbit_ct_broker_helpers :rpc (
210+ Config , 1 , rabbit_runtime_parameters , set ,
211+ [<<" /" >>, <<" shovel" >>, <<" myshovel" >>,
212+ [{<<" src-protocol" >>, <<" amqp091" >>},
213+ {<<" src-uri" >>, <<" amqp://foo" >>},
214+ {<<" src-queue" >>, <<" src" >>},
215+ {<<" dest-protocol" >>, <<" amqp091" >>},
216+ {<<" dest-uri" >>, shovel_test_utils :make_uri (Config , 0 )},
217+ {<<" dest-queue" >>, <<" dest" >>}],
218+ none ]),
219+ ? awaitMatch ([{{<<" /" >>, <<" myshovel" >>}, dynamic , {terminated , _ }, _ , _ }],
220+ rabbit_ct_broker_helpers :rpc (Config , 1 , rabbit_shovel_status ,
221+ status , []),
222+ 45_000 ),
223+ [A , _B ] = rabbit_ct_broker_helpers :get_node_configs (Config , nodename ),
224+ Opts = #{node => A , vhost => <<" /" >>, force => false },
225+ ok = ? CMD :run ([<<" myshovel" >>], Opts ),
226+ [] = rabbit_ct_broker_helpers :rpc (Config , 1 , rabbit_shovel_status ,
227+ status , []).
0 commit comments