cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8e8c50e7a187ecef73c20e0e368351e7751100f9

commit 8e8c50e7a187ecef73c20e0e368351e7751100f9
Author: Cedric BAIL <ced...@osg.samsung.com>
Date:   Fri Aug 26 16:52:11 2016 -0700

    eio: fix manager tests.
---
 src/tests/eio/eio_test_manager.c       | 220 +++++++++++++++------------------
 src/tests/eio/eio_test_manager_xattr.c |  96 +++++++-------
 2 files changed, 148 insertions(+), 168 deletions(-)

diff --git a/src/tests/eio/eio_test_manager.c b/src/tests/eio/eio_test_manager.c
index cdf0644..c20530e 100644
--- a/src/tests/eio/eio_test_manager.c
+++ b/src/tests/eio/eio_test_manager.c
@@ -13,87 +13,64 @@
 # define O_BINARY 0
 #endif
 
-static int test_count = 0;
+static uint64_t test_count = 0;
+static Eina_Bool direct = EINA_FALSE;
 
-static int DONE_CALLED = 0xdeadbeef;
+#define DONE_CALLED 0xdeadbeef
 
 static void
-_filter_direct_cb(void *data EINA_UNUSED, const Efl_Event *event)
+_progress_cb(void *data, const Efl_Event *ev)
 {
-   Eio_Filter_Direct_Data *event_info = event->info;
-   char *last_slash = strrchr(event_info->info->path, '/');
-
-   //Check if it is a hidden file
-   if (last_slash != NULL && strlen(last_slash) > 1 && last_slash[1] == '.')
-     event_info->filter = EINA_FALSE;
-   else
-     event_info->filter = EINA_TRUE;
-}
-
-static void
-_main_direct_cb(void *data, const Eina_File_Direct_Info *info)
-{
-   int *number_of_listed_files = (int *)data;
+   Efl_Future_Event_Progress *p = ev->info;
+   Eina_Array *batch = p->progress;
+   uint64_t *number_of_listed_files = data;
 
-   fprintf(stderr, "Processing file:%s\n", info->path);
-   (*number_of_listed_files)++;
-}
-
-static void
-_filter_cb(void *data EINA_UNUSED, const Efl_Event *event)
-{
-   Eio_Filter_Name_Data *event_info = event->info;
-   char *last_slash = strrchr(event_info->file, '/');
-
-   //Check if it is a hidden file
-   if (last_slash != NULL && strlen(last_slash) > 1 && last_slash[1] == '.')
-     event_info->filter = EINA_FALSE;
-   else
-     event_info->filter = EINA_TRUE;
+   (*number_of_listed_files) += eina_array_count(batch);
 }
 
 static void
-_main_cb(void *data, const char *file)
+_done_cb(void *data, const Efl_Event *ev)
 {
-   int *number_of_listed_files = (int *)data;
+   Efl_Future_Event_Success *success = ev->info;
+   uint64_t *files_count = success->value;
+   uint64_t *number_of_listed_files = data;
 
-   fprintf(stderr, "Processing file:%s\n", file);
-   (*number_of_listed_files)++;
-}
-
-static void
-_done_cb(void *data, void* value EINA_UNUSED)
-{
-   int *number_of_listed_files = (int *)data;
    fail_if((*number_of_listed_files) != test_count);
+   fail_if(*files_count != test_count);
    *number_of_listed_files = DONE_CALLED;
    ecore_main_loop_quit();
 }
 
 static void
-_error_cb(void *data EINA_UNUSED, Eina_Error error)
+_error_cb(void *data EINA_UNUSED, const Efl_Event *ev)
 {
-   const char *msg = eina_error_msg_get(error);
+   Efl_Future_Event_Failure *failure = ev->info;
+   const char *msg = eina_error_msg_get(failure->error);
+
    EINA_LOG_ERR("error: %s", msg);
    ecore_main_loop_quit();
 }
 
 static void
