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



commit 4bc06c64f8f6eaa7c46cb09ec70277e776782e1e
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).

 tests/libebook/client/test-client-custom-summary.c |  166 ++++++++++----------
 tests/libebook/client/test-client-e164-param.c     |   19 ++-
 .../libebook/client/test-client-get-contact-uids.c |    7 +
 tests/libebook/client/test-client-get-contact.c    |    7 +
 tests/libebook/client/test-client-get-view.c       |    7 +
 .../client/test-client-suppress-notifications.c    |    7 +
 .../libebook/client/test-client-view-operations.c  |   16 ++-
 7 files changed, 137 insertions(+), 92 deletions(-)
---
diff --git a/tests/libebook/client/test-client-custom-summary.c 
b/tests/libebook/client/test-client-custom-summary.c
index 1a7d925..4b24fb3 100644
--- a/tests/libebook/client/test-client-custom-summary.c
+++ b/tests/libebook/client/test-client-custom-summary.c
@@ -101,14 +101,17 @@ client_test_teardown (ClientTestFixture *fixture,
 }
 
 static void
-add_client_test (const gchar *path,
+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->parent.type = E_TEST_SERVER_ADDRESS_BOOK;
+       data->parent.type = direct ? E_TEST_SERVER_DIRECT_ADDRESS_BOOK : E_TEST_SERVER_ADDRESS_BOOK;
        data->parent.customize = setup_custom_book;
        data->parent.destroy_closure_func = client_test_data_free;
        data->query = query;
@@ -117,6 +120,8 @@ add_client_test (const gchar *path,
        g_test_add (
                path, ClientTestFixture, data,
                client_test_setup, func, client_test_teardown);
+
+       g_free (path);
 }
 
 static void
@@ -188,6 +193,8 @@ uid_test (ClientTestFixture *fixture,
        g_free (sexp);
 }
 
+#ifdef ENABLE_PHONENUMBER
+
 static void
 locale_change_test (ClientTestFixture *fixture,
                     gconstpointer user_data)
@@ -223,11 +230,25 @@ locale_change_test (ClientTestFixture *fixture,
        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 ();
@@ -236,95 +257,74 @@ main (gint argc,
 
        setlocale (LC_ALL, "en_US.UTF-8");
 
-       /* 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);
+       /* Test all queries in 4 different combinations specified by the 'suites'
+        */
+       for (i = 0; i < G_N_ELEMENTS (suites); i++) {
 
-#ifdef ENABLE_PHONENUMBER
+               /* 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);
 
-       /* field based phone number queries do an index lookup */
-       add_client_test (
-               "/client/search/eqphone/exact/phone", search_test,
-               e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_EQUALS_PHONE_NUMBER, "+1 221.542.3789"),
-               1);
-       add_client_test (
-               "/client/search/eqphone/national/phone", search_test,
-               e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_EQUALS_NATIONAL_PHONE_NUMBER, 
"221.542.3789"),
-               1);
-       add_client_test (
-               "/client/search/eqphone/short/phone", search_test,
-               e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_EQUALS_SHORT_PHONE_NUMBER, "5423789"),
-               1);
+               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);
 
-       /* vCard based phone number queries do a table scan */
-       add_client_test (
-               "/client/search/eqphone/exact/tel", search_test,
-               e_book_query_vcard_field_test (EVC_TEL, E_BOOK_QUERY_EQUALS_PHONE_NUMBER, "+1 221.542.3789"),
-               1);
-       add_client_test (
-               "/client/search/eqphone/national/tel", search_test,
-               e_book_query_vcard_field_test (EVC_TEL, E_BOOK_QUERY_EQUALS_NATIONAL_PHONE_NUMBER, 
"221.542.3789"),
-               1);
-       add_client_test (
-               "/client/search/eqphone/short/tel", search_test,
-               e_book_query_vcard_field_test(EVC_TEL, E_BOOK_QUERY_EQUALS_SHORT_PHONE_NUMBER, "5423789"),
-               1);
+               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);
+
+               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 */
 
-       /* 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);
+       }
 
 #ifdef ENABLE_PHONENUMBER
 
        add_client_test (
-               "/client/search-uid/eqphone/locale-change", locale_change_test,
-               NULL, 0);
+               "/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 */
 
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 42411cd..45be60b 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
 test_get_contact_uids_sync (ETestServerFixture *fixture,
@@ -104,6 +105,12 @@ main (gint argc,
        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 e1ec210..b725cd3 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
 test_get_contact_sync (ETestServerFixture *fixture,
@@ -78,6 +79,12 @@ main (gint argc,
        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 a3a25d6..8a9832d 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,
@@ -153,6 +154,12 @@ main (gint argc,
        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 86aeb02..ea86fed 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
 
@@ -188,6 +189,12 @@ main (gint argc,
        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 9d470fd..97f2cdb 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  5
 #define N_CONTACTS 5
 
 typedef struct {
+       ETestServerClosure *closure;
        GThread         *thread;
        const gchar     *book_uid;
        EBookClient     *client;
@@ -157,10 +159,10 @@ 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_connect_direct_sync (registry, source, NULL, &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_connect_sync (source, NULL, &error);
+               data->client = (EBookClient *)e_book_client_connect_sync (source, NULL, &error);
 
        if (!data->client)
                g_error ("Unable to create EBookClient for uid '%s': %s", data->book_uid, error->message);
@@ -181,11 +183,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);
@@ -222,7 +226,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 */
@@ -254,6 +258,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 ();
 }


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