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(<<"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) ->
|
||||||
|
|||||||
Reference in New Issue
Block a user