forked from enlightenment/efl
tests: add more info on failsafe timeout
if a test is continually deadlocking then it's useful to know which test is failing to complete Differential Revision: https://phab.enlightenment.org/D6785
This commit is contained in:
parent
440b7ce03f
commit
eb32d164a7
|
@ -253,6 +253,8 @@ _efl_suite_run_end(SRunner *sr, const char *name)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_FORK
|
#ifdef HAVE_FORK
|
||||||
|
static EINA_UNUSED Eina_Hash *fork_map;
|
||||||
|
|
||||||
EINA_UNUSED static int
|
EINA_UNUSED static int
|
||||||
_efl_suite_wait_on_fork(int *num_forks, Eina_Bool *timeout)
|
_efl_suite_wait_on_fork(int *num_forks, Eina_Bool *timeout)
|
||||||
{
|
{
|
||||||
|
@ -265,7 +267,10 @@ _efl_suite_wait_on_fork(int *num_forks, Eina_Bool *timeout)
|
||||||
if (pid == timeout_pid)
|
if (pid == timeout_pid)
|
||||||
*timeout = EINA_TRUE;
|
*timeout = EINA_TRUE;
|
||||||
else
|
else
|
||||||
(*num_forks)--;
|
{
|
||||||
|
eina_hash_del_by_key(fork_map, &pid);
|
||||||
|
(*num_forks)--;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -316,6 +321,8 @@ _efl_suite_build_and_run(int argc, const char **argv, const char *suite_name, co
|
||||||
pid = fork();
|
pid = fork();
|
||||||
if (pid > 0)
|
if (pid > 0)
|
||||||
{
|
{
|
||||||
|
if (!fork_map) fork_map = eina_hash_int32_new(NULL);
|
||||||
|
eina_hash_add(fork_map, &pid, etc[i].test_case);
|
||||||
num_forks++;
|
num_forks++;
|
||||||
#ifdef ENABLE_TIMING_INFO
|
#ifdef ENABLE_TIMING_INFO
|
||||||
if (timing)
|
if (timing)
|
||||||
|
@ -359,9 +366,16 @@ _efl_suite_build_and_run(int argc, const char **argv, const char *suite_name, co
|
||||||
} while (num_forks && (!timeout_reached));
|
} while (num_forks && (!timeout_reached));
|
||||||
if (timeout_reached)
|
if (timeout_reached)
|
||||||
{
|
{
|
||||||
|
Eina_Iterator *it;
|
||||||
|
const char *testname;
|
||||||
|
it = eina_hash_iterator_data_new(fork_map);
|
||||||
timeout_pid = 0;
|
timeout_pid = 0;
|
||||||
printf("FAILSAFE TIMEOUT REACHED!\n");
|
printf("FAILSAFE TIMEOUT REACHED!\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
EINA_ITERATOR_FOREACH(it, testname)
|
||||||
|
printf("STILL RUNNING: %s\n", testname);
|
||||||
|
fflush(stdout);
|
||||||
|
eina_iterator_free(it);
|
||||||
failed_count++;
|
failed_count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -375,6 +389,8 @@ _efl_suite_build_and_run(int argc, const char **argv, const char *suite_name, co
|
||||||
kill(timeout_pid, SIGKILL);
|
kill(timeout_pid, SIGKILL);
|
||||||
timeout_pid = 0;
|
timeout_pid = 0;
|
||||||
}
|
}
|
||||||
|
eina_hash_free(fork_map);
|
||||||
|
fork_map = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_TIMING_INFO
|
#ifdef ENABLE_TIMING_INFO
|
||||||
|
|
Loading…
Reference in New Issue