Fix test flake

As described in https://github.com/rabbitmq/rabbitmq-server/issues/12413#issuecomment-2385379386
test case queue_topology flaked in CI with the following error:
```
rabbitmq_amqp_client > management_SUITE > cluster_size_3 > queue_topology
    #1. {error,{test_case_failed,{824,
                                  <<"rmq-ct-cluster_size_3-1-21000@localhost">>}}}
```

This flake could not be reproduced locally (neither with Mnesia nor with Khepri).
This commit is contained in:
David Ansari 2024-10-24 09:25:49 +00:00 committed by Michael Klishin
parent 2577b7e284
commit 7a5277e1c4
No known key found for this signature in database
GPG Key ID: FF4F6501646A9C9A
1 changed files with 23 additions and 18 deletions

View File

@ -810,25 +810,30 @@ queue_topology(Config) ->
ok = rabbit_ct_broker_helpers:stop_node(Config, 0),
Init2 = {_, LinkPair2} = init(Config, 2),
{ok, QQInfo2} = rabbitmq_amqp_client:get_queue(LinkPair2, QQName),
{ok, SQInfo2} = rabbitmq_amqp_client:get_queue(LinkPair2, SQName),
eventually(
?_assert(
begin
{ok, QQInfo2} = rabbitmq_amqp_client:get_queue(LinkPair2, QQName),
{ok, SQInfo2} = rabbitmq_amqp_client:get_queue(LinkPair2, SQName),
case maps:get(leader, QQInfo2) of
N1 -> ok;
N2 -> ok;
Other0 -> ct:fail({?LINE, Other0})
end,
case maps:get(leader, SQInfo2) of
N1 -> ok;
N2 -> ok;
Other1 -> ct:fail({?LINE, Other1})
end,
%% Replicas should include both online and offline replicas.
{ok, QQReplicas2} = maps:find(replicas, QQInfo2),
?assertEqual(Nodes, lists:usort(QQReplicas2)),
{ok, SQReplicas2} = maps:find(replicas, SQInfo2),
?assertEqual(Nodes, lists:usort(SQReplicas2)),
{ok, QQReplicas2} = maps:find(replicas, QQInfo2),
{ok, SQReplicas2} = maps:find(replicas, SQInfo2),
QQReplicas = lists:usort(QQReplicas2),
SQReplicas = lists:usort(SQReplicas2),
QQLeader = maps:get(leader, QQInfo2),
SQLeader = maps:get(leader, SQInfo2),
ct:pal("quorum queue replicas: ~p~n"
"quorum queue leader: ~s~n"
"stream replicas: ~p~n"
"stream leader: ~s",
[QQReplicas, QQLeader, SQReplicas, SQLeader]),
%% Replicas should always include both online and offline replicas.
QQReplicas =:= Nodes andalso
SQReplicas =:= Nodes andalso
(QQLeader =:= N1 orelse QQLeader =:= N2) andalso
(SQLeader =:= N1 orelse SQLeader =:= N2)
end
), 1000, 5),
ok = rabbit_ct_broker_helpers:start_node(Config, 0),
{ok, _} = rabbitmq_amqp_client:delete_queue(LinkPair2, CQName),