aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPetri Savolainen <petri.savolainen@nokia.com>2023-04-26 16:21:14 +0300
committerPetri Savolainen <petri.savolainen@nokia.com>2023-06-08 14:26:28 +0300
commit2cfc390219b4cf2f5f503d94bb8c402dba107782 (patch)
treec0b2b4161533697874f15ea12d5057559dd86847 /test
parentb7128b352838f18a7913573df460438d5a31f8a0 (diff)
test: timer: use new timer cancel return values
Updated timer tests to use new return values of odp_timer_cancel(). Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com> Reviewed-by: Jere Leppänen <jere.leppanen@nokia.com> Reviewed-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Diffstat (limited to 'test')
-rw-r--r--test/performance/odp_timer_perf.c10
-rw-r--r--test/validation/api/timer/timer.c54
2 files changed, 38 insertions, 26 deletions
diff --git a/test/performance/odp_timer_perf.c b/test/performance/odp_timer_perf.c
index 3df9a875f..a7d98e68f 100644
--- a/test/performance/odp_timer_perf.c
+++ b/test/performance/odp_timer_perf.c
@@ -644,7 +644,7 @@ static void cancel_timers(test_global_t *global, uint32_t worker_idx)
if (timer == ODP_TIMER_INVALID)
continue;
- if (odp_timer_cancel(timer, &ev) == 0)
+ if (odp_timer_cancel(timer, &ev) == ODP_TIMER_SUCCESS)
odp_event_free(ev);
}
}
@@ -753,8 +753,14 @@ static int set_cancel_mode_worker(void *arg)
status = odp_timer_cancel(timer, &ev);
num_cancel++;
- if (status < 0)
+ if (odp_unlikely(status == ODP_TIMER_TOO_NEAR)) {
continue;
+ } else if (odp_unlikely(status != ODP_TIMER_SUCCESS)) {
+ ODPH_ERR("Timer (%u/%u) cancel failed (ret %i)\n", i, j,
+ status);
+ ret = -1;
+ break;
+ }
start_param.tick_type = ODP_TIMER_TICK_ABS;
start_param.tick = tick + j * period_tick;
diff --git a/test/validation/api/timer/timer.c b/test/validation/api/timer/timer.c
index bbced288e..631579744 100644
--- a/test/validation/api/timer/timer.c
+++ b/test/validation/api/timer/timer.c
@@ -772,9 +772,9 @@ static void timer_pool_max_res(void)
ev = ODP_EVENT_INVALID;
ret = odp_timer_cancel(timer, &ev);
- CU_ASSERT(ret == 0);
+ CU_ASSERT(ret == ODP_TIMER_SUCCESS);
- if (ret == 0) {
+ if (ret == ODP_TIMER_SUCCESS) {
CU_ASSERT(ev != ODP_EVENT_INVALID);
odp_event_free(ev);
}
@@ -945,9 +945,9 @@ static void timer_single_shot(odp_queue_type_t queue_type, odp_timer_tick_type_t
if (cancel) {
ret = odp_timer_cancel(timer, &ev);
- CU_ASSERT(ret == 0);
+ CU_ASSERT(ret == ODP_TIMER_SUCCESS);
- if (ret == 0)
+ if (ret == ODP_TIMER_SUCCESS)
CU_ASSERT(ev != ODP_EVENT_INVALID);
} else {
uint64_t diff_ns;
@@ -1655,7 +1655,7 @@ static void timer_test_cancel(void)
CU_FAIL_FATAL("Failed to set timer (relative time)");
ev = ODP_EVENT_INVALID;
- if (odp_timer_cancel(tim, &ev) != 0)
+ if (odp_timer_cancel(tim, &ev) != ODP_TIMER_SUCCESS)
CU_FAIL_FATAL("Failed to cancel timer (relative time)");
if (ev == ODP_EVENT_INVALID)
@@ -1838,7 +1838,7 @@ static void timer_test_tmo_limit(odp_queue_type_t queue_type,
t2 = odp_time_local();
diff_ns = odp_time_diff_ns(t2, t1);
- CU_ASSERT(ret == 0);
+ CU_ASSERT(ret == ODP_TIMER_SUCCESS);
CU_ASSERT(ev != ODP_EVENT_INVALID);
if (ev != ODP_EVENT_INVALID)
@@ -1985,7 +1985,6 @@ static int worker_entrypoint(void *arg ODP_UNUSED)
int thr = odp_thread_id();
uint32_t i, allocated;
unsigned seed = thr;
- int rc;
odp_queue_t queue;
struct test_timer *tt;
uint32_t nset;
@@ -1999,7 +1998,7 @@ static int worker_entrypoint(void *arg ODP_UNUSED)
odp_event_t ev;
struct timespec ts;
uint32_t nstale;
- odp_timer_retval_t timer_rc;
+ odp_timer_retval_t rc;
odp_timer_start_t start_param;
odp_timer_pool_t tp = global_mem->tp;
odp_pool_t tbp = global_mem->tbp;
@@ -2072,11 +2071,11 @@ static int worker_entrypoint(void *arg ODP_UNUSED)
start_param.tmo_ev = tt[i].ev;
tt[i].ev = ODP_EVENT_INVALID;
- timer_rc = odp_timer_start(tt[i].tim, &start_param);
- if (timer_rc == ODP_TIMER_TOO_NEAR) {
+ rc = odp_timer_start(tt[i].tim, &start_param);
+ if (rc == ODP_TIMER_TOO_NEAR) {
ODPH_ERR("Missed tick, setting timer\n");
- } else if (timer_rc != ODP_TIMER_SUCCESS) {
- ODPH_ERR("Failed to set timer: %d\n", timer_rc);
+ } else if (rc != ODP_TIMER_SUCCESS) {
+ ODPH_ERR("Failed to set timer: %d\n", rc);
CU_FAIL("Failed to set timer");
} else {
tt[i].tick = tck;
@@ -2110,16 +2109,18 @@ static int worker_entrypoint(void *arg ODP_UNUSED)
goto sleep;
/* Timer active, cancel it */
rc = odp_timer_cancel(tt[i].tim, &tt[i].ev);
- if (rc != 0) {
+
+ if (rc == ODP_TIMER_SUCCESS) {
+ tt[i].tick = TICK_INVALID;
+ ncancel++;
+ } else if (rc == ODP_TIMER_TOO_NEAR) {
/* Cancel failed, timer already expired */
ntoolate++;
- ODPH_DBG("Failed to cancel timer, probably already expired\n");
+ ODPH_DBG("Failed to cancel timer, already expired\n");
} else {
- tt[i].tick = TICK_INVALID;
- ncancel++;
+ CU_FAIL_FATAL("Cancel failed");
}
} else {
- odp_timer_retval_t rc;
uint64_t cur_tick;
uint64_t tck;
int reset_timer = 0;
@@ -2174,15 +2175,21 @@ sleep:
CU_FAIL_FATAL("nanosleep failed");
}
- /* Cancel and free all timers */
+ /* Try to cancel all active timers */
nstale = 0;
for (i = 0; i < allocated; i++) {
- (void)odp_timer_cancel(tt[i].tim, &tt[i].ev);
+ if (tt[i].ev != ODP_EVENT_INVALID)
+ continue;
+
+ rc = odp_timer_cancel(tt[i].tim, &tt[i].ev);
tt[i].tick = TICK_INVALID;
- if (tt[i].ev == ODP_EVENT_INVALID)
- /* Cancel too late, timer already expired and
- * timeout enqueued */
+
+ if (rc == ODP_TIMER_TOO_NEAR) {
+ /* Cancel too late, timer already expired and timeout enqueued */
nstale++;
+ } else if (rc != ODP_TIMER_SUCCESS) {
+ CU_FAIL("Timer cancel failed");
+ }
}
ODPH_DBG("Thread %u: %" PRIu32 " timers set\n", thr, nset);
@@ -2230,8 +2237,7 @@ sleep:
if (ev != ODP_EVENT_INVALID)
CU_FAIL("Unexpected event received");
- rc = odp_queue_destroy(queue);
- CU_ASSERT(rc == 0);
+ CU_ASSERT(odp_queue_destroy(queue) == 0);
for (i = 0; i < allocated; i++) {
if (tt[i].ev != ODP_EVENT_INVALID)
odp_event_free(tt[i].ev);