test(emqx): Fix flaky emqx_takeover_SUITE:t_takeover testcase

This testcase uses QoS1, so it must account for possible duplication
of the messages.
This commit is contained in:
ieQu1 2023-12-01 10:06:18 +01:00
parent e238602533
commit e1ec560639
1 changed files with 7 additions and 6 deletions

View File

@ -145,15 +145,16 @@ assert_messages_missed(Ls1, Ls2) ->
assert_messages_order([], []) -> assert_messages_order([], []) ->
ok; ok;
assert_messages_order([Msg | Ls1], [#{payload := No} | Ls2]) -> assert_messages_order([Msg | Expected], Received) ->
case emqx_message:payload(Msg) == No of %% Account for duplicate messages:
false -> case lists:splitwith(fun(#{payload := P}) -> emqx_message:payload(Msg) == P end, Received) of
{[], [#{payload := Mismatch} | _]} ->
ct:fail("Message order is not correct, expected: ~p, received: ~p", [ ct:fail("Message order is not correct, expected: ~p, received: ~p", [
emqx_message:payload(Msg), No emqx_message:payload(Msg), Mismatch
]), ]),
error; error;
true -> {_Matching, Rest} ->
assert_messages_order(Ls1, Ls2) assert_messages_order(Expected, Rest)
end. end.
messages(Offset, Cnt) -> messages(Offset, Cnt) ->