From e1ec560639122214559588be3ead3a3dd52c6c3c Mon Sep 17 00:00:00 2001 From: ieQu1 <99872536+ieQu1@users.noreply.github.com> Date: Fri, 1 Dec 2023 10:06:18 +0100 Subject: [PATCH] test(emqx): Fix flaky emqx_takeover_SUITE:t_takeover testcase This testcase uses QoS1, so it must account for possible duplication of the messages. --- apps/emqx/test/emqx_takeover_SUITE.erl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/apps/emqx/test/emqx_takeover_SUITE.erl b/apps/emqx/test/emqx_takeover_SUITE.erl index 97616c947..03a48e174 100644 --- a/apps/emqx/test/emqx_takeover_SUITE.erl +++ b/apps/emqx/test/emqx_takeover_SUITE.erl @@ -145,15 +145,16 @@ assert_messages_missed(Ls1, Ls2) -> assert_messages_order([], []) -> ok; -assert_messages_order([Msg | Ls1], [#{payload := No} | Ls2]) -> - case emqx_message:payload(Msg) == No of - false -> +assert_messages_order([Msg | Expected], Received) -> + %% Account for duplicate messages: + 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", [ - emqx_message:payload(Msg), No + emqx_message:payload(Msg), Mismatch ]), error; - true -> - assert_messages_order(Ls1, Ls2) + {_Matching, Rest} -> + assert_messages_order(Expected, Rest) end. messages(Offset, Cnt) ->