From 0da0b8ea55ed9639565287e10b79bc61c48dcb38 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 24 Oct 2019 14:26:24 -0400 Subject: [PATCH] tests/ecore: add more grueling timer throughput test this verifies that: * newly-created timers are not triggered in the next loop iteration * newly-created timers can be triggered the second loop after created * multiple timers can be triggered in a single loop iteration * timers are effectively added to the pending timer list ref T8434 Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D10516 --- src/tests/ecore/ecore_test_timer.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/tests/ecore/ecore_test_timer.c b/src/tests/ecore/ecore_test_timer.c index 222c4151c5..f394aaef56 100644 --- a/src/tests/ecore/ecore_test_timer.c +++ b/src/tests/ecore/ecore_test_timer.c @@ -288,6 +288,30 @@ EFL_START_TEST(ecore_test_timer_in_order) } EFL_END_TEST +EFL_START_TEST(ecore_test_timer_iteration) +{ + count = 0; + ecore_timer_add(0, _timer_cb, (void *) 1); + ecore_main_loop_iterate(); + /* timers should not expire for one loop iteration */ + ck_assert_int_eq(count, 0); + ecore_main_loop_iterate(); + /* timers should expire after one loop iteration */ + ck_assert_int_eq(count, 1); + ecore_timer_add(0, _timer_cb, (void *) 2); + ecore_timer_add(0, _timer_cb, (void *) 3); + ecore_main_loop_iterate(); + /* timers should not expire for one loop iteration */ + ck_assert_int_eq(count, 1); + ecore_timer_add(0, _timer_cb, (void *) 4); + ecore_main_loop_iterate(); + /* all pending and instantiated timers should expire after one loop iteration */ + ck_assert_int_eq(count, 3); + ecore_main_loop_iterate(); + ck_assert_int_eq(count, 4); +} +EFL_END_TEST + void ecore_test_timer(TCase *tc) { tcase_add_test(tc, ecore_test_timers); @@ -295,4 +319,5 @@ void ecore_test_timer(TCase *tc) tcase_add_test(tc, ecore_test_timer_valid_callbackfunc); tcase_add_test(tc, ecore_test_ecore_main_loop_timer); tcase_add_test(tc, ecore_test_timer_in_order); + tcase_add_test(tc, ecore_test_timer_iteration); }