Skip to content

Commit

Permalink
Remove test flake
Browse files Browse the repository at this point in the history
Prior to this commit tests
* leader_transfer_quorum_queue_credit_single
* leader_transfer_quorum_queue_credit_batches
flaked in CI during 4.1 (main) and 4.0 mixed version testing.

The follwing error occurred on node 0:
```
[error] <0.1950.0> Timed out waiting for credit reply from quorum queue 'leader_transfer_quorum_queue_credit_batches' in vhost '/'. Hint: Enable feature flag rabbitmq_4.0.0
[warning] <0.1950.0> Closing session for connection <0.1945.0>: {'v1_0.error',
[warning] <0.1950.0>                                             {symbol,<<"amqp:internal-error">>},
[warning] <0.1950.0>                                             {utf8,
[warning] <0.1950.0>                                              <<"Timed out waiting for credit reply from quorum queue 'leader_transfer_quorum_queue_credit_batches' in vhost '/'. Hint: Enable feature flag rabbitmq_4.0.0">>},
[warning] <0.1950.0>                                             undefined}
```

Therefore we enable this feature flag for both tests.

This commit also simplifies some test setups that were necessary for
4.0/3.13 mixed version testing, but isn't necessary anymore for 4.1/4.0
mixed version testing.
  • Loading branch information
ansd committed Oct 24, 2024
1 parent 2c0cdee commit c476540
Showing 1 changed file with 15 additions and 35 deletions.
50 changes: 15 additions & 35 deletions deps/rabbit/test/amqp_client_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -303,12 +303,15 @@ init_per_testcase(T, Config)
when T =:= detach_requeues_one_session_quorum_queue orelse
T =:= single_active_consumer_quorum_queue orelse
T =:= detach_requeues_two_connections_quorum_queue ->
case rabbit_ct_broker_helpers:enable_feature_flag(Config, 'rabbitmq_4.0.0') of
ok ->
rabbit_ct_helpers:testcase_started(Config, T);
{skip, _} ->
{skip, "Feature flag rabbitmq_4.0.0 enables the consumer removal API"}
end;
%% Feature flag rabbitmq_4.0.0 enables the consumer removal API.
ok = rabbit_ct_broker_helpers:enable_feature_flag(Config, 'rabbitmq_4.0.0'),
rabbit_ct_helpers:testcase_started(Config, T);
init_per_testcase(T, Config)
when T =:= leader_transfer_quorum_queue_credit_single orelse
T =:= leader_transfer_quorum_queue_credit_batches ->
%% These test cases flake with feature flag 'rabbitmq_4.0.0' disabled.
ok = rabbit_ct_broker_helpers:enable_feature_flag(Config, 'rabbitmq_4.0.0'),
rabbit_ct_helpers:testcase_started(Config, T);
init_per_testcase(T = immutable_bare_message, Config) ->
case rpc(Config, rabbit_feature_flags, is_enabled, ['rabbitmq_4.0.0']) of
true ->
Expand All @@ -333,26 +336,6 @@ init_per_testcase(T = dead_letter_reject, Config) ->
{skip, "This test is known to fail with feature flag message_containers_deaths_v2 disabled "
"due bug https://github.com/rabbitmq/rabbitmq-server/issues/11159"}
end;
init_per_testcase(T, Config)
when T =:= leader_transfer_quorum_queue_credit_single orelse
T =:= leader_transfer_quorum_queue_credit_batches orelse
T =:= leader_transfer_stream_credit_single orelse
T =:= leader_transfer_stream_credit_batches orelse
T =:= leader_transfer_quorum_queue_send orelse
T =:= leader_transfer_stream_send ->
case rpc(Config, rabbit_feature_flags, is_supported, ['rabbitmq_4.0.0']) of
true ->
rabbit_ct_helpers:testcase_started(Config, T);
false ->
{skip, "This test requires the AMQP management extension of RabbitMQ 4.0"}
end;
init_per_testcase(T, Config)
when T =:= classic_queue_on_new_node orelse
T =:= quorum_queue_on_new_node ->
%% If node 1 runs 4.x, this is the new no-op plugin.
%% If node 1 runs 3.x, this is the old real plugin.
ok = rabbit_ct_broker_helpers:enable_plugin(Config, 1, rabbitmq_amqp1_0),
rabbit_ct_helpers:testcase_started(Config, T);
init_per_testcase(Testcase, Config) ->
rabbit_ct_helpers:testcase_started(Config, Testcase).

Expand Down Expand Up @@ -3543,14 +3526,11 @@ async_notify_settled_stream(Config) ->
async_notify(settled, <<"stream">>, Config).

async_notify_unsettled_classic_queue(Config) ->
case rabbit_ct_broker_helpers:enable_feature_flag(Config, 'rabbitmq_4.0.0') of
ok ->
async_notify(unsettled, <<"classic">>, Config);
{skip, _} ->
{skip, "Skipping as this test will flake. Link flow control in classic "
"queues with credit API v1 is known to be broken: "
"https://github.com/rabbitmq/rabbitmq-server/issues/2597"}
end.
%% This test flakes with feature flag 'rabbitmq_4.0.0' disabled.
%% Link flow control in classic queues with credit API v1 is known to be broken:
%% https://github.com/rabbitmq/rabbitmq-server/issues/2597
ok = rabbit_ct_broker_helpers:enable_feature_flag(Config, 'rabbitmq_4.0.0'),
async_notify(unsettled, <<"classic">>, Config).

async_notify_unsettled_quorum_queue(Config) ->
async_notify(unsettled, <<"quorum">>, Config).
Expand Down Expand Up @@ -3852,7 +3832,6 @@ leader_transfer_credit(QName, QType, Credit, Config) ->
ok = end_session_sync(Session1),
ok = close_connection_sync(Connection1),

%% Consume from a follower.
OpnConf = connection_config(0, Config),
{ok, Connection0} = amqp10_client:open_connection(OpnConf),
{ok, Session0} = amqp10_client:begin_session_sync(Connection0),
Expand All @@ -3866,6 +3845,7 @@ leader_transfer_credit(QName, QType, Credit, Config) ->
ok = wait_for_accepts(NumMsgs),
ok = detach_link_sync(Sender),

%% Consume from a follower.
ok = wait_for_local_member(QType, QName, Config),
Filter = consume_from_first(QType),
{ok, Receiver} = amqp10_client:attach_receiver_link(
Expand Down

0 comments on commit c476540

Please sign in to comment.