summaryrefslogtreecommitdiff
path: root/deps/rabbit/test
diff options
context:
space:
mode:
authorkjnilsson <knilsson@pivotal.io>2021-01-20 14:19:33 +0000
committerkjnilsson <knilsson@pivotal.io>2021-01-20 14:19:33 +0000
commitf2418cfe4ca634753c5db518c1bd034ce6cfe771 (patch)
treee93041052a92e318162f072b37b901dfeae8f4ed /deps/rabbit/test
parent9835a43b992a11ba0f3564dd24890259f09c94df (diff)
downloadrabbitmq-server-git-f2418cfe4ca634753c5db518c1bd034ce6cfe771.tar.gz
Fix crash bug in QQ state conversion
When there are consumers in the service queue.
Diffstat (limited to 'deps/rabbit/test')
-rw-r--r--deps/rabbit/test/rabbit_fifo_SUITE.erl26
1 files changed, 26 insertions, 0 deletions
diff --git a/deps/rabbit/test/rabbit_fifo_SUITE.erl b/deps/rabbit/test/rabbit_fifo_SUITE.erl
index a9d541238d..1b8761f90e 100644
--- a/deps/rabbit/test/rabbit_fifo_SUITE.erl
+++ b/deps/rabbit/test/rabbit_fifo_SUITE.erl
@@ -1518,6 +1518,32 @@ machine_version_test(_) ->
?assert(priority_queue:is_queue(S)),
ok.
+machine_version_waiting_consumer_test(_) ->
+ V0 = rabbit_fifo_v0,
+ S0 = V0:init(#{name => ?FUNCTION_NAME,
+ queue_resource => rabbit_misc:r(<<"/">>, queue, <<"test">>)}),
+ Idx = 1,
+ {#rabbit_fifo{}, ok, []} = apply(meta(Idx), {machine_version, 0, 1}, S0),
+
+ Cid = {atom_to_binary(?FUNCTION_NAME, utf8), self()},
+ Entries = [
+ {1, rabbit_fifo_v0:make_enqueue(self(), 1, banana)},
+ {2, rabbit_fifo_v0:make_enqueue(self(), 2, apple)},
+ {3, rabbit_fifo_v0:make_checkout(Cid, {auto, 5, unsettled}, #{})}
+ ],
+ {S1, _Effects} = rabbit_fifo_v0_SUITE:run_log(S0, Entries),
+ Self = self(),
+ {#rabbit_fifo{enqueuers = #{Self := #enqueuer{}},
+ consumers = #{Cid := #consumer{priority = 0}},
+ service_queue = S,
+ messages = Msgs}, ok, []} = apply(meta(Idx),
+ {machine_version, 0, 1}, S1),
+ %% validate message conversion to lqueue
+ ?assertEqual(0, lqueue:len(Msgs)),
+ ?assert(priority_queue:is_queue(S)),
+ ?assertEqual(1, priority_queue:len(S)),
+ ok.
+
queue_ttl_test(_) ->
QName = rabbit_misc:r(<<"/">>, queue, <<"test">>),
Conf = #{name => ?FUNCTION_NAME,