-_open_done_cb(void *data, void *file_value)
+_open_done_cb(void *data, const Efl_Event *ev)
 {
+   Efl_Future_Event_Success *success = ev->info;
    Eina_Bool *opened = (Eina_Bool *)data;
-   *opened = EINA_TRUE;
-   Eina_File* file = eina_file_dup(file_value);
+   Eina_File* file = eina_file_dup(success->value);
    eina_file_close(file);
+
+   *opened = EINA_TRUE;
    ecore_main_loop_quit();
 }
 
 static void
-_stat_done_cb(void *data, void *value)
+_stat_done_cb(void *data, const Efl_Event *ev)
 {
-   Eina_Stat const* stat = value;
+   Efl_Future_Event_Success *success = ev->info;
+   Eina_Stat const* stat = success->value;
    Eina_Bool *is_dir = data;
    unsigned int rights;
+
    fail_if(eio_file_is_dir(stat) != *is_dir);
    fail_if(eio_file_is_lnk(stat));
    rights = stat->mode & (S_IRWXU | S_IRWXG | S_IRWXO);
@@ -101,50 +78,46 @@ _stat_done_cb(void *data, void *value)
    ecore_main_loop_quit();
 }
 
-typedef Eina_Promise* (*Efl_Io_Manager_Test_Stat_Ls_Func)(Eo *job, const char 
*path);
-
 static void
-_do_ls_test(Efl_Io_Manager_Test_Stat_Ls_Func ls_func,
-      const Efl_Event_Description *event,
-      Efl_Event_Cb filter_cb,
-      Eina_Promise_Progress_Cb progress_cb,
-      int expected_test_count,
-      const char* test_dirname)
+_test_ls(Efl_Future *(*func)(Eo *obj, const char *path, Eina_Bool recursive),
+         uint64_t expected_test_count,
+         const char* test_dirname)
 {
-   int main_files = 0;
+   Efl_Io_Manager *job = efl_add(EFL_IO_MANAGER_CLASS, ecore_main_loop_get());
+   Efl_Future *f = NULL;
+   uint64_t main_files = 0;
 
-   Efl_Io_Manager *job = efl_add(EFL_IO_MANAGER_CLASS, NULL);
-   Eina_Promise *promise = NULL;
+   fail_if(!job);
 
-   efl_event_callback_add(job, event, filter_cb, NULL);
-   promise = ls_func(job, test_dirname);
+   f = func(job, test_dirname, EINA_FALSE);
+   fail_if(!f);
    test_count = expected_test_count;
-   eina_promise_progress_cb_add(promise, progress_cb, &main_files, NULL);
-   eina_promise_then(promise, &_done_cb, &_error_cb, &main_files);
+   efl_future_then(f, &_done_cb, &_error_cb, &_progress_cb, &main_files);
 
    ecore_main_loop_begin();
 
    fail_if(main_files != DONE_CALLED);
+   main_files = 0;
 
-   efl_unref(job);
-}
+   f = func(job, test_dirname, EINA_TRUE);
+   test_count = expected_test_count + 4;
+   efl_future_then(f, &_done_cb, &_error_cb, &_progress_cb, &main_files);
 
-static void
-_do_direct_ls_test(Efl_Io_Manager_Test_Stat_Ls_Func ls_func,
-      int expected_test_count,
-      const char *test_dirname)
-{
-   _do_ls_test(ls_func,
-               EFL_IO_MANAGER_EVENT_FILTER_DIRECT,
-               (Efl_Event_Cb)&_filter_direct_cb,
-               (Eina_Promise_Progress_Cb)&_main_direct_cb,
-               expected_test_count,
-               test_dirname);
+   ecore_main_loop_begin();
+
+   fail_if(main_files != DONE_CALLED);
+
+   efl_del(job);
 }
 
