[evolution-data-server/openismus-work] Ported various EBookClient tests to additionally test Direct Read Access variants



commit b973ffd9096c5ff9029cacfe87c6781ce06fd728
Author: Tristan Van Berkom <tristanvb openismus com>
Date:   Tue Feb 19 22:55:16 2013 +0900

    Ported various EBookClient tests to additionally test Direct Read Access variants
    
    This patch basically adds additional invocations of the same test code
    in direct read access mode. Only for tests concerned with read access
    to the addressbook.
    
    Note that the test-client-uid-only-view and test-client-revision-view
    tests are not ported, they are not expected to pass in Direct Read Access
    mode (since the EBookClientView in Direct Read Access mode fetches contact
    data directly from the backend, any contact field filtering would be a
    useless overhead).
    
    Conflicts:
    
        tests/libebook/client/test-client-custom-summary.c
        tests/libebook/client/test-client-get-contact-uids.c
        tests/libebook/client/test-client-get-contact.c
        tests/libebook/client/test-client-get-view.c
        tests/libebook/client/test-client-suppress-notifications.c
        tests/libebook/client/test-client-view-operations.c

 tests/libebook/client/test-client-custom-summary.c |  208 +++++++++++++++-----
 tests/libebook/client/test-client-e164-param.c     |   19 ++-
 .../libebook/client/test-client-get-contact-uids.c |   17 ++-
 tests/libebook/client/test-client-get-contact.c    |   17 ++-
 tests/libebook/client/test-client-get-view.c       |   17 ++-
 .../client/test-client-suppress-notifications.c    |   17 ++-
 .../libebook/client/test-client-view-operations.c  |   14 +-
 tests/test-server-utils/e-test-server-utils.c      |    2 +-
 8 files changed, 237 insertions(+), 74 deletions(-)
---
diff --git a/tests/libebook/client/test-client-custom-summary.c 
b/tests/libebook/client/test-client-custom-summary.c
index b13e398..69a9924 100644
--- a/tests/libebook/client/test-client-custom-summary.c
+++ b/tests/libebook/client/test-client-custom-summary.c
@@ -33,8 +33,10 @@ typedef struct {
        gint num_contacts;
 } ClientTestData;
 
-/* Cleanup the closures, just for the hell of it... */
-static GList *closures = NULL;
+typedef struct {
+       ETestServerFixture parent;
+       EContact *contacts[7];
+} ClientTestFixture;
 
 static void
 client_test_data_free (gpointer p)
@@ -71,20 +73,48 @@ setup_custom_book (ESource            *scratch,
 }
 
 static void
-add_client_test (const gchar *path,
+client_test_setup (ClientTestFixture *fixture,
+                  gconstpointer user_data)
+{
+       e_test_server_utils_setup (&fixture->parent, user_data);
+}
+
+static void
+client_test_teardown (ClientTestFixture *fixture,
+                     gconstpointer user_data)
+{
+       gint i;
+
+       for (i = 0; i < G_N_ELEMENTS (fixture->contacts); ++i) {
+               if (fixture->contacts[i])
+                       g_object_unref (fixture->contacts[i]);
+       }
+
+       e_test_server_utils_teardown (&fixture->parent, user_data);
+}
+
+static void
+add_client_test (const gchar *prefix,
+                const gchar *test_case_name,
                  gpointer func,
                  EBookQuery *query,
-                 gint num_contacts)
+                 gint num_contacts,
+                gboolean direct)
 {
        ClientTestData *data = g_slice_new0 (ClientTestData);
+       gchar *path = g_strconcat (prefix, test_case_name, NULL);
 
-       data->closure.type = E_TEST_SERVER_ADDRESS_BOOK;
+       data->closure.type = direct ? E_TEST_SERVER_DIRECT_ADDRESS_BOOK : E_TEST_SERVER_ADDRESS_BOOK;
        data->closure.customize = setup_custom_book;
+       data->closure.destroy_closure_func = client_test_data_free;
        data->query = query;
        data->num_contacts = num_contacts;
 
-       g_test_add (path, ETestServerFixture, data, e_test_server_utils_setup, func, 
e_test_server_utils_teardown);
-       closures = g_list_prepend (closures, data);
+       g_test_add (
+               path, ClientTestFixture, data,
+               client_test_setup, func, client_test_teardown);
+
+       g_free (path);
 }
 
 static void
@@ -149,11 +179,62 @@ uid_test (ETestServerFixture *fixture,
        g_free (sexp);
 }
 
