Skip to content

Commit e4e42bd

Browse files
committed
Add three tests for different ha-mode scenarios with min-masters
1 parent a3bcc37 commit e4e42bd

File tree

1 file changed

+60
-3
lines changed

1 file changed

+60
-3
lines changed

test/queue_master_location_SUITE.erl

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ groups() ->
5151
{cluster_size_3, [], [
5252
declare_args,
5353
declare_policy,
54+
declare_policy_nodes,
55+
declare_policy_all,
56+
declare_policy_exactly,
5457
declare_config,
5558
calculate_min_master,
5659
calculate_random,
@@ -125,6 +128,56 @@ declare_policy(Config) ->
125128
declare(Config, QueueName, false, false, _Args=[], none),
126129
verify_min_master(Config, Q).
127130

131+
declare_policy_nodes(Config) ->
132+
setup_test_environment(Config),
133+
unset_location_config(Config),
134+
% Note:
135+
% Node0 has 15 queues, Node1 has 8 and Node2 has 1
136+
Node0Name = rabbit_data_coercion:to_binary(
137+
rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename)),
138+
Node1 = rabbit_ct_broker_helpers:get_node_config(Config, 1, nodename),
139+
Node1Name = rabbit_data_coercion:to_binary(Node1),
140+
Nodes = [Node1Name, Node0Name],
141+
Policy = [{<<"queue-master-locator">>, <<"min-masters">>},
142+
{<<"ha-mode">>, <<"nodes">>},
143+
{<<"ha-params">>, Nodes}],
144+
ok = rabbit_ct_broker_helpers:set_policy(Config, 0, ?POLICY,
145+
<<".*">>, <<"queues">>, Policy),
146+
QueueName = rabbit_misc:r(<<"/">>, queue, Q = <<"qm.test">>),
147+
declare(Config, QueueName, false, false, _Args=[], none),
148+
verify_min_master(Config, Q, Node1).
149+
150+
declare_policy_all(Config) ->
151+
setup_test_environment(Config),
152+
unset_location_config(Config),
153+
% Note:
154+
% Node0 has 15 queues, Node1 has 8 and Node2 has 1
155+
Policy = [{<<"queue-master-locator">>, <<"min-masters">>},
156+
{<<"ha-mode">>, <<"all">>}],
157+
ok = rabbit_ct_broker_helpers:set_policy(Config, 0, ?POLICY,
158+
<<".*">>, <<"queues">>, Policy),
159+
QueueName = rabbit_misc:r(<<"/">>, queue, Q = <<"qm.test">>),
160+
declare(Config, QueueName, false, false, _Args=[], none),
161+
verify_min_master(Config, Q).
162+
163+
declare_policy_exactly(Config) ->
164+
setup_test_environment(Config),
165+
unset_location_config(Config),
166+
% Note:
167+
% Node0 has 15 queues, Node1 has 8 and Node2 has 1
168+
Node1 = rabbit_ct_broker_helpers:get_node_config(Config, 1, nodename),
169+
Policy = [{<<"queue-master-locator">>, <<"min-masters">>},
170+
{<<"ha-mode">>, <<"exactly">>},
171+
{<<"ha-params">>, 2}],
172+
ok = rabbit_ct_broker_helpers:set_policy(Config, 0, ?POLICY,
173+
<<".*">>, <<"queues">>, Policy),
174+
QueueName = rabbit_misc:r(<<"/">>, queue, Q = <<"qm.test">>),
175+
declare(Config, QueueName, false, false, _Args=[], none),
176+
% Note: even though Node2 has the fewest masters, the "exactly" policy
177+
% chooses Node0 and Node1 as eligible, and then "min-masters"
178+
% chooses Node1
179+
verify_min_master(Config, Q, Node1).
180+
128181
declare_config(Config) ->
129182
setup_test_environment(Config),
130183
set_location_config(Config, <<"min-masters">>),
@@ -249,11 +302,15 @@ declare(Config, QueueName, Durable, AutoDelete, Args, Owner) ->
249302
[QueueName, Durable, AutoDelete, Args, Owner]),
250303
Queue.
251304

252-
verify_min_master(Config, Q) ->
305+
verify_min_master(Config, Q, MinMasterNode) ->
253306
Node = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
307+
Rpc = rpc:call(Node, rabbit_queue_master_location_misc,
308+
lookup_master, [Q, ?DEFAULT_VHOST_PATH]),
309+
?assertEqual({ok, MinMasterNode}, Rpc).
310+
311+
verify_min_master(Config, Q) ->
254312
MinMaster = min_master_node(Config),
255-
?assertEqual({ok, MinMaster}, rpc:call(Node, rabbit_queue_master_location_misc,
256-
lookup_master, [Q, ?DEFAULT_VHOST_PATH])).
313+
verify_min_master(Config, Q, MinMaster).
257314

258315
verify_random(Config, Q) ->
259316
[Node | _] = Nodes = rabbit_ct_broker_helpers:get_node_configs(Config,

0 commit comments

Comments
 (0)