Skip to content

Commit d959d1e

Browse files
author
Francesca Gangemi
committed
Fix tests. Avoid intermittent failures due to different events order.
1 parent 63931fe commit d959d1e

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

test/ecron_tests.erl

+11-7
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ insert_fun_not_ok() ->
550550
retry = {5,1}}],
551551
mnesia:dirty_read(?JOB_TABLE, JobKey)),
552552
timer:sleep(2100),
553-
?assertEqual([{UniqueKey, Schedule}], ets:lookup(ecron_test, UniqueKey)),
553+
?assertEqual([{UniqueKey, Schedule, Schedule}], ets:lookup(ecron_test, UniqueKey)),
554554
DueSec = Schedule+1,
555555
[Job] = ecron:list(),
556556
?assertMatch(#job{mfa = {{ecron_tests,test_not_ok_function,[UniqueKey]},
@@ -570,10 +570,13 @@ insert_fun_not_ok() ->
570570
DateTime, DateTime}], Events),
571571
[RetryEvent|_] = Events,
572572
?assert(element(3, RetryEvent) /= undefined),
573-
ets:delete_all_objects(ecron_test),
574573
timer:sleep(1100),
575574
[Job1] = ecron:list(),
576-
?assertEqual([{UniqueKey, Schedule}], ets:lookup(ecron_test, UniqueKey)),
575+
TableEntries = ets:lookup(ecron_test, UniqueKey),
576+
%% It checks that at least a retry has been executed
577+
?assert(length(TableEntries) >=2),
578+
?assert(lists:member({UniqueKey, Schedule, Schedule}, TableEntries)),
579+
?assert(lists:member({UniqueKey, Schedule, DueSec}, TableEntries)),
577580
?assertEqual(ok, ecron:delete(Job1#job.key)),
578581
?assertEqual([], ecron:list()),
579582
ets:delete_all_objects(ecron_test),
@@ -698,7 +701,7 @@ load_from_file_and_table() ->
698701
?assertEqual(ok, ecron:insert({{'*', '*', '*'}, Time},
699702
{ecron_tests, test_function, [UniqueKey1]})),
700703
timer:sleep(1300),
701-
?assertEqual([{UniqueKey, Schedule}], ets:lookup(ecron_test, UniqueKey)),
704+
?assertEqual([{UniqueKey, Schedule, Schedule}], ets:lookup(ecron_test, UniqueKey)),
702705
ets:delete_all_objects(ecron_test),
703706
application:stop(ecron),
704707

@@ -750,7 +753,7 @@ load_from_file_and_table() ->
750753
mnesia:dirty_read(?JOB_TABLE, JobKey3)),
751754
?assertEqual('$end_of_table', mnesia:dirty_next(?JOB_TABLE, JobKey3)),
752755
timer:sleep(6300),
753-
?assertEqual([{UniqueKey, Schedule}], ets:lookup(ecron_test, UniqueKey)),
756+
?assertMatch([{UniqueKey, Schedule, _}], ets:lookup(ecron_test, UniqueKey)),
754757
?assertEqual([{UniqueKey1, test}], ets:lookup(ecron_test, UniqueKey1)),
755758
?assertEqual([{UniqueKey2, test}], ets:lookup(ecron_test, UniqueKey2)),
756759
?assertEqual([{UniqueKey3, test}], ets:lookup(ecron_test, UniqueKey3)),
@@ -862,7 +865,7 @@ execute_all() ->
862865
?assertEqual(ok, ecron:execute_all()),
863866
T = calendar:datetime_to_gregorian_seconds(ecron_time:localtime()),
864867
timer:sleep(300),
865-
?assertEqual([{UniqueKey, T}], ets:lookup(ecron_test, UniqueKey)),
868+
?assertEqual([{UniqueKey, T, T}], ets:lookup(ecron_test, UniqueKey)),
866869
?assertEqual([{UniqueKey1, T}], ets:lookup(ecron_test, UniqueKey1)),
867870
?assertEqual([{UniqueKey2, T}], ets:lookup(ecron_test, UniqueKey2)),
868871
?assertEqual([{UniqueKey3, T}], ets:lookup(ecron_test, UniqueKey3)),
@@ -902,7 +905,8 @@ test_function1(Key) ->
902905
test_not_ok_function(Key) ->
903906
Time = calendar:datetime_to_gregorian_seconds(ecron_time:localtime()),
904907
F = fun() ->
905-
ets:insert(ecron_test, {Key, Time}),
908+
ExecTime = calendar:datetime_to_gregorian_seconds(ecron_time:localtime()),
909+
ets:insert(ecron_test, {Key, Time, ExecTime}),
906910
{error, retry}
907911
end,
908912
{apply, F}.

0 commit comments

Comments
 (0)