+#ifdef ENABLE_PHONENUMBER
+
+static void
+locale_change_test (ClientTestFixture *fixture,
+                    gconstpointer user_data)
+{
+       EBookClient *book_client;
+       GSList *results = NULL;
+       GError *error = NULL;
+
+       book_client = E_TEST_SERVER_UTILS_SERVICE (fixture, EBookClient);
+       setup_book (fixture);
+
+       if (!e_book_client_get_contacts_uids_sync (
+               book_client, "(eqphone \"phone\" \"221-5423789\" \"en_US.UTF-8\")",
+                               &results, NULL, &error)) {
+               g_error ("get contact uids: %s", error->message);
+       }
+
+       g_assert_cmpint (g_slist_length (results), ==, 1);
+
+       g_assert_cmpstr (
+               results->data, ==,
+               e_contact_get_const (fixture->contacts[0], E_CONTACT_UID));
+
+       e_util_free_string_slist (results);
+
+       if (!e_book_client_get_contacts_uids_sync (
+               book_client, "(eqphone \"phone\" \"221-5423789\" \"en_GB.UTF-8\")",
+                               &results, NULL, &error)) {
+               g_error ("get contact uids: %s", error->message);
+       }
+
+       g_assert_cmpint (g_slist_length (results), ==, 0);
+       e_util_free_string_slist (results);
+}
+
+#endif /* ENABLE_PHONENUMBER */
+
+typedef struct {
+       gpointer func;
+       gboolean direct;
+       const gchar *prefix;
+} SuiteType;
+
 gint
 main (gint argc,
       gchar **argv)
 {
-       gint ret;
+       gint ret, i;
+       SuiteType suites[] = {
+               { search_test, FALSE, "/EBookClient/Search" },
+               { uid_test,    FALSE, "/EBookClient/SearchUID" },
+               { search_test, TRUE,  "/EBookClient/DirectAccess/Search" },
+               { uid_test,    TRUE,  "/EBookClient/DirectAccess/SearchUID" }
+       };
 
 #if !GLIB_CHECK_VERSION (2, 35, 1)
        g_type_init ();
@@ -161,49 +242,78 @@ main (gint argc,
        g_test_init (&argc, &argv, NULL);
 
 
-       /* Add search tests that fetch contacts */
-       add_client_test ("/client/search/exact/fn", search_test,
-                        e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_IS, "James Brown"),
-                        1);
-       add_client_test ("/client/search/exact/name", search_test,
-                        e_book_query_vcard_field_test(EVC_N, E_BOOK_QUERY_IS, "Janet"),
-                        1);
-       add_client_test ("/client/search/prefix/fn", search_test,
-                        e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_BEGINS_WITH, "B"),
-                        2);
-       add_client_test ("/client/search/prefix/fn/percent", search_test,
-                        e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_BEGINS_WITH, "%"),
-                        1);
-       add_client_test ("/client/search/suffix/phone", search_test,
-                        e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_ENDS_WITH, "999"),
-                        2);
-       add_client_test ("/client/search/suffix/email", search_test,
-                        e_book_query_field_test (E_CONTACT_EMAIL, E_BOOK_QUERY_ENDS_WITH, "jackson.com"),
-                        2);
-
-       /* Add search tests that fetch uids */
-       add_client_test ("/client/search-uid/exact/fn", uid_test,
-                        e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_IS, "James Brown"),
-                        1);
-       add_client_test ("/client/search-uid/exact/name", uid_test,
-                        e_book_query_vcard_field_test(EVC_N, E_BOOK_QUERY_IS, "Janet"),
-                        1);
-       add_client_test ("/client/search-uid/prefix/fn", uid_test,
-                        e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_BEGINS_WITH, "B"),
-                        2);
-       add_client_test ("/client/search-uid/prefix/fn/percent", uid_test,
-                        e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_BEGINS_WITH, "%"),
-                        1);
-       add_client_test ("/client/search-uid/suffix/phone", uid_test,
-                        e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_ENDS_WITH, "999"),
-                        2);
-       add_client_test ("/client/search-uid/suffix/email", uid_test,
-                        e_book_query_field_test (E_CONTACT_EMAIL, E_BOOK_QUERY_ENDS_WITH, "jackson.com"),
-                        2);
+       /* Test all queries in 4 different combinations specified by the 'suites'
+        */
+       for (i = 0; i < G_N_ELEMENTS (suites); i++) {
 
-       ret = e_test_server_utils_run ();
+               /* Add search tests that fetch contacts */
+               add_client_test (suites[i].prefix, "/Exact/FullName", suites[i].func,
+                                e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_IS, "James 
Brown"),
+                                1, suites[i].direct);
+
+               add_client_test (suites[i].prefix, "/Exact/Name", suites[i].func,
+                                e_book_query_vcard_field_test (EVC_N, E_BOOK_QUERY_IS, "Janet"),
+                                1, suites[i].direct);
+
+               add_client_test (suites[i].prefix, "/Prefix/FullName", suites[i].func,
+                                e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_BEGINS_WITH, "B"),
+                                2, suites[i].direct);
+
+               add_client_test (suites[i].prefix, "/Prefix/FullName/Percent", suites[i].func,
+                                e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_BEGINS_WITH, "%"),
+                                1, suites[i].direct);
+
+               add_client_test (suites[i].prefix, "/Suffix/Phone", suites[i].func,
+                                e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_ENDS_WITH, "999"),
+                                2, suites[i].direct);
 
