From: Tristan Van Berkom Date: Tue, 19 Feb 2013 13:55:16 +0000 (+0900) Subject: Ported various EBookClient tests to additionally test Direct Read Access variants X-Git-Tag: upstream/3.7.91~125 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4bc06c64f8f6eaa7c46cb09ec70277e776782e1e;p=platform%2Fupstream%2Fevolution-data-server.git 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). --- 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 (); }