summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLuke Bakken <lbakken@pivotal.io>2017-09-21 09:40:54 -0700
committerLuke Bakken <lbakken@pivotal.io>2017-09-22 11:23:33 -0700
commit774689cf9806518b1d7c3a07da493c14879e1348 (patch)
tree8c52990cfc65be16201294cdbed2bd47260d40f4 /test
parentcfec7c2d0fc009a40d2b545daa4fd70d636e087f (diff)
downloadrabbitmq-server-git-774689cf9806518b1d7c3a07da493c14879e1348.tar.gz
Add three tests for different ha-mode scenarios with min-masters
Diffstat (limited to 'test')
-rw-r--r--test/queue_master_location_SUITE.erl63
1 files changed, 60 insertions, 3 deletions
diff --git a/test/queue_master_location_SUITE.erl b/test/queue_master_location_SUITE.erl
index 4cfaa5f2c2..db7cdbb414 100644
--- a/test/queue_master_location_SUITE.erl
+++ b/test/queue_master_location_SUITE.erl
@@ -51,6 +51,9 @@ groups() ->
{cluster_size_3, [], [
declare_args,
declare_policy,
+ declare_policy_nodes,
+ declare_policy_all,
+ declare_policy_exactly,
declare_config,
calculate_min_master,
calculate_random,
@@ -125,6 +128,56 @@ declare_policy(Config) ->
declare(Config, QueueName, false, false, _Args=[], none),
verify_min_master(Config, Q).
+declare_policy_nodes(Config) ->
+ setup_test_environment(Config),
+ unset_location_config(Config),
+ % Note:
+ % Node0 has 15 queues, Node1 has 8 and Node2 has 1
+ Node0Name = rabbit_data_coercion:to_binary(
+ rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename)),
+ Node1 = rabbit_ct_broker_helpers:get_node_config(Config, 1, nodename),
+ Node1Name = rabbit_data_coercion:to_binary(Node1),
+ Nodes = [Node1Name, Node0Name],
+ Policy = [{<<"queue-master-locator">>, <<"min-masters">>},
+ {<<"ha-mode">>, <<"nodes">>},
+ {<<"ha-params">>, Nodes}],
+ ok = rabbit_ct_broker_helpers:set_policy(Config, 0, ?POLICY,
+ <<".*">>, <<"queues">>, Policy),
+ QueueName = rabbit_misc:r(<<"/">>, queue, Q = <<"qm.test">>),
+ declare(Config, QueueName, false, false, _Args=[], none),
+ verify_min_master(Config, Q, Node1).
+
+declare_policy_all(Config) ->
+ setup_test_environment(Config),
+ unset_location_config(Config),
+ % Note:
+ % Node0 has 15 queues, Node1 has 8 and Node2 has 1
+ Policy = [{<<"queue-master-locator">>, <<"min-masters">>},
+ {<<"ha-mode">>, <<"all">>}],
+ ok = rabbit_ct_broker_helpers:set_policy(Config, 0, ?POLICY,
+ <<".*">>, <<"queues">>, Policy),
+ QueueName = rabbit_misc:r(<<"/">>, queue, Q = <<"qm.test">>),
+ declare(Config, QueueName, false, false, _Args=[], none),
+ verify_min_master(Config, Q).
+
+declare_policy_exactly(Config) ->
+ setup_test_environment(Config),
+ unset_location_config(Config),
+ % Note:
+ % Node0 has 15 queues, Node1 has 8 and Node2 has 1
+ Node1 = rabbit_ct_broker_helpers:get_node_config(Config, 1, nodename),
+ Policy = [{<<"queue-master-locator">>, <<"min-masters">>},
+ {<<"ha-mode">>, <<"exactly">>},
+ {<<"ha-params">>, 2}],
+ ok = rabbit_ct_broker_helpers:set_policy(Config, 0, ?POLICY,
+ <<".*">>, <<"queues">>, Policy),
+ QueueName = rabbit_misc:r(<<"/">>, queue, Q = <<"qm.test">>),
+ declare(Config, QueueName, false, false, _Args=[], none),
+ % Note: even though Node2 has the fewest masters, the "exactly" policy
+ % chooses Node0 and Node1 as eligible, and then "min-masters"
+ % chooses Node1
+ verify_min_master(Config, Q, Node1).
+
declare_config(Config) ->
setup_test_environment(Config),
set_location_config(Config, <<"min-masters">>),
@@ -249,11 +302,15 @@ declare(Config, QueueName, Durable, AutoDelete, Args, Owner) ->
[QueueName, Durable, AutoDelete, Args, Owner]),
Queue.
-verify_min_master(Config, Q) ->
+verify_min_master(Config, Q, MinMasterNode) ->
Node = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
+ Rpc = rpc:call(Node, rabbit_queue_master_location_misc,
+ lookup_master, [Q, ?DEFAULT_VHOST_PATH]),
+ ?assertEqual({ok, MinMasterNode}, Rpc).
+
+verify_min_master(Config, Q) ->
MinMaster = min_master_node(Config),
- ?assertEqual({ok, MinMaster}, rpc:call(Node, rabbit_queue_master_location_misc,
- lookup_master, [Q, ?DEFAULT_VHOST_PATH])).
+ verify_min_master(Config, Q, MinMaster).
verify_random(Config, Q) ->
[Node | _] = Nodes = rabbit_ct_broker_helpers:get_node_configs(Config,