-       g_list_free_full (closures, client_test_data_free);
+               add_client_test (suites[i].prefix, "/Suffix/Email", suites[i].func,
+                                e_book_query_field_test (E_CONTACT_EMAIL, E_BOOK_QUERY_ENDS_WITH, 
"jackson.com"),
+                                2, suites[i].direct);
+
+#ifdef ENABLE_PHONENUMBER
+
+               /* field based phone number queries do an index lookup */
+               add_client_test (suites[i].prefix, "/EqPhone/Exact/Phone", suites[i].func,
+                                e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_EQUALS_PHONE_NUMBER, 
"+1 221.542.3789"),
+                                1, suites[i].direct);
+
+               add_client_test (suites[i].prefix, "/EqPhone/National/Phone", suites[i].func,
+                                e_book_query_field_test (E_CONTACT_TEL, 
E_BOOK_QUERY_EQUALS_NATIONAL_PHONE_NUMBER, "221.542.3789"),
+                                1, suites[i].direct);
+
+               add_client_test (suites[i].prefix, "/EqPhone/Short/Phone", suites[i].func,
+                                e_book_query_field_test (E_CONTACT_TEL, 
E_BOOK_QUERY_EQUALS_SHORT_PHONE_NUMBER, "5423789"),
+                                1, suites[i].direct);
+
+               /* vCard based phone number queries do a table scan */
+               add_client_test (suites[i].prefix, "/EqPhone/Exact/Tel", suites[i].func,
+                                e_book_query_vcard_field_test (EVC_TEL, E_BOOK_QUERY_EQUALS_PHONE_NUMBER, 
"+1 221.542.3789"),
+                                1, suites[i].direct);
+               add_client_test (suites[i].prefix, "/EqPhone/National/Tel", suites[i].func,
+                                e_book_query_vcard_field_test (EVC_TEL, 
E_BOOK_QUERY_EQUALS_NATIONAL_PHONE_NUMBER, "221.542.3789"),
+                                1, suites[i].direct);
+               add_client_test (suites[i].prefix, "/EqPhone/Short/Tel", suites[i].func,
+                                e_book_query_vcard_field_test(EVC_TEL, 
E_BOOK_QUERY_EQUALS_SHORT_PHONE_NUMBER, "5423789"),
+                                1, suites[i].direct);
+
+#endif /* ENABLE_PHONENUMBER */
+
+       }
+
+#ifdef ENABLE_PHONENUMBER
+
+       add_client_test (
+               "/EBookClient", "/EqPhone/LocaleChange", locale_change_test,
+               NULL, 0, FALSE);
+
+       add_client_test (
+               "/EBookClient/DirectAccess", "/EqPhone/LocaleChange", locale_change_test,
+               NULL, 0, TRUE);
+
+#endif /* ENABLE_PHONENUMBER */
+
+       ret = e_test_server_utils_run ();
 
        return ret;
 }
