diff options
| -rw-r--r-- | test/maintenance_mode_SUITE.erl | 28 | ||||
| -rw-r--r-- | test/quorum_queue_utils.erl | 15 |
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")). |
