@@ -99,8 +99,13 @@ groups() ->
9999 single_active_consumer_priority_take_over ,
100100 single_active_consumer_priority ,
101101 force_shrink_member_to_current_member ,
102+ <<<<<<< HEAD
102103 force_all_queues_shrink_member_to_current_member
103104>>>>>>> 10 dbde1f71 (QQ tests for force - shrink to current member operations )
105+ =======
106+ force_all_queues_shrink_member_to_current_member ,
107+ force_vhost_queues_shrink_member_to_current_member
108+ >>>>>>> c9d97e61de (Add test for QQ force_vhost_queues_shrink_member_to_current_member / 1 )
104109 ]
105110 ++ all_tests ()},
106111 {cluster_size_5 , [], [start_queue ,
@@ -1195,6 +1200,72 @@ force_all_queues_shrink_member_to_current_member(Config) ->
11951200 ? assertEqual (3 , length (Nodes0 ))
11961201 end || Q <- QQs ].
11971202
1203+ force_vhost_queues_shrink_member_to_current_member (Config ) ->
1204+ [Server0 , Server1 , Server2 ] =
1205+ rabbit_ct_broker_helpers :get_node_configs (Config , nodename ),
1206+
1207+ Ch0 = rabbit_ct_client_helpers :open_channel (Config , Server0 ),
1208+ QQ = ? config (queue_name , Config ),
1209+ AQ = ? config (alt_queue_name , Config ),
1210+ ? assertEqual ({'queue.declare_ok' , QQ , 0 , 0 },
1211+ declare (Ch0 , QQ , [{<<" x-queue-type" >>, longstr , <<" quorum" >>}])),
1212+ ? assertEqual ({'queue.declare_ok' , AQ , 0 , 0 },
1213+ declare (Ch0 , AQ , [{<<" x-queue-type" >>, longstr , <<" quorum" >>}])),
1214+
1215+ QQs = [QQ , AQ ],
1216+
1217+ VHost1 = <<" /" >>,
1218+ VHost2 = <<" another-vhost" >>,
1219+ VHosts = [VHost1 , VHost2 ],
1220+
1221+ User = ? config (rmq_username , Config ),
1222+ ok = rabbit_ct_broker_helpers :add_vhost (Config , Server0 , VHost2 , User ),
1223+ ok = rabbit_ct_broker_helpers :set_full_permissions (Config , User , VHost2 ),
1224+ Conn1 = rabbit_ct_client_helpers :open_unmanaged_connection (Config , Server0 , VHost2 ),
1225+ {ok , Ch1 } = amqp_connection :open_channel (Conn1 ),
1226+ ? assertEqual ({'queue.declare_ok' , QQ , 0 , 0 },
1227+ declare (Ch1 , QQ , [{<<" x-queue-type" >>, longstr , <<" quorum" >>}])),
1228+ ? assertEqual ({'queue.declare_ok' , AQ , 0 , 0 },
1229+ declare (Ch1 , AQ , [{<<" x-queue-type" >>, longstr , <<" quorum" >>}])),
1230+
1231+ [rabbit_ct_client_helpers :publish (Ch , Q , 3 ) || Q <- QQs , Ch <- [Ch0 , Ch1 ]],
1232+
1233+ [begin
1234+ QQRes = rabbit_misc :r (VHost , queue , Q ),
1235+ {ok , RaName } = rpc :call (Server0 , rabbit_queue_type_util , qname_to_internal_name , [QQRes ]),
1236+ wait_for_messages_ready ([Server0 ], RaName , 3 ),
1237+ {ok , Q0 } = rpc :call (Server0 , rabbit_amqqueue , lookup , [Q , VHost ]),
1238+ #{nodes := Nodes0 } = amqqueue :get_type_state (Q0 ),
1239+ ? assertEqual (3 , length (Nodes0 ))
1240+ end || Q <- QQs , VHost <- VHosts ],
1241+
1242+ rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_quorum_queue ,
1243+ force_vhost_queues_shrink_member_to_current_member , [VHost2 ]),
1244+
1245+ [begin
1246+ QQRes = rabbit_misc :r (VHost , queue , Q ),
1247+ {ok , RaName } = rpc :call (Server0 , rabbit_queue_type_util , qname_to_internal_name , [QQRes ]),
1248+ wait_for_messages_ready ([Server0 ], RaName , 3 ),
1249+ {ok , Q0 } = rpc :call (Server0 , rabbit_amqqueue , lookup , [Q , VHost ]),
1250+ #{nodes := Nodes0 } = amqqueue :get_type_state (Q0 ),
1251+ case VHost of
1252+ VHost1 -> ? assertEqual (3 , length (Nodes0 ));
1253+ VHost2 -> ? assertEqual (1 , length (Nodes0 ))
1254+ end
1255+ end || Q <- QQs , VHost <- VHosts ],
1256+
1257+ % % grow queues back to all nodes in VHost2 only
1258+ [rpc :call (Server0 , rabbit_quorum_queue , grow , [S , VHost2 , <<" .*" >>, all ]) || S <- [Server1 , Server2 ]],
1259+
1260+ [begin
1261+ QQRes = rabbit_misc :r (VHost , queue , Q ),
1262+ {ok , RaName } = rpc :call (Server0 , rabbit_queue_type_util , qname_to_internal_name , [QQRes ]),
1263+ wait_for_messages_ready ([Server0 ], RaName , 3 ),
1264+ {ok , Q0 } = rpc :call (Server0 , rabbit_amqqueue , lookup , [Q , VHost ]),
1265+ #{nodes := Nodes0 } = amqqueue :get_type_state (Q0 ),
1266+ ? assertEqual (3 , length (Nodes0 ))
1267+ end || Q <- QQs , VHost <- VHosts ].
1268+
11981269priority_queue_fifo (Config ) ->
11991270 % % testing: if hi priority messages are published before lo priority
12001271 % % messages they are always consumed first (fifo)
0 commit comments