Skip to content

Commit d72d4e2

Browse files
Ayanda-Dmergify[bot]
authored andcommitted
Add test for QQ force_vhost_queues_shrink_member_to_current_member/1
(cherry picked from commit de0c0db) (cherry picked from commit c9d97e6) (cherry picked from commit 6c55cb1) # Conflicts: # deps/rabbit/test/quorum_queue_SUITE.erl
1 parent 4a7a355 commit d72d4e2

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

deps/rabbit/test/quorum_queue_SUITE.erl

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
>>>>>>> 2e37ac607d (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+
>>>>>>> 6c55cb1fdc (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+
11981269
priority_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

Comments
 (0)