eo: Test deadlock after finalize (shared objects)

This is a test case for 258cfbbe80
Unfortunately there are many other functions that we should
be testing, not just efl_finalized_get().
This commit is contained in:
Jean-Philippe Andre 2016-10-06 15:42:03 +09:00
parent 0f7dfdedfd
commit 7db67aaea8
1 changed files with 29 additions and 1 deletions

View File

@ -4,6 +4,11 @@
#include <stdio.h>
#ifndef _WIN32
# include <signal.h>
# include <unistd.h>
#endif
#include <Eo.h>
#include "eo_suite.h"
@ -1373,6 +1378,9 @@ thr1(void *data, Eina_Thread t EINA_UNUSED)
Eo *obj = efl_add(DOMAIN_CLASS, NULL);
printf("ADD2 DONE = %p\n", obj);
printf("VERIFY finalized_get()\n");
fail_if(!efl_finalized_get(d->objs));
printf("SET ON LOCAL\n");
domain_a_set(obj, 1234);
fail_if(domain_a_get(obj) != 1234);
@ -1410,6 +1418,15 @@ thr1(void *data, Eina_Thread t EINA_UNUSED)
return NULL;
}
#ifndef _WIN32
static void
_timeout(int val EINA_UNUSED)
{
printf("TIMED OUT!\n");
exit(-1);
}
#endif
START_TEST(eo_domain)
{
Eo *obj, *objs;
@ -1417,6 +1434,11 @@ START_TEST(eo_domain)
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
efl_object_init();
#ifndef _WIN32
signal(SIGALRM, _timeout);
alarm(10);
#endif
fail_if(efl_domain_get() != EFL_ID_DOMAIN_MAIN);
fail_if(efl_domain_switch(EFL_ID_DOMAIN_THREAD) != EINA_TRUE);
@ -1459,7 +1481,7 @@ START_TEST(eo_domain)
efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
printf("ADDS\n");
objs = efl_add(DOMAIN_CLASS, NULL);
objs = efl_add(DOMAIN_CLASS, NULL, domain_a_set(efl_added, 42));
printf("ADDS DONE = %p\n", objs);
efl_domain_current_pop();
@ -1484,11 +1506,17 @@ START_TEST(eo_domain)
eina_thread_join(t);
printf("JOIN DONE\n");
printf("DELETING OBJECTS\n");
efl_del(obj);
efl_del(objs);
efl_object_shutdown();
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
#ifndef _WIN32
alarm(0);
signal(SIGALRM, NULL);
#endif
}
END_TEST