fix(test): wait for full stats_tops review/report topology
Partial waits on top-1 raced under CI load and flaked after stats_collector subscribe reorder.
This commit is contained in:
@@ -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(<<"r3">>, event, <<"eA">>, 1, 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),
|
||||
?assertMatch([{calendar, <<"cA">>, 2} | _], 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(<<"p2">>, calendar, <<"cX">>, 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),
|
||||
?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)
|
||||
end.
|
||||
|
||||
wait_review_top(Expected, 0) ->
|
||||
case core_review:get_top_targets_by_reviews(1) of
|
||||
[{T, I, _} | _] -> ?assertEqual(Expected, {T, I});
|
||||
Other -> ?assertEqual(Expected, Other)
|
||||
end;
|
||||
wait_review_top(Expected = {T, I}, N) ->
|
||||
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)
|
||||
wait_until(Pred, 0) ->
|
||||
?assertEqual(true, Pred());
|
||||
wait_until(Pred, N) ->
|
||||
case Pred() of
|
||||
true -> ok;
|
||||
false -> timer:sleep(25), wait_until(Pred, N - 1)
|
||||
end.
|
||||
|
||||
wait_cal_pos(ExpectedId, 0) ->
|
||||
|
||||
Reference in New Issue
Block a user