-START_TEST(efl_io_manager_test_file_direct_stat)
+START_TEST(efl_io_manager_test_stat)
 {
-   Eina_Bool is_dir;
+   Eina_Tmpstr *test_dirname;
+   Eina_Tmpstr *nested_dirname;
+   Eina_Tmpstr *nested_filename;
+   Efl_Io_Manager *job;
+   Efl_Future *f;
+   Eina_Bool is_dir = EINA_TRUE;
    int ret;
 
    ret = ecore_init();
@@ -156,26 +129,25 @@ START_TEST(efl_io_manager_test_file_direct_stat)
    ret = ecore_file_init();
    fail_if(ret < 1);
 
-   Eina_Tmpstr *test_dirname = get_eio_test_file_tmp_dir();
-   Eina_Tmpstr *nested_dirname = create_test_dirs(test_dirname);
-   Eina_Tmpstr *nested_filename = get_full_path(test_dirname, files[3]);
+   test_dirname = get_eio_test_file_tmp_dir();
+   nested_dirname = create_test_dirs(test_dirname);
+   nested_filename = get_full_path(test_dirname, files[3]);
 
-   Efl_Io_Manager *job = efl_add(EFL_IO_MANAGER_CLASS, NULL);
-   Eina_Promise *promise = NULL;
-   // Start testing
-   is_dir = EINA_TRUE;
+   job = efl_add(EFL_IO_MANAGER_CLASS, ecore_main_loop_get());
+   fail_if(!job);
 
-   promise = efl_io_manager_file_direct_stat(job, nested_dirname);
-   eina_promise_then(promise, &_stat_done_cb, &_error_cb, &is_dir);
+   // Start testing
+   f = efl_io_manager_stat(job, nested_dirname);
+   efl_future_then(f, &_stat_done_cb, &_error_cb, NULL, &is_dir);
    ecore_main_loop_begin();
 
    is_dir = EINA_FALSE;
-   promise = efl_io_manager_file_direct_stat(job, nested_filename);
-   eina_promise_then(promise, &_stat_done_cb, &_error_cb, &is_dir);
+   f = efl_io_manager_stat(job, nested_filename);
+   efl_future_then(f, &_stat_done_cb, &_error_cb, NULL, &is_dir);
    ecore_main_loop_begin();
-   efl_unref(job);
 
    // Cleanup
+   efl_del(job);
    fail_if(!ecore_file_recursive_rm(test_dirname));
 
    eina_tmpstr_del(nested_dirname);
@@ -188,8 +160,14 @@ START_TEST(efl_io_manager_test_file_direct_stat)
 }
 END_TEST
 
