fix(test): wait for full stats_tops review/report topology
CI / test (push) Successful in 21m3s
CI / deploy-ift (push) Failing after 11m23s
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped

Partial waits on top-1 raced under CI load and flaked after stats_collector subscribe reorder.
This commit is contained in:
2026-07-19 00:31:55 +03:00
parent 31c2a1b7d7
commit a6dadcb9d5
+17 -22
View File
@@ -79,7 +79,13 @@ test_review_target_tops() ->
ok = mnesia:dirty_write(make_review(<<"r2">>, calendar, <<"cA">>, 5, Now)), ok = mnesia:dirty_write(make_review(<<"r2">>, calendar, <<"cA">>, 5, Now)),
ok = mnesia:dirty_write(make_review(<<"r3">>, event, <<"eA">>, 1, Now)), ok = mnesia:dirty_write(make_review(<<"r3">>, event, <<"eA">>, 1, Now)),
ok = mnesia:dirty_write(make_review(<<"r4">>, calendar, <<"cB">>, 2, Now)), ok = mnesia:dirty_write(make_review(<<"r4">>, calendar, <<"cB">>, 2, Now)),
wait_review_top({calendar, <<"cA">>}, 30), wait_until(fun() ->
All = core_review:get_top_targets_by_reviews(3),
Keys = [{T, I} || {T, I, _} <- All],
lists:member({calendar, <<"cA">>}, Keys)
andalso lists:member({event, <<"eA">>}, Keys)
andalso lists:member({calendar, <<"cB">>}, Keys)
end, 40),
All = core_review:get_top_targets_by_reviews(3), All = core_review:get_top_targets_by_reviews(3),
?assertMatch([{calendar, <<"cA">>, 2} | _], All), ?assertMatch([{calendar, <<"cA">>, 2} | _], All),
AllKeys = [{T, I} || {T, I, _} <- All], AllKeys = [{T, I} || {T, I, _} <- All],
@@ -97,7 +103,10 @@ test_report_target_tops() ->
ok = mnesia:dirty_write(make_report(<<"p1">>, calendar, <<"cX">>, Now)), ok = mnesia:dirty_write(make_report(<<"p1">>, calendar, <<"cX">>, Now)),
ok = mnesia:dirty_write(make_report(<<"p2">>, calendar, <<"cX">>, Now)), ok = mnesia:dirty_write(make_report(<<"p2">>, calendar, <<"cX">>, Now)),
ok = mnesia:dirty_write(make_report(<<"p3">>, event, <<"eX">>, Now)), ok = mnesia:dirty_write(make_report(<<"p3">>, event, <<"eX">>, Now)),
wait_report_top({calendar, <<"cX">>}, 30), wait_until(fun() ->
core_report:get_top_targets_by_reports(2)
=:= [{calendar, <<"cX">>, 2}, {event, <<"eX">>, 1}]
end, 40),
Top = core_report:get_top_targets_by_reports(2), Top = core_report:get_top_targets_by_reports(2),
?assertEqual([{calendar, <<"cX">>, 2}, {event, <<"eX">>, 1}], Top). ?assertEqual([{calendar, <<"cX">>, 2}, {event, <<"eX">>, 1}], Top).
@@ -166,26 +175,12 @@ wait_top_cal_rating(ExpectedId, N) ->
_ -> timer:sleep(25), wait_top_cal_rating(ExpectedId, N - 1) _ -> timer:sleep(25), wait_top_cal_rating(ExpectedId, N - 1)
end. end.
wait_review_top(Expected, 0) -> wait_until(Pred, 0) ->
case core_review:get_top_targets_by_reviews(1) of ?assertEqual(true, Pred());
[{T, I, _} | _] -> ?assertEqual(Expected, {T, I}); wait_until(Pred, N) ->
Other -> ?assertEqual(Expected, Other) case Pred() of
end; true -> ok;
wait_review_top(Expected = {T, I}, N) -> false -> timer:sleep(25), wait_until(Pred, N - 1)
case core_review:get_top_targets_by_reviews(1) of
[{T, I, _} | _] -> ok;
_ -> timer:sleep(25), wait_review_top(Expected, N - 1)
end.
wait_report_top(Expected, 0) ->
case core_report:get_top_targets_by_reports(1) of
[{T, I, _} | _] -> ?assertEqual(Expected, {T, I});
Other -> ?assertEqual(Expected, Other)
end;
wait_report_top(Expected = {T, I}, N) ->
case core_report:get_top_targets_by_reports(1) of
[{T, I, _} | _] -> ok;
_ -> timer:sleep(25), wait_report_top(Expected, N - 1)
end. end.
wait_cal_pos(ExpectedId, 0) -> wait_cal_pos(ExpectedId, 0) ->