@@ -27,13 +27,7 @@ groups() ->
2727 {clustered , [], [
2828 {cluster_size_3 , [], [
2929 vhost_deletion ,
30- quorum_unaffected_after_vhost_failure
31- ]},
32- {cluster_size_5 , [], [
33- % % Khepri does not work on a cluster in minority. Thus, to test these
34- % % specific cases with quorum queues in minority we need a bigger cluster.
35- % % 5-nodes RMQ and 3-nodes quorum queues allows to test the same test
36- % % cases than a 3-nodes mnesia cluster.
30+ quorum_unaffected_after_vhost_failure ,
3731 recover_follower_after_standalone_restart ,
3832 force_delete_if_no_consensus ,
3933 takeover_on_failure ,
@@ -136,8 +130,11 @@ force_delete_if_no_consensus(Config) ->
136130 ACh = rabbit_ct_client_helpers :open_channel (Config , A ),
137131 rabbit_ct_client_helpers :publish (ACh , QName , 10 ),
138132
139- ok = rabbit_ct_broker_helpers :restart_node (Config , B ),
140- ok = rabbit_ct_broker_helpers :stop_node (Config , A ),
133+ % % Delete a member on one node
134+ ? assertEqual (ok ,
135+ rpc :call (Server , rabbit_quorum_queue , delete_member ,
136+ [<<" /" >>, QName , B ])),
137+ % % stop another node
141138 ok = rabbit_ct_broker_helpers :stop_node (Config , C ),
142139
143140 BCh = rabbit_ct_client_helpers :open_channel (Config , B ),
@@ -151,6 +148,7 @@ force_delete_if_no_consensus(Config) ->
151148 BCh2 = rabbit_ct_client_helpers :open_channel (Config , B ),
152149 ? assertMatch (# 'queue.delete_ok' {},
153150 amqp_channel :call (BCh2 , # 'queue.delete' {queue = QName })),
151+ ok = rabbit_ct_broker_helpers :restart_node (Config , C ),
154152 ok .
155153
156154takeover_on_failure (Config ) ->
@@ -229,56 +227,38 @@ quorum_unaffected_after_vhost_failure(Config) ->
229227 60000 ).
230228
231229recover_follower_after_standalone_restart (Config ) ->
232- case rabbit_ct_helpers :is_mixed_versions () of
233- false ->
234- % % Tests that followers can be brought up standalone after forgetting the
235- % % rest of the cluster. Consensus won't be reached as there is only one node in the
236- % % new cluster.
237- [Server | _ ] = rabbit_ct_broker_helpers :get_node_configs (Config , nodename ),
238- Ch = rabbit_ct_client_helpers :open_channel (Config , Server ),
239-
240- QName = ? config (queue_name , Config ),
241- Args = ? config (queue_args , Config ),
242- amqp_channel :call (Ch , # 'queue.declare' {queue = QName ,
243- arguments = Args ,
244- durable = true
245- }),
246-
247- RaName = queue_utils :ra_name (QName ),
248- {ok , [{_ , A }, {_ , B }, {_ , C }], _ } = ra :members ({RaName , Server }),
249- Servers = [A , B , C ],
250-
251- rabbit_ct_client_helpers :publish (Ch , QName , 15 ),
252- rabbit_ct_client_helpers :close_channel (Ch ),
253-
254- Name = ra_name (QName ),
255- wait_for_messages_ready (Servers , Name , 15 ),
256-
257- rabbit_ct_broker_helpers :stop_node (Config , C ),
258- rabbit_ct_broker_helpers :stop_node (Config , B ),
259- rabbit_ct_broker_helpers :stop_node (Config , A ),
260-
261- % % Restart one follower
262- forget_cluster_node (Config , B , C ),
263- forget_cluster_node (Config , B , A ),
264-
265- ok = rabbit_ct_broker_helpers :start_node (Config , B ),
266- wait_for_messages_ready ([B ], Name , 15 ),
267- ok = rabbit_ct_broker_helpers :stop_node (Config , B ),
268-
269- % % Restart the other
270- forget_cluster_node (Config , C , B ),
271- forget_cluster_node (Config , C , A ),
272-
273- ok = rabbit_ct_broker_helpers :start_node (Config , C ),
274- wait_for_messages_ready ([C ], Name , 15 ),
275- ok = rabbit_ct_broker_helpers :stop_node (Config , C ),
276- ok ;
277- _ ->
278- {skip , " cannot be run in mixed mode" }
279- end .
230+ % % Tests that quorum queues shrink when forget_cluster_node
231+ % % operations are issues.
232+ [Server | _ ] = rabbit_ct_broker_helpers :get_node_configs (Config , nodename ),
233+ Ch = rabbit_ct_client_helpers :open_channel (Config , Server ),
234+
235+ QName = ? config (queue_name , Config ),
236+ Args = ? config (queue_args , Config ),
237+ amqp_channel :call (Ch , # 'queue.declare' {queue = QName ,
238+ arguments = Args ,
239+ durable = true
240+ }),
241+
242+ RaName = queue_utils :ra_name (QName ),
243+ {ok , [{_ , A }, {_ , B }, {_ , C }], _ } = ra :members ({RaName , Server }),
244+ Servers = [A , B , C ],
245+
246+ Name = ra_name (QName ),
247+
248+ rabbit_ct_client_helpers :publish (Ch , QName , 15 ),
249+ wait_for_messages_ready (Servers , Name , 15 ),
250+ rabbit_ct_client_helpers :close_channel (Ch ),
251+
252+ % % Restart one follower
253+ forget_cluster_node (Config , B , C ),
254+ wait_for_messages_ready ([B ], Name , 15 ),
255+ forget_cluster_node (Config , B , A ),
256+ wait_for_messages_ready ([B ], Name , 15 ),
257+
258+ ok .
280259
281260% %----------------------------------------------------------------------------
282261forget_cluster_node (Config , Node , NodeToRemove ) ->
262+ ok = rabbit_control_helper :command (stop_app , NodeToRemove ),
283263 rabbit_ct_broker_helpers :rabbitmqctl (
284- Config , Node , [" forget_cluster_node" , " --offline " , NodeToRemove ]).
264+ Config , Node , [" forget_cluster_node" , NodeToRemove ]).
0 commit comments