diff options
| author | David Ansari <david.ansari@gmx.de> | 2022-09-09 15:39:14 +0000 |
|---|---|---|
| committer | David Ansari <david.ansari@gmx.de> | 2022-09-09 18:42:43 +0200 |
| commit | a04f96fca6f123e05a6ae0ae9006cdfcce34c19d (patch) | |
| tree | 5131558d3a79b6fad0599752b3f0e178e055d0ed | |
| parent | 6e39736f99b44e5dcc10abc2be9089c77b94576a (diff) | |
| download | rabbitmq-server-git-a04f96fca6f123e05a6ae0ae9006cdfcce34c19d.tar.gz | |
Fix flaky rabbit_fifio_int:credit tests
Prior to this commit test credit() was flaky.
It used to fail with:
```
rabbit_fifo_int_SUITE:credit failed on line 437
Reason: {badmatch,{[{{resource,"/",queue,<<"credit">>},credit,1,fals...}
```
In that case returned events were:
```
Events=[{ra_event,{credit,ct_rabbit@nuc},{applied,[{3,ok}]}},
{ra_event,{credit,ct_rabbit@nuc},
{machine,{delivery,<<"tag">>,[{1,{0,m2}}]}}}]
```
instead of:
```
Events=[{ra_event,
{credit,ct_rabbit@nuc},
{machine,{delivery,<<"tag">>,[{1,{0,m2}}]}}},
{ra_event,
{credit,ct_rabbit@nuc},
{applied,
[{3,ok},
{4,
{multi,
[{send_credit_reply,0},
{send_drained,{<<"tag">>,3}}]}}]}}]
```
The fix is we wait for both ra 'applied' events.
(cherry picked from commit 831a8e521139f7d09ed4af0f50ddc0a984e0dfb7)
(cherry picked from commit 86b1cdc5902048eb238975b4c641f229c7f2c9b2)
| -rw-r--r-- | deps/rabbit/test/rabbit_fifo_int_SUITE.erl | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/deps/rabbit/test/rabbit_fifo_int_SUITE.erl b/deps/rabbit/test/rabbit_fifo_int_SUITE.erl index a8c4f8871f..3a667eab73 100644 --- a/deps/rabbit/test/rabbit_fifo_int_SUITE.erl +++ b/deps/rabbit/test/rabbit_fifo_int_SUITE.erl @@ -62,8 +62,7 @@ init_per_testcase(TestCase, Config) -> meck:expect(rabbit_quorum_queue, handle_tick, fun (_, _, _) -> ok end), meck:expect(rabbit_quorum_queue, file_handle_leader_reservation, fun (_) -> ok end), meck:expect(rabbit_quorum_queue, file_handle_other_reservation, fun () -> ok end), - meck:expect(rabbit_quorum_queue, cancel_consumer_handler, - fun (_, _) -> ok end), + meck:expect(rabbit_quorum_queue, cancel_consumer_handler, fun (_, _) -> ok end), ra_server_sup_sup:remove_all(?RA_SYSTEM), ServerName2 = list_to_atom(atom_to_list(TestCase) ++ "2"), ServerName3 = list_to_atom(atom_to_list(TestCase) ++ "3"), @@ -434,7 +433,7 @@ credit(Config) -> %% credit and drain {F8, []} = rabbit_fifo_client:credit(<<"tag">>, 4, true, F7), {[{_, _, _, _, m2}], [{send_credit_reply, _}, {send_drained, _}], F9} = - process_ra_events(receive_ra_events(1, 1), F8), + process_ra_events(receive_ra_events(2, 1), F8), flush(), %% enqueue another message - at this point the consumer credit should be @@ -555,7 +554,8 @@ process_ra_event(State, Wait) -> receive_ra_events(Applied, Deliveries) -> receive_ra_events(Applied, Deliveries, []). -receive_ra_events(Applied, Deliveries, Acc) when Applied =< 0, Deliveries =< 0-> +receive_ra_events(Applied, Deliveries, Acc) + when Applied =< 0 andalso Deliveries =< 0 -> %% what if we get more events? Testcases should check what they're! lists:reverse(Acc); receive_ra_events(Applied, Deliveries, Acc) -> |
