summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <mklishin@pivotal.io>2019-10-17 00:08:53 +0300
committerMichael Klishin <mklishin@pivotal.io>2019-10-17 00:08:53 +0300
commita8f96b41721189cb7e17aa75d9a448ca28574219 (patch)
tree4acb910d6328992ffdcb3a7303abb0333fa0e352
parent1a83adbd230f2a4f00cf1c6e8e3d73cdb4470e07 (diff)
downloadrabbitmq-server-git-a8f96b41721189cb7e17aa75d9a448ca28574219.tar.gz
Update tests for rabbit_fifo:state_enter/2
-rw-r--r--src/rabbit_fifo.erl5
-rw-r--r--test/rabbit_fifo_SUITE.erl25
2 files changed, 22 insertions, 8 deletions
diff --git a/src/rabbit_fifo.erl b/src/rabbit_fifo.erl
index 5e3de3ba96..536d544e87 100644
--- a/src/rabbit_fifo.erl
+++ b/src/rabbit_fifo.erl
@@ -574,8 +574,9 @@ state_enter(eol, #?MODULE{enqueuers = Enqs,
[{send_msg, P, eol, ra_event}
|| P <- maps:keys(maps:merge(Enqs, AllConsumers))] ++
[{mod_call, rabbit_quorum_queue, file_handle_release_reservation, []}];
-state_enter(_, #?MODULE{cfg = #cfg{resource = _Resource} }) ->
- [{mod_call, rabbit_quorum_queue, file_handle_other_reservation, []}];
+state_enter(State, #?MODULE{cfg = #cfg{resource = _Resource}}) when State =/= leader ->
+ FHReservation = {mod_call, rabbit_quorum_queue, file_handle_other_reservation, []},
+ [FHReservation];
state_enter(_, _) ->
%% catch all as not handling all states
[].
diff --git a/test/rabbit_fifo_SUITE.erl b/test/rabbit_fifo_SUITE.erl
index 0a0ac94e63..007aac69e2 100644
--- a/test/rabbit_fifo_SUITE.erl
+++ b/test/rabbit_fifo_SUITE.erl
@@ -523,11 +523,22 @@ duplicate_delivery_test(_) ->
?assertEqual(1, maps:size(Messages)),
ok.
-state_enter_test(_) ->
+state_enter_leader_test(_) ->
S0 = init(#{name => the_name,
queue_resource => rabbit_misc:r(<<"/">>, queue, <<"test">>),
become_leader_handler => {m, f, [a]}}),
- [{mod_call, m, f, [a, the_name]}] = rabbit_fifo:state_enter(leader, S0),
+ ?assertEqual([{mod_call, m, f, [a, the_name]}],
+ rabbit_fifo:state_enter(leader, S0)),
+ ok.
+
+state_enter_file_handle_reservation_test(_) ->
+ S0 = init(#{name => the_name,
+ queue_resource => rabbit_misc:r(<<"/">>, queue, <<"test">>)}),
+
+ ?assertEqual({mod_call,rabbit_quorum_queue,
+ file_handle_leader_reservation,
+ [{resource,<<"/">>,queue,<<"test">>}]}]},
+ rabbit_fifo:state_enter(other, S0)),
ok.
state_enter_monitors_and_notifications_test(_) ->
@@ -948,8 +959,9 @@ single_active_consumer_state_enter_leader_include_waiting_consumers_test(_) ->
[{<<"ctag1">>, Pid1}, {<<"ctag2">>, Pid2}, {<<"ctag3">>, Pid2}, {<<"ctag4">>, Pid3}]),
Effects = rabbit_fifo:state_enter(leader, State1),
- % 2 effects for each consumer process (channel process), 1 effect for the node
- ?assertEqual(2 * 3 + 1, length(Effects)).
+ %% 2 effects for each consumer process (channel process), 1 effect for the node,
+ %% 1 effect for file handle reservation
+ ?assertEqual(2 * 3 + 1 + 1, length(Effects)).
single_active_consumer_state_enter_eol_include_waiting_consumers_test(_) ->
Resource = rabbit_misc:r("/", queue, atom_to_binary(?FUNCTION_NAME, utf8)),
@@ -978,8 +990,9 @@ single_active_consumer_state_enter_eol_include_waiting_consumers_test(_) ->
{<<"ctag3">>, Pid2}, {<<"ctag4">>, Pid3}]),
Effects = rabbit_fifo:state_enter(eol, State1),
- % 1 effect for each consumer process (channel process)
- ?assertEqual(3, length(Effects)).
+ %% 1 effect for each consumer process (channel process),
+ %% 1 effect for file handle reservation
+ ?assertEqual(4, length(Effects)).
query_consumers_test(_) ->
State0 = init(#{name => ?FUNCTION_NAME,