eet: force thread to always run during eet_cache_concurrency test.

This commit is contained in:
Cedric Bail 2013-07-02 13:45:30 +09:00
parent b6aaef651b
commit 2fdc05863d
3 changed files with 24 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2013-07-02 Cedric Bail
* Eet: force thread to always run during eet_cache_concurrency test.
2013-06-25 Tom Hacohen 2013-06-25 Tom Hacohen
* Evas textblock: Fixed issue when parsing formats with quotes. * Evas textblock: Fixed issue when parsing formats with quotes.

1
NEWS
View File

@ -195,6 +195,7 @@ Improvements:
* evas: use eo array of callbacks to reduce callbacks memory footprint of Evas_Object_Box and Evas_Object_Table. * evas: use eo array of callbacks to reduce callbacks memory footprint of Evas_Object_Box and Evas_Object_Table.
* evas: optimized path for when map use the same color for all corner. * evas: optimized path for when map use the same color for all corner.
* Edje entry: Move cursor to correct position when selection handlers are pressed. * Edje entry: Move cursor to correct position when selection handlers are pressed.
* eet: force thread to always run during eet_cache_concurrency test.
Fixes: Fixes:
* Fix a memory leak in ecore_con_dns when using ecore_con_server_connect * Fix a memory leak in ecore_con_dns when using ecore_con_server_connect

View File

@ -1843,10 +1843,14 @@ START_TEST(eet_cipher_decipher_simple)
END_TEST END_TEST
static Eina_Bool open_worker_stop; static Eina_Bool open_worker_stop;
static Eina_Condition open_worker_cond;
static Eina_Lock open_worker_mutex;
static void * static void *
open_close_worker(void *path, Eina_Thread tid EINA_UNUSED) open_close_worker(void *path, Eina_Thread tid EINA_UNUSED)
{ {
static Eina_Bool first = EINA_TRUE;
while (!open_worker_stop) while (!open_worker_stop)
{ {
Eet_File *ef = eet_open((char const *)path, EET_FILE_MODE_READ); Eet_File *ef = eet_open((char const *)path, EET_FILE_MODE_READ);
@ -1858,6 +1862,14 @@ open_close_worker(void *path, Eina_Thread tid EINA_UNUSED)
if (err_code != EET_ERROR_NONE) if (err_code != EET_ERROR_NONE)
return "eet_close() failed"; return "eet_close() failed";
} }
if (first)
{
eina_lock_take(&open_worker_mutex);
eina_condition_broadcast(&open_worker_cond);
eina_lock_release(&open_worker_mutex);
first = EINA_FALSE;
}
} }
return NULL; return NULL;
@ -1876,17 +1888,24 @@ START_TEST(eet_cache_concurrency)
eet_init(); eet_init();
eina_threads_init(); eina_threads_init();
eina_lock_new(&open_worker_mutex);
eina_condition_new(&open_worker_cond, &open_worker_mutex);
/* create a file to test with */ /* create a file to test with */
fail_if(!(file = tmpnam(file))); fail_if(!(file = tmpnam(file)));
ef = eet_open(file, EET_FILE_MODE_WRITE); ef = eet_open(file, EET_FILE_MODE_WRITE);
fail_if(!ef); fail_if(!ef);
fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0)); fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0));
eina_lock_take(&open_worker_mutex);
/* start a thread that repeatedly opens and closes a file */ /* start a thread that repeatedly opens and closes a file */
open_worker_stop = 0; open_worker_stop = 0;
r = eina_thread_create(&thread, EINA_THREAD_NORMAL, -1, open_close_worker, file); r = eina_thread_create(&thread, EINA_THREAD_NORMAL, -1, open_close_worker, file);
fail_unless(r); fail_unless(r);
eina_condition_wait(&open_worker_cond);
eina_lock_release(&open_worker_mutex);
/* clear the cache repeatedly in this thread */ /* clear the cache repeatedly in this thread */
for (n = 0; n < 20000; ++n) for (n = 0; n < 20000; ++n)
{ {