From: <svn...@op...> - 2009-09-15 09:01:05
|
Author: bellmich Date: Tue Sep 15 11:00:50 2009 New Revision: 1275 URL: http://libsyncml.opensync.org/changeset/1275 Log: - added tests for several client sessions via one server instance - fixed a small bug in the code which searchs the correct client Modified: trunk/tests/CMakeLists.txt trunk/tests/check_data_sync_api.c Modified: trunk/tests/CMakeLists.txt ============================================================================== --- trunk/tests/CMakeLists.txt Mon Sep 14 19:52:56 2009 (r1274) +++ trunk/tests/CMakeLists.txt Tue Sep 15 11:00:50 2009 (r1275) @@ -512,10 +512,12 @@ IF ( ENABLE_OPENOBEX_TCP OR ENABLE_HTTP ) SML_START_TEST( "OMA DS API" ds_api check_data_sync_api.c ${TEST_TARGET_LIBRARIES} ) - SML_ADD_TESTCASE( ds_api_text_vcard_21 ) - SML_ADD_TESTCASE( ds_api_image_jpeg ) - SML_ADD_TESTCASE( ds_api_unknown_ct ) - SML_ADD_TESTCASE( ds_api_multi_text_vcard_21 ) + SML_ADD_TESTCASE( ds_api_single_client_single_text_vcard_21 ) + SML_ADD_TESTCASE( ds_api_single_client_single_image_jpeg ) + SML_ADD_TESTCASE( ds_api_single_client_single_unknown_ct ) + SML_ADD_TESTCASE( ds_api_single_client_multi_text_vcard_21 ) + SML_ADD_TESTCASE( ds_api_multi_client_single_text_vcard_21 ) + SML_ADD_TESTCASE( ds_api_multi_client_multi_text_vcard_21 ) SML_END_TEST() ENDIF ( ENABLE_OPENOBEX_TCP OR ENABLE_HTTP ) Modified: trunk/tests/check_data_sync_api.c ============================================================================== --- trunk/tests/check_data_sync_api.c Mon Sep 14 19:52:56 2009 (r1274) +++ trunk/tests/check_data_sync_api.c Tue Sep 15 11:00:50 2009 (r1275) @@ -204,8 +204,8 @@ if (sml_location_is_equal(sml_data_sync_get_local(client->client), sml_data_sync_session_get_remote(dss))) { /* correct client */ - continue; smlTrace(TRACE_INTERNAL, "%s - correct client", __func__); + break; } else { /* wrong client */ client = NULL; @@ -499,7 +499,12 @@ { SmlDataSyncTestClient *client = list->data; g_object_unref(client->client); - g_list_free(client->items); + while(client->items) + { + gchar* item = client->items->data; + client->items = g_list_remove(client->items, item); + smlSafeCFree(&item); + } } g_object_unref(server); @@ -514,7 +519,7 @@ sml_fail_unless(FALSE, "%s", error->message); } -START_TEST (ds_api_text_vcard_21) +START_TEST (ds_api_single_client_single_text_vcard_21) { GError *error = NULL; init_testbed(1, "HTTP", "17001"); @@ -539,7 +544,7 @@ goto error; /* configure test data */ - client->items = g_list_append(client->items, (char *) "blabla"); + client->items = g_list_append(client->items, g_strdup("blabla")); run_testbed(); @@ -549,7 +554,7 @@ } END_TEST -START_TEST (ds_api_image_jpeg) +START_TEST (ds_api_single_client_single_image_jpeg) { GError *error = NULL; init_testbed(1, "OBEX", "17002"); @@ -577,7 +582,7 @@ goto error; /* configure test data */ - client->items = g_list_append(client->items, (char *) "this is an image"); + client->items = g_list_append(client->items, g_strdup("this is an image")); run_testbed(); @@ -587,7 +592,7 @@ } END_TEST -START_TEST (ds_api_unknown_ct) +START_TEST (ds_api_single_client_single_unknown_ct) { GError *error = NULL; init_testbed(1, "HTTP", "17003"); @@ -612,7 +617,7 @@ goto error; /* configure test data */ - client->items = g_list_append(client->items, (char *) "this is some data"); + client->items = g_list_append(client->items, g_strdup("this is some data")); run_testbed(); @@ -622,7 +627,7 @@ } END_TEST -START_TEST (ds_api_multi_text_vcard_21) +START_TEST (ds_api_single_client_multi_text_vcard_21) { GError *error = NULL; init_testbed(1, "HTTP", "17004"); @@ -647,12 +652,100 @@ goto error; /* configure test data */ - int max_items = 10000; + int max_items = 1000; int i; for(i = 0; i < max_items; i++) { - client->items = g_list_append(client->items, (char *) "client data"); + client->items = g_list_append(client->items, g_strdup_printf("client 1 data %d", (i+1))); + } + + run_testbed(); + + return; +error: + sml_fail_unless(FALSE, "%s", error->message); +} +END_TEST + +START_TEST (ds_api_multi_client_single_text_vcard_21) +{ + GError *error = NULL; + init_testbed(5, "HTTP", "17001"); + + /* register datastore + * the source must be identical because this is http + */ + + SmlDataSyncTestClient *client = NULL; + GList *list = clients; + unsigned int count = 0; + for (;list; list = list->next) + { + count ++; + client = list->data; + client->data_store = sml_data_sync_data_store_new(); + sml_data_sync_data_store_set_content_type (client->data_store, "text/x-vcard"); + sml_data_sync_data_store_set_local_uri (client->data_store, "contacts"); + sml_data_sync_data_store_register_change_callback(client->data_store, recvChangeCallback, client); + if (!sml_data_sync_add_data_store(client->client, client->data_store, &error)) + goto error; + + /* configure test data */ + client->items = g_list_append(client->items, g_strdup_printf("client %d data 1", count)); + } + + server_data_store = sml_data_sync_data_store_new(); + sml_data_sync_data_store_set_content_type (server_data_store, "text/x-vcard"); + sml_data_sync_data_store_set_local_uri (server_data_store, "contacts"); + sml_data_sync_data_store_register_change_callback(server_data_store, recvChangeCallback, NULL); + if (!sml_data_sync_add_data_store(server, server_data_store, &error)) + goto error; + + run_testbed(); + + return; +error: + sml_fail_unless(FALSE, "%s", error->message); +} +END_TEST + +START_TEST (ds_api_multi_client_multi_text_vcard_21) +{ + GError *error = NULL; + init_testbed(10, "HTTP", "17001"); + + /* register datastore + * the source must be identical because this is http + */ + + SmlDataSyncTestClient *client = NULL; + GList *list = clients; + unsigned int count = 0; + for (;list; list = list->next) + { + count ++; + client = list->data; + client->data_store = sml_data_sync_data_store_new(); + sml_data_sync_data_store_set_content_type (client->data_store, "text/x-vcard"); + sml_data_sync_data_store_set_local_uri (client->data_store, "contacts"); + sml_data_sync_data_store_register_change_callback(client->data_store, recvChangeCallback, client); + if (!sml_data_sync_add_data_store(client->client, client->data_store, &error)) + goto error; + + /* configure test data */ + int max_items = 100; + int i; + for(i = 0; i < max_items; i++) { + client->items = g_list_append(client->items, g_strdup_printf("client %d data %d", count, (i+1))); + } } + server_data_store = sml_data_sync_data_store_new(); + sml_data_sync_data_store_set_content_type (server_data_store, "text/x-vcard"); + sml_data_sync_data_store_set_local_uri (server_data_store, "contacts"); + sml_data_sync_data_store_register_change_callback(server_data_store, recvChangeCallback, NULL); + if (!sml_data_sync_add_data_store(server, server_data_store, &error)) + goto error; + run_testbed(); return; |