summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2020-09-25 12:17:38 +0200
committerJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2020-09-25 12:19:23 +0200
commit6f1d76d68c1083ffeee506514f42c6ccd0e09533 (patch)
tree16b5d73bbd3201608d54f272125d8dc6b6a43c28
parent7812f1b8485875c4acf1ceda972acc3d51b8e3d8 (diff)
downloadrabbitmq-server-git-6f1d76d68c1083ffeee506514f42c6ccd0e09533.tar.gz
maintenance_mode_SUITE: Skip leader election check
... in `quorum_queue_leadership_transfer` if some `rabbit_fifo` machines have different versions.
-rw-r--r--test/maintenance_mode_SUITE.erl28
-rw-r--r--test/quorum_queue_utils.erl15
2 files changed, 36 insertions, 7 deletions
diff --git a/test/maintenance_mode_SUITE.erl b/test/maintenance_mode_SUITE.erl
index 0ec66cd6a6..3abbf9b064 100644
--- a/test/maintenance_mode_SUITE.erl
+++ b/test/maintenance_mode_SUITE.erl
@@ -239,7 +239,8 @@ classic_mirrored_queue_leadership_transfer(Config) ->
rabbit_ct_broker_helpers:clear_policy(Config, A, PolicyPattern).
quorum_queue_leadership_transfer(Config) ->
- [A | _] = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
+ [A | _] = Nodenames = rabbit_ct_broker_helpers:get_node_configs(
+ Config, nodename),
ct:pal("Picked node ~s for maintenance tests...", [A]),
rabbit_ct_helpers:await_condition(
@@ -260,11 +261,24 @@ quorum_queue_leadership_transfer(Config) ->
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 () ->
- LocalLeaders = rabbit_ct_broker_helpers:rpc(Config, A,
- rabbit_amqqueue, list_local_leaders, []),
- length(LocalLeaders) =:= 0
- end, 20000),
+ AllTheSame = quorum_queue_utils:fifo_machines_use_same_version(
+ Config, Nodenames),
+ case AllTheSame of
+ true ->
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ LocalLeaders = rabbit_ct_broker_helpers:rpc(
+ Config, A,
+ rabbit_amqqueue,
+ list_local_leaders,
+ []),
+ length(LocalLeaders) =:= 0
+ end, 20000);
+ false ->
+ ct:pal(
+ ?LOW_IMPORTANCE,
+ "Skip leader election check because rabbit_fifo machines "
+ "have different versions", [])
+ end,
rabbit_ct_broker_helpers:revive_node(Config, A).
diff --git a/test/quorum_queue_utils.erl b/test/quorum_queue_utils.erl
index 4b65bc2737..95ddc892f1 100644
--- a/test/quorum_queue_utils.erl
+++ b/test/quorum_queue_utils.erl
@@ -9,6 +9,8 @@
wait_for_messages/2,
dirty_query/3,
ra_name/1,
+ fifo_machines_use_same_version/1,
+ fifo_machines_use_same_version/2,
is_mixed_versions/0
]).
@@ -98,5 +100,18 @@ filter_queues(Expected, Got) ->
lists:member(K, Keys)
end, Got).
+fifo_machines_use_same_version(Config) ->
+ Nodenames = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
+ fifo_machines_use_same_version(Config, Nodenames).
+
+fifo_machines_use_same_version(Config, Nodenames)
+ when length(Nodenames) >= 1 ->
+ [MachineAVersion | OtherMachinesVersions] =
+ [(catch rabbit_ct_broker_helpers:rpc(
+ Config, Nodename,
+ rabbit_fifo, version, []))
+ || Nodename <- Nodenames],
+ lists:all(fun(V) -> V =:= MachineAVersion end, OtherMachinesVersions).
+
is_mixed_versions() ->
not (false == os:getenv("SECONDARY_UMBRELLA")).