diff options
| author | Michael Klishin <mklishin@pivotal.io> | 2019-10-17 00:08:53 +0300 |
|---|---|---|
| committer | Michael Klishin <mklishin@pivotal.io> | 2019-10-17 00:08:53 +0300 |
| commit | a8f96b41721189cb7e17aa75d9a448ca28574219 (patch) | |
| tree | 4acb910d6328992ffdcb3a7303abb0333fa0e352 | |
| parent | 1a83adbd230f2a4f00cf1c6e8e3d73cdb4470e07 (diff) | |
| download | rabbitmq-server-git-a8f96b41721189cb7e17aa75d9a448ca28574219.tar.gz | |
Update tests for rabbit_fifo:state_enter/2
| -rw-r--r-- | src/rabbit_fifo.erl | 5 | ||||
| -rw-r--r-- | test/rabbit_fifo_SUITE.erl | 25 |
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, |
