summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2020-07-23 14:22:33 +0200
committerJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2020-07-23 15:04:59 +0200
commit8629a1cd3d59bfff96129e2cbc9b0d7042651675 (patch)
tree337fca89efea84a75ca110683bb8989d2272a8f5
parentb076c739ed7dc7c304d9f16b7bedeafea4cc3225 (diff)
downloadrabbitmq-server-git-8629a1cd3d59bfff96129e2cbc9b0d7042651675.tar.gz
maintenance_mode_SUITE, queue_master_location_SUITE: Enable `maintenance_mode_status` feature flag
This is a prerequisite for the testsuites to work. The second benefit is that if the feature flag is unavailable (say, in mixed-version testing), the testcases will be skipped. While here, remove all trailing whitespaces.
-rw-r--r--test/maintenance_mode_SUITE.erl44
-rw-r--r--test/queue_master_location_SUITE.erl33
2 files changed, 52 insertions, 25 deletions
diff --git a/test/maintenance_mode_SUITE.erl b/test/maintenance_mode_SUITE.erl
index 6ec3f61ad5..61a89c986e 100644
--- a/test/maintenance_mode_SUITE.erl
+++ b/test/maintenance_mode_SUITE.erl
@@ -57,11 +57,21 @@ init_per_testcase(Testcase, Config) ->
{rmq_nodename_suffix, Testcase},
{tcp_ports_base, {skip_n_nodes, TestNumber * ClusterSize}}
]),
- rabbit_ct_helpers:run_steps(Config1,
- rabbit_ct_broker_helpers:setup_steps() ++
- rabbit_ct_client_helpers:setup_steps() ++ [
- fun rabbit_ct_broker_helpers:set_ha_policy_all/1
- ]).
+ Config2 = rabbit_ct_helpers:run_steps(
+ Config1,
+ rabbit_ct_broker_helpers:setup_steps() ++
+ rabbit_ct_client_helpers:setup_steps() ++
+ [fun rabbit_ct_broker_helpers:set_ha_policy_all/1]),
+ FFEnabled = rabbit_ct_broker_helpers:enable_feature_flag(
+ Config2,
+ maintenance_mode_status),
+ case FFEnabled of
+ ok ->
+ Config2;
+ Skip ->
+ end_per_testcase(Testcase, Config2),
+ Skip
+ end.
end_per_testcase(Testcase, Config) ->
Config1 = rabbit_ct_helpers:run_steps(Config,
@@ -75,12 +85,12 @@ end_per_testcase(Testcase, Config) ->
maintenance_mode_status(Config) ->
Nodes = [A, B, C] = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
-
+
[begin
?assertNot(rabbit_ct_broker_helpers:is_being_drained_local_read(Config, Node)),
?assertNot(rabbit_ct_broker_helpers:is_being_drained_consistent_read(Config, Node))
end || Node <- Nodes],
-
+
[begin
[begin
?assertNot(rabbit_ct_broker_helpers:is_being_drained_consistent_read(Config, TargetNode, NodeToCheck))
@@ -91,38 +101,38 @@ maintenance_mode_status(Config) ->
rabbit_ct_helpers:await_condition(
fun () -> rabbit_ct_broker_helpers:is_being_drained_local_read(Config, B) end,
10000),
-
+
[begin
?assert(rabbit_ct_broker_helpers:is_being_drained_consistent_read(Config, TargetNode, B))
end || TargetNode <- Nodes],
-
+
?assertEqual(
lists:usort([A, C]),
lists:usort(rabbit_ct_broker_helpers:rpc(Config, B,
rabbit_maintenance, primary_replica_transfer_candidate_nodes, []))),
-
+
rabbit_ct_broker_helpers:unmark_as_being_drained(Config, B),
rabbit_ct_helpers:await_condition(
fun () -> not rabbit_ct_broker_helpers:is_being_drained_local_read(Config, B) end,
10000),
-
+
[begin
?assertNot(rabbit_ct_broker_helpers:is_being_drained_local_read(Config, TargetNode, B)),
?assertNot(rabbit_ct_broker_helpers:is_being_drained_consistent_read(Config, TargetNode, B))
end || TargetNode <- Nodes],
-
+
?assertEqual(
lists:usort([A, C]),
lists:usort(rabbit_ct_broker_helpers:rpc(Config, B,
rabbit_maintenance, primary_replica_transfer_candidate_nodes, []))),
-
+
ok.
listener_suspension_status(Config) ->
Nodes = [A | _] = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
ct:pal("Picked node ~s for maintenance tests...", [A]),
-
+
rabbit_ct_helpers:await_condition(
fun () -> not rabbit_ct_broker_helpers:is_being_drained_local_read(Config, A) end, 10000),
@@ -208,14 +218,14 @@ quorum_queue_leadership_transfer(Config) ->
amqp_channel:call(Ch, #'queue.declare'{queue = QName, durable = true, arguments = [
{<<"x-queue-type">>, longstr, <<"quorum">>}
]}),
-
+
%% we cannot assert on the number of local leaders here: declaring a QQ on node A
%% does not guarantee that the leader will be hosted on node A
-
+
rabbit_ct_broker_helpers:drain_node(Config, A),
rabbit_ct_helpers:await_condition(
fun () -> rabbit_ct_broker_helpers:is_being_drained_local_read(Config, A) end, 10000),
-
+
%% quorum queue leader election is asynchronous
rabbit_ct_helpers:await_condition(
fun () ->
diff --git a/test/queue_master_location_SUITE.erl b/test/queue_master_location_SUITE.erl
index 6a346c5618..fab3eac3f0 100644
--- a/test/queue_master_location_SUITE.erl
+++ b/test/queue_master_location_SUITE.erl
@@ -53,11 +53,11 @@ groups() ->
calculate_random,
calculate_client_local
]},
-
+
{maintenance_mode, [], [
declare_with_min_masters_and_some_nodes_under_maintenance,
declare_with_min_masters_and_all_nodes_under_maintenance,
-
+
declare_with_random_and_some_nodes_under_maintenance,
declare_with_random_and_all_nodes_under_maintenance
]}
@@ -101,9 +101,26 @@ init_per_testcase(Testcase, Config) ->
{rmq_nodename_suffix, Testcase},
{tcp_ports_base, {skip_n_nodes, TestNumber * ClusterSize}}
]),
- rabbit_ct_helpers:run_steps(Config1,
- rabbit_ct_broker_helpers:setup_steps() ++
- rabbit_ct_client_helpers:setup_steps()).
+ Config2 = rabbit_ct_helpers:run_steps(
+ Config1,
+ rabbit_ct_broker_helpers:setup_steps() ++
+ rabbit_ct_client_helpers:setup_steps()),
+ Group = proplists:get_value(name, ?config(tc_group_properties, Config)),
+ FFEnabled = case Group of
+ maintenance_mode ->
+ rabbit_ct_broker_helpers:enable_feature_flag(
+ Config2,
+ maintenance_mode_status);
+ _ ->
+ ok
+ end,
+ case FFEnabled of
+ ok ->
+ Config2;
+ Skip ->
+ end_per_testcase(Testcase, Config2),
+ Skip
+ end.
end_per_testcase(Testcase, Config) ->
Config1 = rabbit_ct_helpers:run_steps(Config,
@@ -226,7 +243,7 @@ declare_with_min_masters_and_some_nodes_under_maintenance(Config) ->
set_location_policy(Config, ?POLICY, <<"min-masters">>),
rabbit_ct_broker_helpers:mark_as_being_drained(Config, 0),
rabbit_ct_broker_helpers:mark_as_being_drained(Config, 1),
-
+
QName = <<"qm.tests.min_masters.maintenance.case1">>,
Resource = rabbit_misc:r(<<"/">>, queue, QName),
Record = declare(Config, Resource, false, false, _Args = [], none),
@@ -244,7 +261,7 @@ declare_with_random_and_some_nodes_under_maintenance(Config) ->
set_location_policy(Config, ?POLICY, <<"random">>),
rabbit_ct_broker_helpers:mark_as_being_drained(Config, 0),
rabbit_ct_broker_helpers:mark_as_being_drained(Config, 2),
-
+
QName = <<"qm.tests.random.maintenance.case1">>,
Resource = rabbit_misc:r(<<"/">>, queue, QName),
Record = declare(Config, Resource, false, false, _Args = [], none),
@@ -263,7 +280,7 @@ declare_with_all_nodes_under_maintenance(Config, Locator) ->
rabbit_ct_broker_helpers:mark_as_being_drained(Config, 0),
rabbit_ct_broker_helpers:mark_as_being_drained(Config, 1),
rabbit_ct_broker_helpers:mark_as_being_drained(Config, 2),
-
+
QName = rabbit_data_coercion:to_binary(
rabbit_misc:format("qm.tests.~s.maintenance.case2", [Locator])),
Resource = rabbit_misc:r(<<"/">>, queue, QName),