@@ -250,108 +250,6 @@ end_per_group(_, Config) ->
250250 rabbit_ct_client_helpers :teardown_steps () ++
251251 rabbit_ct_broker_helpers :teardown_steps ()).
252252
253- init_per_testcase (T , Config )
254- when T =:= message_headers_conversion orelse
255- T =:= roundtrip_with_drain_quorum_queue orelse
256- T =:= drain_many_quorum_queue orelse
257- T =:= timed_get_quorum_queue orelse
258- T =:= available_messages_quorum_queue ->
259- case rabbit_ct_broker_helpers :enable_feature_flag (Config , 'rabbitmq_4.0.0' ) of
260- ok ->
261- rabbit_ct_helpers :testcase_started (Config , T );
262- _ ->
263- {skip , " Receiving with drain from quorum queues in credit API v1 have a known "
264- " bug that they reply with send_drained before delivering the message." }
265- end ;
266- init_per_testcase (single_active_consumer_drain_quorum_queue = T , Config ) ->
267- case rabbit_ct_broker_helpers :enable_feature_flag (Config , 'rabbitmq_4.0.0' ) of
268- ok ->
269- rabbit_ct_helpers :testcase_started (Config , T );
270- _ ->
271- {skip , " Draining a SAC inactive quorum queue consumer with credit API v1 "
272- " is known to be unsupported." }
273- end ;
274- init_per_testcase (T , Config )
275- when T =:= incoming_window_closed_close_link orelse
276- T =:= incoming_window_closed_rabbitmq_internal_flow_classic_queue orelse
277- T =:= incoming_window_closed_rabbitmq_internal_flow_quorum_queue orelse
278- T =:= tcp_back_pressure_rabbitmq_internal_flow_classic_queue orelse
279- T =:= tcp_back_pressure_rabbitmq_internal_flow_quorum_queue ->
280- % % The new RabbitMQ internal flow control
281- % % writer proc <- session proc <- queue proc
282- % % is only available with credit API v2.
283- case rabbit_ct_broker_helpers :enable_feature_flag (Config , 'rabbitmq_4.0.0' ) of
284- ok ->
285- rabbit_ct_helpers :testcase_started (Config , T );
286- _ ->
287- {skip , " Feature flag rabbitmq_4.0.0 is disabled" }
288- end ;
289- init_per_testcase (T , Config )
290- when T =:= modified_quorum_queue orelse
291- T =:= modified_dead_letter_headers_exchange orelse
292- T =:= modified_dead_letter_history ->
293- case rabbit_ct_broker_helpers :enable_feature_flag (Config , 'rabbitmq_4.0.0' ) of
294- ok ->
295- rabbit_ct_helpers :testcase_started (Config , T );
296- _ ->
297- {skip , " Feature flag rabbitmq_4.0.0 is disabled, but needed for "
298- " the new #modify{} command being sent to quorum queues." }
299- end ;
300- init_per_testcase (T , Config )
301- when T =:= detach_requeues_one_session_classic_queue orelse
302- T =:= detach_requeues_drop_head_classic_queue orelse
303- T =:= detach_requeues_two_connections_classic_queue orelse
304- T =:= single_active_consumer_classic_queue ->
305- % % Cancel API v2 reuses feature flag rabbitmq_4.0.0.
306- % % In 3.13, with cancel API v1, when a receiver detaches with unacked messages, these messages
307- % % will remain unacked and unacked message state will be left behind in the server session
308- % % process state.
309- % % In contrast, cancel API v2 in 4.x will requeue any unacked messages if the receiver detaches.
310- % % We skip the single active consumer tests because these test cases assume that detaching a
311- % % receiver link will requeue unacked messages.
312- case rabbit_ct_broker_helpers :enable_feature_flag (Config , 'rabbitmq_4.0.0' ) of
313- ok ->
314- rabbit_ct_helpers :testcase_started (Config , T );
315- _ ->
316- {skip , " Cancel API v2 is disabled due to feature flag rabbitmq_4.0.0 being disabled." }
317- end ;
318- init_per_testcase (T , Config )
319- when T =:= detach_requeues_one_session_quorum_queue orelse
320- T =:= single_active_consumer_quorum_queue orelse
321- T =:= detach_requeues_two_connections_quorum_queue ->
322- % % Feature flag rabbitmq_4.0.0 enables the consumer removal API.
323- case rabbit_ct_broker_helpers :enable_feature_flag (Config , 'rabbitmq_4.0.0' ) of
324- ok ->
325- rabbit_ct_helpers :testcase_started (Config , T );
326- Skip ->
327- Skip
328- end ;
329- init_per_testcase (T , Config )
330- when T =:= leader_transfer_quorum_queue_credit_single orelse
331- T =:= leader_transfer_quorum_queue_credit_batches orelse
332- T =:= async_notify_unsettled_classic_queue orelse
333- T =:= leader_transfer_stream_credit_single orelse
334- T =:= dead_letter_into_stream orelse
335- T =:= classic_queue_on_new_node orelse
336- T =:= leader_transfer_quorum_queue_send orelse
337- T =:= last_queue_confirms orelse
338- T =:= leader_transfer_stream_credit_batches orelse
339- T =:= leader_transfer_stream_send ->
340- % % These test cases flake with feature flag 'rabbitmq_4.0.0' disabled.
341- case rabbit_ct_broker_helpers :enable_feature_flag (Config , 'rabbitmq_4.0.0' ) of
342- ok ->
343- rabbit_ct_helpers :testcase_started (Config , T );
344- Skip ->
345- Skip
346- end ;
347- init_per_testcase (T = immutable_bare_message , Config ) ->
348- case rabbit_ct_broker_helpers :enable_feature_flag (Config , 'rabbitmq_4.0.0' ) of
349- ok ->
350- rabbit_ct_helpers :testcase_started (Config , T );
351- _ ->
352- {skip , " RabbitMQ is known to wrongfully modify the bare message with feature "
353- " flag rabbitmq_4.0.0 disabled" }
354- end ;
355253init_per_testcase (T = dead_letter_reject , Config ) ->
356254 case rabbit_ct_broker_helpers :enable_feature_flag (Config , message_containers_deaths_v2 ) of
357255 ok ->
@@ -3676,10 +3574,6 @@ async_notify_settled_stream(Config) ->
36763574 async_notify (settled , <<" stream" >>, Config ).
36773575
36783576async_notify_unsettled_classic_queue (Config ) ->
3679- % % This test flakes with feature flag 'rabbitmq_4.0.0' disabled.
3680- % % Link flow control in classic queues with credit API v1 is known to be broken:
3681- % % https://github.com/rabbitmq/rabbitmq-server/issues/2597
3682- ok = rabbit_ct_broker_helpers :enable_feature_flag (Config , 'rabbitmq_4.0.0' ),
36833577 async_notify (unsettled , <<" classic" >>, Config ).
36843578
36853579async_notify_unsettled_quorum_queue (Config ) ->
@@ -3905,25 +3799,18 @@ queue_and_client_different_nodes(QueueLeaderNode, ClientNode, QueueType, Config)
39053799 true ,
39063800 accepted ),
39073801
3908- case rpc (Config , rabbit_feature_flags , is_enabled , ['rabbitmq_4.0.0' ]) of
3909- true ->
3910- % % Send another message and drain.
3911- Tag = <<" tag" >>,
3912- Body = <<" body" >>,
3913- ok = amqp10_client :send_msg (Sender , amqp10_msg :new (Tag , Body , false )),
3914- ok = wait_for_accepted (Tag ),
3915- ok = amqp10_client :flow_link_credit (Receiver , 999 , never , true ),
3916- [Msg ] = receive_messages (Receiver , 1 ),
3917- ? assertEqual ([Body ], amqp10_msg :body (Msg )),
3918- receive {amqp10_event , {link , Receiver , credit_exhausted }} -> ok
3919- after 30000 -> ct :fail (" expected credit_exhausted" )
3920- end ,
3921- ok = amqp10_client :accept_msg (Receiver , Msg );
3922- false ->
3923- ct :pal (" Both quorum queues and classic queues in credit API v1
3924- have a known bug that they reply with send_drained
3925- before delivering the message." )
3802+ % % Send another message and drain.
3803+ Tag = <<" tag" >>,
3804+ Body = <<" body" >>,
3805+ ok = amqp10_client :send_msg (Sender , amqp10_msg :new (Tag , Body , false )),
3806+ ok = wait_for_accepted (Tag ),
3807+ ok = amqp10_client :flow_link_credit (Receiver , 999 , never , true ),
3808+ [Msg ] = receive_messages (Receiver , 1 ),
3809+ ? assertEqual ([Body ], amqp10_msg :body (Msg )),
3810+ receive {amqp10_event , {link , Receiver , credit_exhausted }} -> ok
3811+ after 30000 -> ct :fail (" expected credit_exhausted" )
39263812 end ,
3813+ ok = amqp10_client :accept_msg (Receiver , Msg ),
39273814
39283815 ExpectedReadyMsgs = 0 ,
39293816 ? assertEqual (# 'queue.delete_ok' {message_count = ExpectedReadyMsgs },
0 commit comments