diff --git a/tests/libebook/client/test-client-e164-param.c b/tests/libebook/client/test-client-e164-param.c
index 9c0a757..d415d1b 100644
--- a/tests/libebook/client/test-client-e164-param.c
+++ b/tests/libebook/client/test-client-e164-param.c
@@ -53,11 +53,12 @@ static TestData *
 test_data_new (const gchar *vcard_name,
               const gchar *formatted_number,
               const gchar *country_calling_code,
-              const gchar *national_number)
+              const gchar *national_number,
+              gboolean     direct)
 {
        TestData *const data = g_new0 (TestData, 1);
 
-       data->parent.type = E_TEST_SERVER_ADDRESS_BOOK;
+       data->parent.type = direct ? E_TEST_SERVER_DIRECT_ADDRESS_BOOK : E_TEST_SERVER_ADDRESS_BOOK;
        data->parent.destroy_closure_func = test_data_free;
        data->vcard_name = g_strdup (vcard_name);
        data->formatted_number = g_strdup (formatted_number);
@@ -143,12 +144,22 @@ main (gint argc,
 
        g_test_add (
                "/EBookClient/AddContact/AddE164Param/1", ETestServerFixture,
-               test_data_new ("custom-1", "+1-221-5423789", "+1", "2215423789"),
+               test_data_new ("custom-1", "+1-221-5423789", "+1", "2215423789", FALSE),
                e_test_server_utils_setup, test_add_e164_param,
                e_test_server_utils_teardown);
        g_test_add (
                "/EBookClient/AddContact/AddE164Param/2", ETestServerFixture,
-               test_data_new ("custom-2", "7654321", NULL, "7654321"),
+               test_data_new ("custom-2", "7654321", NULL, "7654321", FALSE),
+               e_test_server_utils_setup, test_add_e164_param,
+               e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/DirectAccess/AddContact/AddE164Param/1", ETestServerFixture,
+               test_data_new ("custom-1", "+1-221-5423789", "+1", "2215423789", TRUE),
+               e_test_server_utils_setup, test_add_e164_param,
+               e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/DirectAccess/AddContact/AddE164Param/2", ETestServerFixture,
+               test_data_new ("custom-2", "7654321", NULL, "7654321", TRUE),
                e_test_server_utils_setup, test_add_e164_param,
                e_test_server_utils_teardown);
 
diff --git a/tests/libebook/client/test-client-get-contact-uids.c 
b/tests/libebook/client/test-client-get-contact-uids.c
index 51bfd1c..9527333 100644
--- a/tests/libebook/client/test-client-get-contact-uids.c
+++ b/tests/libebook/client/test-client-get-contact-uids.c
@@ -7,6 +7,7 @@
 #include "e-test-server-utils.h"
 
 static ETestServerClosure book_closure = { E_TEST_SERVER_ADDRESS_BOOK, NULL, 0 };
+static ETestServerClosure direct_book_closure = { E_TEST_SERVER_DIRECT_ADDRESS_BOOK, NULL, 0 };
 
 
 static void
@@ -99,10 +100,18 @@ main (gint argc,
 #endif
        g_test_init (&argc, &argv, NULL);
 
-       g_test_add ("/EBookClient/GetContactUids/Sync", ETestServerFixture, &book_closure,
-                   e_test_server_utils_setup, test_get_contact_uids_sync, e_test_server_utils_teardown);
-       g_test_add ("/EBookClient/GetContactUids/Async", ETestServerFixture, &book_closure,
-                   e_test_server_utils_setup, test_get_contact_uids_async, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/GetContactUids/Sync", ETestServerFixture, &book_closure,
+               e_test_server_utils_setup, test_get_contact_uids_sync, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/GetContactUids/Async", ETestServerFixture, &book_closure,
+               e_test_server_utils_setup, test_get_contact_uids_async, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/DirectAccess/GetContactUids/Sync", ETestServerFixture, &direct_book_closure,
+               e_test_server_utils_setup, test_get_contact_uids_sync, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/DirectAccess/GetContactUids/Async", ETestServerFixture, &direct_book_closure,
+               e_test_server_utils_setup, test_get_contact_uids_async, e_test_server_utils_teardown);
 
        return e_test_server_utils_run ();
 }
diff --git a/tests/libebook/client/test-client-get-contact.c b/tests/libebook/client/test-client-get-contact.c
index e19ff94..524db39 100644
--- a/tests/libebook/client/test-client-get-contact.c
+++ b/tests/libebook/client/test-client-get-contact.c
@@ -7,6 +7,7 @@
 #include "e-test-server-utils.h"
 
 static ETestServerClosure book_closure = { E_TEST_SERVER_ADDRESS_BOOK, NULL, 0 };
+static ETestServerClosure direct_book_closure = { E_TEST_SERVER_DIRECT_ADDRESS_BOOK, NULL, 0 };
 
 
 static void
@@ -73,10 +74,18 @@ main (gint argc,
 #endif
        g_test_init (&argc, &argv, NULL);
 
-       g_test_add ("/EBookClient/GetContact/Sync", ETestServerFixture, &book_closure,
-                   e_test_server_utils_setup, test_get_contact_sync, e_test_server_utils_teardown);
-       g_test_add ("/EBookClient/GetContact/Async", ETestServerFixture, &book_closure,
-                   e_test_server_utils_setup, test_get_contact_async, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/GetContact/Sync", ETestServerFixture, &book_closure,
+               e_test_server_utils_setup, test_get_contact_sync, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/GetContact/Async", ETestServerFixture, &book_closure,
+               e_test_server_utils_setup, test_get_contact_async, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/DirectAccess/GetContact/Sync", ETestServerFixture, &direct_book_closure,
+               e_test_server_utils_setup, test_get_contact_sync, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/DirectAccess/GetContact/Async", ETestServerFixture, &direct_book_closure,
+               e_test_server_utils_setup, test_get_contact_async, e_test_server_utils_teardown);
 
        return e_test_server_utils_run ();
 }
diff --git a/tests/libebook/client/test-client-get-view.c b/tests/libebook/client/test-client-get-view.c
index e4c9f3a..1e0b8fb 100644
--- a/tests/libebook/client/test-client-get-view.c
+++ b/tests/libebook/client/test-client-get-view.c
@@ -7,6 +7,7 @@
 #include "e-test-server-utils.h"
 
 static ETestServerClosure book_closure = { E_TEST_SERVER_ADDRESS_BOOK, NULL, 0 };
+static ETestServerClosure direct_book_closure = { E_TEST_SERVER_DIRECT_ADDRESS_BOOK, NULL, 0 };
 
 static void
 objects_added (EBookClientView *view,
@@ -147,10 +148,18 @@ main (gint argc,
 #endif
        g_test_init (&argc, &argv, NULL);
 
-       g_test_add ("/EBookClient/GetBookClientView/Sync", ETestServerFixture, &book_closure,
-                   e_test_server_utils_setup, test_get_view_sync, e_test_server_utils_teardown);
-       g_test_add ("/EBookClient/GetBookClientView/Async", ETestServerFixture, &book_closure,
-                   e_test_server_utils_setup, test_get_view_async, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/GetBookClientView/Sync", ETestServerFixture, &book_closure,
+               e_test_server_utils_setup, test_get_view_sync, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/GetBookClientView/Async", ETestServerFixture, &book_closure,
+               e_test_server_utils_setup, test_get_view_async, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/DirectAccess/GetBookClientView/Sync", ETestServerFixture, &direct_book_closure,
+               e_test_server_utils_setup, test_get_view_sync, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/DirectAccess/GetBookClientView/Async", ETestServerFixture, &direct_book_closure,
+               e_test_server_utils_setup, test_get_view_async, e_test_server_utils_teardown);
 
        return e_test_server_utils_run ();
 }
diff --git a/tests/libebook/client/test-client-suppress-notifications.c 
b/tests/libebook/client/test-client-suppress-notifications.c
index 1bae38b..8eed9b9 100644
--- a/tests/libebook/client/test-client-suppress-notifications.c
+++ b/tests/libebook/client/test-client-suppress-notifications.c
@@ -7,6 +7,7 @@
 #include "e-test-server-utils.h"
 
 static ETestServerClosure book_closure = { E_TEST_SERVER_ADDRESS_BOOK, NULL, 0 };
+static ETestServerClosure direct_book_closure = { E_TEST_SERVER_DIRECT_ADDRESS_BOOK, NULL, 0 };
 
 #define NOTIFICATION_WAIT 2000
 
@@ -182,10 +183,18 @@ main (gint argc,
 #endif
        g_test_init (&argc, &argv, NULL);
 
-       g_test_add ("/EBookClient/SuppressNotifications/Sync", ETestServerFixture, &book_closure,
-                   e_test_server_utils_setup, test_suppress_notifications_sync, 
e_test_server_utils_teardown);
-       g_test_add ("/EBookClient/SuppressNotifications/Async", ETestServerFixture, &book_closure,
-                   e_test_server_utils_setup, test_suppress_notifications_async, 
e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/SuppressNotifications/Sync", ETestServerFixture, &book_closure,
+               e_test_server_utils_setup, test_suppress_notifications_sync, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/SuppressNotifications/Async", ETestServerFixture, &book_closure,
+               e_test_server_utils_setup, test_suppress_notifications_async, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/DirectAccess/SuppressNotifications/Sync", ETestServerFixture, 
&direct_book_closure,
+               e_test_server_utils_setup, test_suppress_notifications_sync, e_test_server_utils_teardown);
+       g_test_add (
+               "/EBookClient/DirectAccess/SuppressNotifications/Async", ETestServerFixture, 
&direct_book_closure,
+               e_test_server_utils_setup, test_suppress_notifications_async, e_test_server_utils_teardown);
 
        return e_test_server_utils_run ();
 }
diff --git a/tests/libebook/client/test-client-view-operations.c 
b/tests/libebook/client/test-client-view-operations.c
index e1e6c01..7cba28c 100644
--- a/tests/libebook/client/test-client-view-operations.c
+++ b/tests/libebook/client/test-client-view-operations.c
@@ -9,11 +9,13 @@
 #include "e-test-server-utils.h"
 
 static ETestServerClosure book_closure = { E_TEST_SERVER_ADDRESS_BOOK, NULL, 0 };
+static ETestServerClosure direct_book_closure = { E_TEST_SERVER_DIRECT_ADDRESS_BOOK, NULL, 0 };
 
 #define N_THREADS  20
 #define N_CONTACTS 5
 
 typedef struct {
+       ETestServerClosure *closure;
        GThread         *thread;
        const gchar     *book_uid;
        EBookClient     *client;
@@ -179,8 +181,8 @@ test_view_thread (ThreadData *data)
        if (!source)
                g_error ("Unable to fetch source uid '%s' from the registry", data->book_uid);
 
-       if (g_getenv ("DEBUG_DIRECT") != NULL)
-               data->client = e_book_client_new_direct (registry, source, &error);
+       if (data->closure->type == E_TEST_SERVER_DIRECT_ADDRESS_BOOK)
+               data->client = (EBookClient *)e_book_client_connect_direct_sync (registry, source, NULL, 
&error);
        else
                data->client = e_book_client_new (source, &error);
 
@@ -203,11 +205,13 @@ test_view_thread (ThreadData *data)
 }
 
 static ThreadData *
-create_test_thread (const gchar   *book_uid)
+create_test_thread (const gchar   *book_uid,
+                   gconstpointer  user_data)
 {
        ThreadData  *data = g_slice_new0 (ThreadData);
 
        data->book_uid    = book_uid;
+       data->closure     = (ETestServerClosure *)user_data;
 
        g_mutex_init (&data->complete_mutex);
        g_cond_init (&data->complete_cond);
@@ -244,7 +248,7 @@ test_concurrent_views (ETestServerFixture *fixture,
        /* Create all concurrent threads accessing the same addressbook */
        tests = g_new0 (ThreadData *, N_THREADS);
        for (i = 0; i < N_THREADS; i++)
-               tests[i] = create_test_thread (book_uid);
+               tests[i] = create_test_thread (book_uid, user_data);
 
 
        /* Wait for all threads to receive the complete signal */
@@ -276,6 +280,8 @@ main (gint argc,
 
        g_test_add ("/EBookClient/ConcurrentViews", ETestServerFixture, &book_closure,
                    e_test_server_utils_setup, test_concurrent_views, e_test_server_utils_teardown);
+       g_test_add ("/EBookClient/DirectAccess/ConcurrentViews", ETestServerFixture, &direct_book_closure,
+                   e_test_server_utils_setup, test_concurrent_views, e_test_server_utils_teardown);
 
        return e_test_server_utils_run ();
 }
diff --git a/tests/test-server-utils/e-test-server-utils.c b/tests/test-server-utils/e-test-server-utils.c
index 19f7ed1..e1cab55 100644
--- a/tests/test-server-utils/e-test-server-utils.c
+++ b/tests/test-server-utils/e-test-server-utils.c
@@ -117,7 +117,7 @@ e_test_server_utils_source_added (ESourceRegistry *registry,
                if (g_strcmp0 (e_source_get_uid (source), ADDRESS_BOOK_SOURCE_UID) != 0)
                        return;
 
-               if (pair->closure->type == E_TEST_SERVER_DIRECT_ADDRESS_BOOK)
+               if (pair->closure->type == E_TEST_SERVER_DIRECT_ADDRESS_BOOK) {
                        pair->fixture->service.book_client = (EBookClient *)
                                e_book_client_connect_direct_sync (pair->fixture->registry, source, NULL, 
&error);
 


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