[evolution-data-server/openismus-work] Use async variants in test-client-view-operations



commit 97a2d789d11231f7ac2cf4722133581c3309b2f2
Author: Tristan Van Berkom <tristanvb openismus com>
Date:   Thu Feb 21 22:44:15 2013 +0900

    Use async variants in test-client-view-operations
    
    We have some breakage with sync variants in this branch, this
    test still ensures concurrent access to the SQLite doesnt break.

 .../libebook/client/test-client-view-operations.c  |   52 +++++++++++--------
 1 files changed, 30 insertions(+), 22 deletions(-)
---
diff --git a/tests/libebook/client/test-client-view-operations.c 
b/tests/libebook/client/test-client-view-operations.c
index b713c83..e926b9e 100644
--- a/tests/libebook/client/test-client-view-operations.c
+++ b/tests/libebook/client/test-client-view-operations.c
@@ -79,19 +79,16 @@ complete (EBookClientView *view,
        g_mutex_unlock (&data->complete_mutex);
 }
 
-static gboolean
-start_view (ThreadData *data)
+static void
+view_ready (GObject *source_object,
+           GAsyncResult *res,
+           gpointer user_data)
 {
-       EBookQuery   *query;
-       gchar        *sexp;
+       ThreadData *data = (ThreadData *)user_data;
        GError *error = NULL;
 
-       query = e_book_query_any_field_contains ("");
-       sexp = e_book_query_to_string (query);
-
-       if (!e_book_client_get_view_sync (data->client, sexp,
-                                         &(data->view), NULL, &error))
-               g_error ("Error getting view: %s", error->message);
+       if (!e_book_client_get_view_finish (E_BOOK_CLIENT (source_object), res, &(data->view), &error))
+               g_error ("Getting view failed: %s", error->message);
 
        g_signal_connect (data->view, "objects-added", G_CALLBACK (objects_added), data);
        g_signal_connect (data->view, "objects-modified", G_CALLBACK (objects_modified), data);
@@ -106,23 +103,21 @@ start_view (ThreadData *data)
        if (error)
                g_error ("start view: %s", error->message);
 
-       e_book_query_unref (query);
-       g_free (sexp);
-
-       return FALSE;
 }
 
 static void
 start_thread_test (ThreadData *data)
 {
-       GMainContext *context;
-       GSource      *source;
+       EBookQuery   *query;
+       gchar        *sexp;
 
-       context = g_main_loop_get_context (data->loop);
-       source  = g_idle_source_new ();
+       query = e_book_query_any_field_contains ("");
+       sexp = e_book_query_to_string (query);
+
+       e_book_client_get_view (data->client, sexp, NULL, view_ready, data);
 
-       g_source_set_callback (source, (GSourceFunc)start_view, data, NULL);
-       g_source_attach (source, context);
+       e_book_query_unref (query);
+       g_free (sexp);
 }
 
 static void
@@ -137,6 +132,19 @@ finish_thread_test (ThreadData *data)
        g_slice_free (ThreadData, data);
 }
 
+static void
+book_client_opened (GObject *source_object,
+                   GAsyncResult *res,
+                   gpointer user_data)
+{
+       GError *error = NULL;
+
+       if (!e_client_open_finish (E_CLIENT (source_object), res, &error))
+               g_error ("Failed to open client: %s", error->message);
+
+       start_thread_test ((ThreadData *)user_data);
+}
+
 static gpointer
 test_view_thread (ThreadData *data)
 {
@@ -158,12 +166,12 @@ test_view_thread (ThreadData *data)
        if (!source)
                g_error ("Unable to fetch source uid '%s' from the registry", data->book_uid);
 
-       data->client = (EBookClient *)e_book_client_connect_direct_sync (registry, source, NULL, &error);
+       data->client = (EBookClient *)e_book_client_new_direct (registry, source, &error);
 
        if (!data->client)
                g_error ("Unable to create EBookClient for uid '%s': %s", data->book_uid, error->message);
 
-       start_thread_test (data);
+       e_client_open (E_CLIENT (data->client), FALSE, NULL, book_client_opened, data);
 
        g_main_loop_run (data->loop);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]