-START_TEST(efl_io_manager_test_ls_funcs)
+START_TEST(efl_io_manager_test_ls)
 {
+   Eina_Tmpstr *test_dirname;
+   Eina_Tmpstr *nested_dirname;
+   Eina_Tmpstr *nested_filename;
+   Efl_Io_Manager *job;
+   Efl_Future *f;
+   uint64_t main_files = 0;
    int ret;
 
    ret = ecore_init();
@@ -201,28 +179,30 @@ START_TEST(efl_io_manager_test_ls_funcs)
    ret = ecore_file_init();
    fail_if(ret < 1);
 
-   Eina_Tmpstr *test_dirname = get_eio_test_file_tmp_dir();
-   Eina_Tmpstr *nested_dirname = create_test_dirs(test_dirname);
-   Eina_Tmpstr *nested_filename = get_full_path(test_dirname, files[3]);
+   test_dirname = get_eio_test_file_tmp_dir();
+   nested_dirname = create_test_dirs(test_dirname);
+   nested_filename = get_full_path(test_dirname, files[3]);
 
    // Start testing
+   job = efl_add(EFL_IO_MANAGER_CLASS, ecore_main_loop_get());
+   fail_if(!job);
 
-   _do_ls_test(&efl_io_manager_file_ls,
-         EFL_IO_MANAGER_EVENT_FILTER_NAME,
-         (Efl_Event_Cb)&_filter_cb,
-         (Eina_Promise_Progress_Cb)&_main_cb,
-         5,
-         test_dirname);
-
-   _do_direct_ls_test(&efl_io_manager_file_stat_ls, 5, test_dirname);
+   f = efl_io_manager_ls(job, test_dirname);
+   test_count = 6;
+   efl_future_then(f, &_done_cb, &_error_cb, &_progress_cb, &main_files);
 
-   _do_direct_ls_test(&efl_io_manager_file_direct_ls, 5, test_dirname);
+   ecore_main_loop_begin();
 
-   _do_direct_ls_test(&efl_io_manager_dir_stat_ls, 8, test_dirname);
+   fail_if(main_files != DONE_CALLED);
 
-   _do_direct_ls_test(&efl_io_manager_dir_direct_ls, 8, test_dirname);
+   // No recursion for efl_io_manager_ls, should I fix that ?
+   /* _test_ls(&efl_io_manager_ls, 5, test_dirname); */
+   direct = EINA_TRUE;
+   _test_ls(&efl_io_manager_stat_ls, 6, test_dirname);
+   _test_ls(&efl_io_manager_direct_ls, 6, test_dirname);
 
    // Cleanup
+   efl_del(job);
    fail_if(!ecore_file_recursive_rm(test_dirname));
 
    eina_tmpstr_del(nested_dirname);
@@ -237,7 +217,12 @@ END_TEST
 
 START_TEST(efl_io_manager_test_open)
 {
-   Eina_Bool opened_file;
+   Eina_Tmpstr *test_dirname;
+   Eina_Tmpstr *nested_dirname;
+   Eina_Tmpstr *nested_filename;
+   Efl_Io_Manager *job;
+   Efl_Future *f;
+   Eina_Bool opened_file = EINA_FALSE;
    int ret;
 
    ret = ecore_init();
@@ -249,21 +234,20 @@ START_TEST(efl_io_manager_test_open)
    ret = eio_init();
    fail_if(ret < 1);
 
-   Eina_Tmpstr *test_dirname = get_eio_test_file_tmp_dir();
-   Eina_Tmpstr *nested_dirname = create_test_dirs(test_dirname);
-   Eina_Tmpstr *nested_filename = get_full_path(test_dirname, files[3]);
+   test_dirname = get_eio_test_file_tmp_dir();
+   nested_dirname = create_test_dirs(test_dirname);
+   nested_filename = get_full_path(test_dirname, files[3]);
 
-   opened_file = EINA_FALSE;
-   Efl_Io_Manager *job = efl_add(EFL_IO_MANAGER_CLASS, NULL);
-   Eina_Promise *promise = NULL;
+   job = efl_add(EFL_IO_MANAGER_CLASS, ecore_main_loop_get());
 
-   promise = efl_io_manager_file_open(job, nested_filename, EINA_FALSE);
-   eina_promise_then(promise, &_open_done_cb, &_error_cb, &opened_file);
+   f = efl_io_manager_open(job, nested_filename, EINA_FALSE);
+   efl_future_then(f, &_open_done_cb, &_error_cb, NULL, &opened_file);
    ecore_main_loop_begin();
-   efl_unref(job);
+
    fail_if(!opened_file);
 
    // Cleanup
+   efl_del(job);
    fail_if(!ecore_file_recursive_rm(test_dirname));
 
    eina_tmpstr_del(nested_dirname);
@@ -300,8 +284,8 @@ END_TEST
 void
 eio_test_job(TCase *tc)
 {
-    tcase_add_test(tc, efl_io_manager_test_ls_funcs);
-    tcase_add_test(tc, efl_io_manager_test_file_direct_stat);
+    tcase_add_test(tc, efl_io_manager_test_ls);
+    tcase_add_test(tc, efl_io_manager_test_stat);
     tcase_add_test(tc, efl_io_manager_test_open);
     tcase_add_test(tc, efl_io_instantiated);
 }
diff --git a/src/tests/eio/eio_test_manager_xattr.c 
b/src/tests/eio/eio_test_manager_xattr.c
index acee0b4..180a080 100644
--- a/src/tests/eio/eio_test_manager_xattr.c
+++ b/src/tests/eio/eio_test_manager_xattr.c
@@ -36,17 +36,10 @@ static const char *attr_data[] =
 int total_attributes = sizeof(attribute)/sizeof(attribute[0]);
 
 static void
-_filter_cb(void *data EINA_UNUSED, const Efl_Event *event)
+_main_cb(void *data, const Efl_Event *ev)
 {
-   Eio_Filter_Name_Data *event_info = event->info;
-
-   event_info->filter = EINA_TRUE;
-}
-
-static void
-_main_cb(void *data, void *v)
-{
-   const char* attr = v;
+   Efl_Future_Event_Success *success = ev->info;
+   const char* attr = success->value;
    int *num_of_attr = (int *)data;
    unsigned int i;
 
@@ -56,11 +49,10 @@ _main_cb(void *data, void *v)
           (*num_of_attr)++;
           break;
        }
-
 }
 
 static void
-_done_cb(void *data, void *value EINA_UNUSED)
+_done_cb(void *data, const Efl_Event *ev EINA_UNUSED)
 
 {
    int *num_of_attr = (int *)data;
@@ -71,16 +63,19 @@ _done_cb(void *data, void *value EINA_UNUSED)
 }
 
 static void
-_done_get_cb(void *data EINA_UNUSED, void* v)
+_done_get_cb(void *data EINA_UNUSED, const Efl_Event *ev)
 {
-   Eina_Iterator** it = (Eina_Iterator**)v;
+   Efl_Future_Event_Success *success = ev->info;
+   Eina_Accessor *ac = success->value;
    int i = 0;
-   Eio_Xattr_Data *get_data;
+   Eina_Binbuf *buf;
 
-   while (eina_iterator_next((*it), (void**)&get_data))
+   EINA_ACCESSOR_FOREACH(ac, i, buf)
      {
-        fail_if(!get_data);
-        fail_if(strcmp(get_data->data, attr_data[i]) != 0);
+        fail_if(!buf);
+        fail_if(strcmp((const char*) eina_binbuf_string_get(buf),
+                       attr_data[i]) != 0);
+
         i++;
      }
 
@@ -90,12 +85,15 @@ _done_get_cb(void *data EINA_UNUSED, void* v)
 }
 
 static void
-_done_set_cb(void *data, void* v)
+_done_set_cb(void *data, const Efl_Event *ev)
 {
-   Eina_Iterator** it = (Eina_Iterator**)v;
+   Efl_Future_Event_Success *success = ev->info;
+   Eina_Accessor *ac = success->value;
    int *placeholder;
    int *num_of_attr = data;
-   while(eina_iterator_next((*it), (void**)&placeholder))
+   int i = 0;
+
+   EINA_ACCESSOR_FOREACH(ac, i, placeholder)
      *num_of_attr += 1;
 
    fail_if(*num_of_attr != total_attributes);
@@ -104,10 +102,11 @@ _done_set_cb(void *data, void* v)
 }
 
 static void
-_error_cb(void *data EINA_UNUSED, Eina_Error error)
-
+_error_cb(void *data EINA_UNUSED, const Efl_Event *ev)
 {
-   fprintf(stderr, "Something has gone wrong:%s\n", eina_error_msg_get(error));
+   Efl_Future_Event_Failure *failure = ev->info;
+
+   fprintf(stderr, "Something has gone wrong:%s\n", 
eina_error_msg_get(failure->error));
    abort();
 
    ecore_main_loop_quit();
@@ -120,16 +119,14 @@ START_TEST(eio_test_job_xattr_set)
    int num_of_attr = 0, fd;
    unsigned int i;
    Eo *job;
-   Eina_Promise *list_promise = NULL;
-   Eina_Promise **attrib_promises = NULL;
+   Efl_Future *ls = NULL;
+   Efl_Future **futures = NULL;
 
    ecore_init();
    eina_init();
    eio_init();
 
-   fprintf(stderr, "eio_test_job_xattr_set\n"); fflush(stderr);
-
-   job = efl_add(EFL_IO_MANAGER_CLASS, NULL);
+   job = efl_add(EFL_IO_MANAGER_CLASS, ecore_main_loop_get());
 
    test_file_path = get_full_path(XATTR_TEST_DIR, filename);
    fd = open(test_file_path,
@@ -137,52 +134,51 @@ START_TEST(eio_test_job_xattr_set)
              S_IRWXU | S_IRWXG | S_IRWXO);
    fail_if(fd == 0);
 
-   attrib_promises = (Eina_Promise**)calloc(total_attributes + 1, 
sizeof(Eina_Promise*));
-   attrib_promises[total_attributes] = NULL;
+   futures = calloc(total_attributes + 1, sizeof(Efl_Future*));
+   futures[total_attributes] = NULL;
 
    for (i = 0; i < sizeof(attribute) / sizeof(attribute[0]); ++i)
      {
-        attrib_promises[i] = efl_io_manager_file_xattr_set
-          (job, test_file_path, attribute[i],
-           attr_data[i], strlen(attr_data[i]),
-           EINA_XATTR_INSERT);
+        Eina_Binbuf *buf;
+
+        buf = eina_binbuf_manage_new((const unsigned char*) attr_data[i], 
strlen(attr_data[i]), EINA_TRUE);
+        futures[i] = efl_io_manager_xattr_set(job, test_file_path, 
attribute[i], buf, EINA_XATTR_INSERT);
+        eina_binbuf_free(buf);
 
         fail_if(num_of_attr != 0); // test asynchronous
      }
-   
eina_promise_then(eina_promise_all(eina_carray_iterator_new((void**)attrib_promises)),
-         &_done_set_cb, _error_cb, &num_of_attr);
+   efl_future_then(efl_future_iterator_all(eina_carray_iterator_new((void**) 
futures)),
+                   _done_set_cb, _error_cb, NULL, &num_of_attr);
 
    ecore_main_loop_begin();
 
-   free(attrib_promises);
+   free(futures);
 
    num_of_attr = 0;
 
-   attrib_promises = (Eina_Promise**)calloc(total_attributes + 1, 
sizeof(Eina_Promise*));
-   attrib_promises[total_attributes] = NULL;
+   futures = calloc(total_attributes + 1, sizeof(Eina_Promise*));
+   futures[total_attributes] = NULL;
 
    for (i = 0; i < sizeof(attribute) / sizeof(attribute[0]); ++i)
-   {
-     attrib_promises[i] = efl_io_manager_file_xattr_get(job, test_file_path, 
attribute[i]);
-   }
+     {
+        futures[i] = efl_io_manager_xattr_get(job, test_file_path, 
attribute[i]);
+     }
 
-   
eina_promise_then(eina_promise_all(eina_carray_iterator_new((void**)attrib_promises)),
-         _done_get_cb, _error_cb, &num_of_attr);
+   
efl_future_then(efl_future_iterator_all(eina_carray_iterator_new((void**)futures)),
+                   _done_get_cb, _error_cb, NULL, &num_of_attr);
 
    ecore_main_loop_begin();
 
    num_of_attr = 0;
 
-   efl_event_callback_add(job, EFL_IO_MANAGER_EVENT_XATTR, _filter_cb, NULL);
-   list_promise = efl_io_manager_file_xattr_list_get(job, test_file_path);
-   eina_promise_progress_cb_add(list_promise, _main_cb, &num_of_attr, NULL);
-   eina_promise_then(list_promise, _done_cb, _error_cb, &num_of_attr);
+   efl_future_use(&ls, efl_io_manager_xattr_ls(job, test_file_path));
+   efl_future_then(ls, _done_cb, _error_cb, _main_cb, &num_of_attr);
 
    fail_if(num_of_attr != 0);
 
    ecore_main_loop_begin();
 
-   free(attrib_promises);
+   free(futures);
 
    efl_unref(job);
    close(fd);

-- 


Reply via email to