From 5dbf45f5ea3c86e6904b9bf25264af271ab72600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Wed, 5 Apr 2017 16:11:31 -0700 Subject: [PATCH] systemcmds: dataman: Check for errors in tasks --- src/systemcmds/tests/test_dataman.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/systemcmds/tests/test_dataman.c b/src/systemcmds/tests/test_dataman.c index b560e55b7541..60caa66858be 100644 --- a/src/systemcmds/tests/test_dataman.c +++ b/src/systemcmds/tests/test_dataman.c @@ -59,6 +59,7 @@ #include "dataman/dataman.h" static px4_sem_t *sems; +static bool *task_returned_error; int test_dataman(int argc, char *argv[]); #define NUM_MISSIONS_TEST 50 @@ -152,6 +153,7 @@ task_main(int argc, char *argv[]) PX4_ERR("test_dataman FAILED: task %d, buffer %02x %02x %02x %02x %02x %02x", my_id, buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5]); px4_sem_post(sems + my_id); + task_returned_error[my_id] = true; return -1; } @@ -166,6 +168,7 @@ int test_dataman(int argc, char *argv[]) } sems = (px4_sem_t *)malloc(num_tasks * sizeof(px4_sem_t)); + task_returned_error = (bool *)calloc(num_tasks, sizeof(bool)); PX4_INFO("Running %d tasks", num_tasks); for (i = 0; i < num_tasks; i++) { @@ -192,6 +195,22 @@ int test_dataman(int argc, char *argv[]) } free(sems); + + bool got_error = false; + + for (i = 0; i < num_tasks; i++) { + if (task_returned_error[i]) { + got_error = true; + break; + } + } + + free(task_returned_error); + + if (got_error) { + return -1; + } + dm_restart(DM_INIT_REASON_IN_FLIGHT); for (i = 0; i < NUM_MISSIONS_TEST; i++) {