@@ -116,6 +116,8 @@ all_tests() ->
116116 basic_recover ,
117117 idempotent_recover ,
118118 vhost_with_quorum_queue_is_deleted ,
119+ delete_immediately ,
120+ delete_immediately_by_resource ,
119121 consume_redelivery_count ,
120122 subscribe_redelivery_count
121123 ].
@@ -1914,6 +1916,42 @@ basic_recover(Config) ->
19141916 wait_for_messages_ready (Servers , RaName , 1 ),
19151917 wait_for_messages_pending_ack (Servers , RaName , 0 ).
19161918
1919+ delete_immediately (Config ) ->
1920+ Server = rabbit_ct_broker_helpers :get_node_config (Config , 0 , nodename ),
1921+
1922+ Ch = rabbit_ct_client_helpers :open_channel (Config , Server ),
1923+ QQ = ? config (queue_name , Config ),
1924+ Args = [{<<" x-queue-type" >>, longstr , <<" quorum" >>}],
1925+ ? assertEqual ({'queue.declare_ok' , QQ , 0 , 0 },
1926+ declare (Ch , QQ , Args )),
1927+
1928+ Cmd = [" eval" , " {ok, Q} = rabbit_amqqueue:lookup(rabbit_misc:r(<<\" /\" >>, queue, <<\" " ++ binary_to_list (QQ ) ++ " \" >>)), Pid = rabbit_amqqueue:pid_of(Q), rabbit_amqqueue:delete_immediately([Pid])." ],
1929+ {ok , Msg } = rabbit_ct_broker_helpers :rabbitmqctl (Config , 0 , Cmd ),
1930+ ? assertEqual (match , re :run (Msg , " .*error.*" , [{capture , none }])),
1931+
1932+ ? assertEqual ({'queue.declare_ok' , QQ , 0 , 0 },
1933+ amqp_channel :call (Ch , # 'queue.declare' {queue = QQ ,
1934+ durable = true ,
1935+ passive = true ,
1936+ auto_delete = false ,
1937+ arguments = Args })).
1938+
1939+ delete_immediately_by_resource (Config ) ->
1940+ Server = rabbit_ct_broker_helpers :get_node_config (Config , 0 , nodename ),
1941+ Ch = rabbit_ct_client_helpers :open_channel (Config , Server ),
1942+ QQ = ? config (queue_name , Config ),
1943+ ? assertEqual ({'queue.declare_ok' , QQ , 0 , 0 },
1944+ declare (Ch , QQ , [{<<" x-queue-type" >>, longstr , <<" quorum" >>}])),
1945+ Cmd2 = [" eval" , " rabbit_amqqueue:delete_immediately_by_resource([rabbit_misc:r(<<\" /\" >>, queue, <<\" " ++ binary_to_list (QQ ) ++ " \" >>)])." ],
1946+ ? assertEqual ({ok , " ok\n " }, rabbit_ct_broker_helpers :rabbitmqctl (Config , 0 , Cmd2 )),
1947+
1948+ % % Check that the application and process are down
1949+ wait_until (fun () ->
1950+ [] == rpc :call (Server , supervisor , which_children , [ra_server_sup ])
1951+ end ),
1952+ ? assertMatch ({ra , _ , _ }, lists :keyfind (ra , 1 ,
1953+ rpc :call (Server , application , which_applications , []))).
1954+
19171955subscribe_redelivery_count (Config ) ->
19181956 [Server | _ ] = Servers = rabbit_ct_broker_helpers :get_node_configs (Config , nodename ),
19191957
@@ -1967,7 +2005,6 @@ consume_redelivery_count(Config) ->
19672005 QQ = ? config (queue_name , Config ),
19682006 ? assertEqual ({'queue.declare_ok' , QQ , 0 , 0 },
19692007 declare (Ch , QQ , [{<<" x-queue-type" >>, longstr , <<" quorum" >>}])),
1970-
19712008 RaName = ra_name (QQ ),
19722009 publish (Ch , QQ ),
19732010 wait_for_messages_ready (Servers , RaName , 1 ),
@@ -1984,7 +2021,9 @@ consume_redelivery_count(Config) ->
19842021 amqp_channel :cast (Ch , # 'basic.nack' {delivery_tag = DeliveryTag ,
19852022 multiple = false ,
19862023 requeue = true }),
1987-
2024+ % % wait for requeueing
2025+ timer :sleep (500 ),
2026+
19882027 {# 'basic.get_ok' {delivery_tag = DeliveryTag1 ,
19892028 redelivered = true },
19902029 # amqp_msg {props = # 'P_basic' {headers = H1 }}} =
@@ -2005,7 +2044,6 @@ consume_redelivery_count(Config) ->
20052044 multiple = false ,
20062045 requeue = true }).
20072046
2008-
20092047% %----------------------------------------------------------------------------
20102048
20112049declare (Ch , Q ) ->
0 commit comments