@@ -51,6 +51,7 @@ all_tests() ->
5151 get_durable ,
5252 get_many_durable ,
5353 update_durable ,
54+ mark_local_durable_queues_stopped ,
5455 foreach_durable ,
5556 internal_delete
5657 ].
@@ -463,6 +464,24 @@ update_durable1(_Config) ->
463464 ? assertMatch (my_policy , amqqueue :get_policy (Q0 )),
464465 passed .
465466
467+ mark_local_durable_queues_stopped (Config ) ->
468+ passed = rabbit_ct_broker_helpers :rpc (Config , 0 ,
469+ ? MODULE , mark_local_durable_queues_stopped1 , [Config ]).
470+
471+ mark_local_durable_queues_stopped1 (_Config ) ->
472+ DurableQName = rabbit_misc :r (? VHOST , queue , <<" test-queue1" >>),
473+ TransientQName = rabbit_misc :r (? VHOST , queue , <<" test-queue2" >>),
474+ DurableQ = new_queue (DurableQName , rabbit_classic_queue ),
475+ TransientQ = new_queue (TransientQName , rabbit_classic_queue ),
476+ % % Set Q1's pid to a dead process
477+ RecoverableQ = amqqueue :set_pid (DurableQ , spawn (fun () -> ok end )),
478+ ? assertEqual (ok , rabbit_db_queue :set (RecoverableQ )),
479+ ? assertEqual (ok , rabbit_db_queue :set_dirty (TransientQ )),
480+ ? assertEqual (ok , rabbit_amqqueue :mark_local_durable_queues_stopped (? VHOST )),
481+ {ok , StoppedQ } = rabbit_db_queue :get_durable (DurableQName ),
482+ ? assertEqual (stopped , amqqueue :get_state (StoppedQ )),
483+ passed .
484+
466485foreach_durable (Config ) ->
467486 passed = rabbit_ct_broker_helpers :rpc (Config , 0 , ? MODULE , foreach_durable1 , [Config ]).
468487
0 commit comments