From: <arm...@de...> - 2008-07-18 14:50:41
|
Author: bellmich Date: Fri Jul 18 16:50:42 2008 New Revision: 503 URL: http://libsyncml.opensync.org/browser/?sc=3D1&rev=3D503 Log: splitted source base for mobile specific tests Added: trunk/tests/mobiles/obex_mobile_ds_client.c trunk/tests/mobiles/obex_mobile_ds_server.c Modified: trunk/tests/mobiles/obex_mobile.c Modified: trunk/tests/mobiles/obex_mobile.c URL: http://libsyncml.opensync.org/browser/trunk/tests/mobiles/obex_mobile.= c?rev=3D503&op=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/tests/mobiles/obex_mobile.c (original) +++ trunk/tests/mobiles/obex_mobile.c Fri Jul 18 16:50:42 2008 @@ -23,13 +23,7 @@ #define NUM_SESSIONS 30 #define OBEX_PORT "10101" = -/* ************************************ - * *********** OBEX SERVER ************ - * ************************************ - * (mobile simulator) - */ - -#include <libsyncml/sml_transport_internals.h> +/* mobile status variables */ = typedef enum { TEST_MOBILE_STATE_UNKNOWN, @@ -44,130 +38,8 @@ } SmlTestMobileStateType; = SmlTestMobileStateType mobile_state =3D TEST_MOBILE_STATE_UNKNOWN; -unsigned int mobile_receives =3D 0; -unsigned int mobile_connect_done =3D 0; -unsigned int mobile_disconnect_done =3D 1; -SmlTransport *mobile_tsp =3D NULL; = -void obex_server_send(SmlLink *link, const char *data, unsigned int size) -{ - SmlError *error =3D NULL; - - SmlTransportData *tsp_data =3D smlTransportDataNew(g_strdup(data), size, = SML_MIMETYPE_XML, FALSE, &error); - fail_unless(tsp_data !=3D NULL, NULL); - fail_unless(error =3D=3D NULL, NULL); - - fail_unless(smlTransportSend(mobile_tsp, link, tsp_data, &error), smlErro= rPrint(&error)); - fail_unless(error =3D=3D NULL, NULL); - = - smlTransportDataDeref(tsp_data); -} - -SmlBool equal_messages(const char *now, unsigned int size, const char *exp= ected) -{ - smlTrace(TRACE_ENTRY, "%s", __func__); - GRegex *regex =3D NULL; - GError *error =3D NULL; - char *now_1; - char *now_2; - char *org_1; - char *org_2; - - /* ignore SessionID */ - - regex =3D g_regex_new("<SessionID>[0-9]+</SessionID>", 0, 0, &error); - fail_unless(regex !=3D NULL, "SessionID filter cannot be established."); - - now_1 =3D g_regex_replace_literal(regex, now, size, - 0, "<SessionID>2346</SessionID>", 0, - &error); - fail_unless(now_1 !=3D NULL, "Cannot filter SessionID from new message."); - - org_1 =3D g_regex_replace_literal(regex, expected, strlen(expected), - 0, "<SessionID>2346</SessionID>", 0, - &error); - fail_unless(org_1 !=3D NULL, "Cannot filter SessionID from original messa= ge."); - - g_regex_unref(regex); - - /* ignore trailing whitespaces */ - - regex =3D g_regex_new("[\\s\\n]*$", G_REGEX_DOLLAR_ENDONLY, 0, &error); - fail_unless(regex !=3D NULL, "Trailing whitespace filter cannot be establ= ished."); - - now_2 =3D g_regex_replace_literal(regex, now_1, strlen(now_1), 0, "", 0, = &error); - fail_unless(now_2 !=3D NULL, "Cannot filter trailing whitespaces from new= message."); - smlSafeCFree(&now_1); - - org_2 =3D g_regex_replace_literal(regex, org_1, strlen(org_1), 0, "", 0, = &error); - fail_unless(org_2 !=3D NULL, "Cannot filter trailing whitespaces from ori= ginal message."); - smlSafeCFree(&org_1); - - g_regex_unref(regex); - - /* ignore newlines (not carriage return) */ - - regex =3D g_regex_new(">\\n<", 0, 0, &error); - fail_unless(regex !=3D NULL, "Useless newline filter cannot be establishe= d."); - - now_1 =3D g_regex_replace_literal(regex, now_2, strlen(now_2), 0, "><", 0= , &error); - fail_unless(now_1 !=3D NULL, "Cannot filter useless newlines from new mes= sage."); - smlSafeCFree(&now_2); - - org_1 =3D g_regex_replace_literal(regex, org_2, strlen(org_2), 0, "><", 0= , &error); - fail_unless(org_1 !=3D NULL, "Cannot filter useless newlines from origina= l message."); - smlSafeCFree(&org_2); - - g_regex_unref(regex); - - /* ignore numbered next values */ - - regex =3D g_regex_new("<Next xmlns=3D\"syncml:metinf\">[0-9]+</Next>", 0,= 0, &error); - fail_unless(regex !=3D NULL, "Numbered Next filter cannot be established.= "); - - now_2 =3D g_regex_replace_literal(regex, now_1, strlen(now_1), - 0, "<Next xmlns=3D\"syncml:metinf\">1357</Next>", 0, &error); - fail_unless(now_2 !=3D NULL, "Cannot filter numbered Next from new messag= e."); - smlSafeCFree(&now_1); - - org_2 =3D g_regex_replace_literal(regex, org_1, strlen(org_1), - 0, "<Next xmlns=3D\"syncml:metinf\">1357</Next>", 0, &error); - fail_unless(org_2 !=3D NULL, "Cannot filter numbered Next from original m= essage."); - smlSafeCFree(&org_1); - - g_regex_unref(regex); - - /* ignore timestamp next values */ - - regex =3D g_regex_new("<Next xmlns=3D\"syncml:metinf\">[0-9]{8}T[0-9]{6}Z= </Next>", 0, 0, &error); - fail_unless(regex !=3D NULL, "Timestamp Next filter cannot be established= ."); - - now_1 =3D g_regex_replace_literal(regex, now_2, strlen(now_2), - 0, "<Next xmlns=3D\"syncml:metinf\">20080101T140000Z</Next>", 0, &error= ); - fail_unless(now_1 !=3D NULL, "Cannot filter timestamp Next from new messa= ge."); - smlSafeCFree(&now_2); - - org_1 =3D g_regex_replace_literal(regex, org_2, strlen(org_2), - 0, "<Next xmlns=3D\"syncml:metinf\">20080101T140000Z</Next>", 0, &error= ); - fail_unless(org_1 !=3D NULL, "Cannot filter timestamp Next from original = message."); - smlSafeCFree(&org_2); - - g_regex_unref(regex); - - /* compare strings */ - - SmlBool notEqual =3D strcmp(now_1, org_1); - - if (notEqual) - smlTrace(TRACE_INTERNAL, "%s: FAILED\n=3D=3D>%s<=3D=3D\n-----\n=3D=3D>%s= <=3D=3D", __func__, now_1, org_1); - smlSafeCFree(&now_1); - smlSafeCFree(&org_1); - - smlTrace(TRACE_EXIT, "%s - %d", __func__, (!notEqual)); - return (!notEqual); -} - -/* This callback function makes the real work. */ +/* supported messages */ = extern const char *libsyncml_msg_notification; extern const char *mobile_msg_alert; @@ -177,531 +49,37 @@ extern const char *mobile_msg_map; extern const char *libsyncml_msg_end; = -SmlBool _recv_server_event(SmlTransport *tsp, SmlLink *link, SmlTransportE= ventType type, SmlTransportData *data, SmlError *error, void *userdata) -{ - smlTrace(TRACE_ENTRY, "%s()", __func__); - = - switch (type) { - case SML_TRANSPORT_EVENT_DATA: - mobile_receives++; - - if (mobile_state =3D=3D TEST_MOBILE_STATE_WAIT_FOR_NOTIFICATION) { - smlTrace(TRACE_INTERNAL, "%s: mobile received notification", __func__); - if (!equal_messages(data->data, data->size, libsyncml_msg_notification= )) - fail("wrong notification message"); - mobile_state =3D TEST_MOBILE_STATE_WAIT_FOR_ALERT; - obex_server_send(link, mobile_msg_alert, strlen(mobile_msg_alert)); - } else if (mobile_state =3D=3D TEST_MOBILE_STATE_WAIT_FOR_ALERT) { - smlTrace(TRACE_INTERNAL, "%s: mobile received alert", __func__); - if (!equal_messages(data->data, data->size, libsyncml_msg_alert)) - fail("wrong alert message"); - mobile_state =3D TEST_MOBILE_STATE_WAIT_FOR_SYNC; - obex_server_send(link, mobile_msg_sync, strlen(mobile_msg_sync)); - } else if (mobile_state =3D=3D TEST_MOBILE_STATE_WAIT_FOR_SYNC) { - smlTrace(TRACE_INTERNAL, "%s: mobile received sync", __func__); - if (!equal_messages(data->data, data->size, libsyncml_msg_sync)) - fail("wrong sync message"); - mobile_state =3D TEST_MOBILE_STATE_WAIT_FOR_END; - obex_server_send(link, mobile_msg_map, strlen(mobile_msg_map)); - } else if (mobile_state =3D=3D TEST_MOBILE_STATE_WAIT_FOR_END) { - smlTrace(TRACE_INTERNAL, "%s: mobile received end", __func__); - if (!equal_messages(data->data, data->size, libsyncml_msg_end)) - fail("wrong end message"); - mobile_state =3D TEST_MOBILE_STATE_FINISHED; - smlTransportDisconnect(mobile_tsp, link, &error); - } else { - fail("Unexpected mobile state."); - } - break; - case SML_TRANSPORT_EVENT_CONNECT_DONE: - g_atomic_int_inc(&mobile_connect_done); - mobile_state =3D TEST_MOBILE_STATE_CONNECTED; - fail_unless(libsyncml_msg_notification !=3D NULL, "Missing notification= message"); - mobile_state =3D TEST_MOBILE_STATE_WAIT_FOR_NOTIFICATION; - break; - case SML_TRANSPORT_EVENT_DISCONNECT_DONE: - g_atomic_int_inc(&mobile_disconnect_done); - mobile_state =3D TEST_MOBILE_STATE_DISCONNECTED; - break; - default: - fail(NULL); - } - = - smlTrace(TRACE_EXIT, "%s()", __func__); - return TRUE; -} - -void obex_server_connect() -{ - SmlError *error =3D NULL; - mobile_tsp =3D smlTransportNew(SML_TRANSPORT_OBEX_SERVER, &error); - = - fail_unless(smlTransportSetConfigOption(mobile_tsp, "PORT", OBEX_PORT, &e= rror), NULL); - fail_unless(smlTransportSetConnectionType(mobile_tsp, SML_TRANSPORT_CONNE= CTION_TYPE_NET, &error), NULL); - - fail_unless(smlTransportRunAsync(mobile_tsp, &error), NULL); - fail_unless(error =3D=3D NULL, NULL); - = - fail_unless(smlTransportInitialize(mobile_tsp, &error), NULL); - - smlTransportSetEventCallback(mobile_tsp, _recv_server_event, GINT_TO_POIN= TER(1)); -} - -void obex_server_disconnect() -{ - SmlError *error =3D NULL; - while (mobile_state !=3D TEST_MOBILE_STATE_DISCONNECTED) - { - usleep(100); - } - smlTransportStop(mobile_tsp); - fail_unless(smlTransportFinalize(mobile_tsp, &error), NULL); - smlTransportFree(mobile_tsp); -} - -/* ************************************ - * *********** OBEX CLIENT ************ - * ************************************ - * (libsyncml user) - */ - -#include <libsyncml/objects/sml_ds_server.h> -#include <libsyncml/objects/sml_auth.h> -#include <libsyncml/objects/sml_devinf_obj.h> +/* libsyncml status variables */ = typedef enum { TEST_LIBSYNCML_STATE_UNKNOWN, TEST_LIBSYNCML_STATE_CONNECTED, TEST_LIBSYNCML_STATE_WAIT_FOR_ALERT, + TEST_LIBSYNCML_STATE_RECEIVED_DATASTORE_SESSION, + TEST_LIBSYNCML_STATE_RECEIVED_ALERT, TEST_LIBSYNCML_STATE_WAIT_FOR_SYNC, TEST_LIBSYNCML_STATE_WAIT_FOR_MAP, TEST_LIBSYNCML_STATE_FINISHED, TEST_LIBSYNCML_STATE_DISCONNECTED, TEST_LIBSYNCML_STATE_FAILED } SmlTestLibsyncmlStateType; + SmlTestLibsyncmlStateType libsyncml_state =3D TEST_LIBSYNCML_STATE_UNKNOWN; = -typedef struct managerTracker { - SmlManager *manager; - SmlSession *session; - SmlDsSession *dssessions[NUM_SESSIONS]; - SmlDsServer *ds[2]; -} managerTracker; - -SmlTransport *libsyncml_tsp =3D NULL; -managerTracker *libsyncml_tracker =3D NULL; -SmlManager *libsyncml_manager =3D NULL; - -unsigned int libsyncml_san_alerts_received =3D 0; -unsigned int libsyncml_sans_received =3D 0; -unsigned int libsyncml_alerts_received =3D 0; -unsigned int libsyncml_alert_replies_received =3D 0; -unsigned int libsyncml_syncs_received =3D 0; -unsigned int libsyncml_adds_received =3D 0; -unsigned int libsyncml_sync_replies_received =3D 0; -unsigned int libsyncml_add_replies_received =3D 0; - -/* This is a sync test only and not a test of large object support. - * Therefore all commands must be put into one message. - * This means one message per package. - */ -int num_changes; -SmlError *eventError =3D NULL; - -unsigned int transport_errors =3D 0; -unsigned int num_sessions =3D 0; -unsigned int num_finals =3D 0; -unsigned int num_end =3D 0; -unsigned int session_errors =3D 0; - -static void _manager_event(SmlManager *manager, SmlManagerEventType type, = SmlSession *session, SmlError *error, void *userdata) -{ - smlTrace(TRACE_ENTRY, "%s(%p, %i, %p, %p, %p)", __func__, manager, type, = session, error, userdata); - managerTracker *tracker =3D userdata; - smlAssert(manager); - smlAssert(userdata); - = - switch (type) { - case SML_MANAGER_SESSION_ESTABLISHED: - case SML_MANAGER_SESSION_FLUSH: - break; - case SML_MANAGER_CONNECT_DONE: - libsyncml_state =3D TEST_LIBSYNCML_STATE_CONNECTED; - break; - case SML_MANAGER_DISCONNECT_DONE: - libsyncml_state =3D TEST_LIBSYNCML_STATE_DISCONNECTED; - break; - case SML_MANAGER_TRANSPORT_ERROR: - smlTrace(TRACE_INTERNAL, "%s - error: %s", __func__, smlErrorPrint(&err= or)); - eventError =3D error; - smlErrorRef(&eventError); - transport_errors++; - break; - case SML_MANAGER_SESSION_NEW: - smlAssert(session); - tracker->session =3D session; - num_sessions++; - smlSessionRef(session); - break; - case SML_MANAGER_SESSION_FINAL: - num_finals++; - break; - case SML_MANAGER_SESSION_END: - num_end++; - break; - case SML_MANAGER_SESSION_ERROR: - case SML_MANAGER_SESSION_WARNING: - smlTrace(TRACE_INTERNAL, "%s - error: %s", __func__, smlErrorPrint(&err= or)); - eventError =3D error; - smlErrorRef(&eventError); - session_errors++; - break; - default: - fail(); - break; - } - = - smlTrace(TRACE_EXIT, "%s", __func__); -} - -static void _recv_init_alert(SmlDsSession *dsession, void *userdata) -{ - smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, dsession, userdata); - managerTracker *tracker =3D userdata; - - fail_unless(tracker =3D=3D libsyncml_tracker, "wrong tracker in userdata"= ); - = - if (tracker->ds[0] =3D=3D smlDsSessionGetServer(dsession)) - tracker->dssessions[0] =3D dsession; - else if (tracker->ds[1] =3D=3D smlDsSessionGetServer(dsession)) - tracker->dssessions[1] =3D dsession; - else if (tracker->ds[2] =3D=3D smlDsSessionGetServer(dsession)) - tracker->dssessions[2] =3D dsession; - = - smlDsSessionRef(dsession); - = - libsyncml_san_alerts_received++; - = - smlTrace(TRACE_EXIT, "%s", __func__); -} +/* external parameters */ = extern unsigned int max_msg_size; extern unsigned int max_obj_size; -void obex_client_connect() -{ - SmlError *error =3D NULL; - - libsyncml_tsp =3D smlTransportNew(SML_TRANSPORT_OBEX_CLIENT, &error); - fail_unless( - smlTransportSetConnectionType(libsyncml_tsp, SML_TRANSPORT_CONNECTION_TY= PE_NET, &error), - smlErrorPrint(&error)); - fail_unless( - smlTransportSetConfigOption(libsyncml_tsp, "PORT", OBEX_PORT, &error), - smlErrorPrint(&error)); - fail_unless( - smlTransportSetConfigOption(libsyncml_tsp, "URL", "127.0.0.1", &error), - smlErrorPrint(&error)); - = - libsyncml_tracker =3D g_malloc0(sizeof(managerTracker)); - libsyncml_manager =3D libsyncml_tracker->manager =3D smlManagerNew(libsyn= cml_tsp, &error); - smlManagerSetEventCallback(libsyncml_tracker->manager, _manager_event, li= bsyncml_tracker); - smlManagerSetLocalMaxMsgSize(libsyncml_tracker->manager, max_msg_size); - smlManagerSetLocalMaxObjSize(libsyncml_tracker->manager, max_obj_size); - = - fail_unless(smlManagerStart(libsyncml_manager, &error), NULL); - fail_unless(error =3D=3D NULL, NULL); - - fail_unless(smlTransportInitialize(libsyncml_tsp, &error), smlErrorPrint(= &error)); - - /* The authenticator */ - SmlAuthenticator *auth =3D smlAuthNew(&error); - smlAuthSetEnable(auth, FALSE); - smlAuthRegister(auth, libsyncml_manager, &error); - = - fail_unless(smlTransportConnect(libsyncml_tsp, &error), NULL); - fail_unless(error =3D=3D NULL, NULL); -} = extern const char *target; extern const char *source; extern const char *locVcal; extern const char *locVcard; -void obex_client_send_san() -{ - SmlError *error =3D NULL; - = - /* actually we only test server alerted syncs (SyncML 1.1) */ - SmlNotification *san =3D smlNotificationNew(SML_SAN_VERSION_11, SML_SAN_U= IMODE_USER, SML_SAN_INITIATOR_SERVER, 65535, source, target, SML_MIMETYPE_X= ML, &error); - fail_unless(san !=3D NULL, NULL); - fail_unless(error =3D=3D NULL, NULL); - smlNotificationSetManager(san, libsyncml_manager); = - if (locVcard) - { - SmlLocation *loc1 =3D smlLocationNew(locVcard, NULL, &error); - fail_unless(loc1 !=3D NULL, NULL); - fail_unless(error =3D=3D NULL, NULL); - libsyncml_tracker->ds[0] =3D smlDsServerNew(SML_ELEMENT_TEXT_VCARD, loc1= , &error); - smlDsServerSetConnectCallback(libsyncml_tracker->ds[0], _recv_init_alert= , libsyncml_tracker); - smlDsServerRegister(libsyncml_tracker->ds[0], libsyncml_manager, &error); - smlLocationUnref(loc1); - fail_unless(smlDsServerAddSan(libsyncml_tracker->ds[0], san, &error), NU= LL); - fail_unless(error =3D=3D NULL, NULL); - } +extern const char *mobile_name; = - if (locVcal) - { - SmlLocation *loc2 =3D smlLocationNew(locVcal, NULL, &error); - fail_unless(loc2 !=3D NULL, NULL); - fail_unless(error =3D=3D NULL, NULL); - libsyncml_tracker->ds[1] =3D smlDsServerNew(SML_ELEMENT_TEXT_VCAL, loc2,= &error); - smlDsServerSetConnectCallback(libsyncml_tracker->ds[1], _recv_init_alert= , libsyncml_tracker); - smlDsServerRegister(libsyncml_tracker->ds[1], libsyncml_manager, &error); - smlLocationUnref(loc2); - fail_unless(smlDsServerAddSan(libsyncml_tracker->ds[1], san, &error), NU= LL); - fail_unless(error =3D=3D NULL, NULL); - } - = - fail_unless(smlNotificationSend(san, libsyncml_tsp, &error), NULL); - fail_unless(error =3D=3D NULL, NULL); - = - while (num_sessions < 2) { - smlManagerDispatch(libsyncml_manager); - usleep(100); - fail_unless(eventError =3D=3D NULL, smlErrorPrint(&eventError)); - } - = - fail_unless(libsyncml_tracker !=3D NULL, NULL); - - libsyncml_state =3D TEST_LIBSYNCML_STATE_WAIT_FOR_ALERT; -} - -static SmlBool _recv_alert(SmlDsSession *dsession, SmlAlertType type, cons= t char *last, const char *next, void *userdata) -{ - smlTrace(TRACE_ENTRY, "%s(%p, %i, %s, %s, %p)", __func__, dsession, type,= last, next, userdata); - - /* The test performs a slow sync alert */ - = - if (type !=3D SML_ALERT_SLOW_SYNC) - fail_unless(last !=3D NULL, NULL); - - fail_unless(next !=3D NULL, NULL); - = - libsyncml_alerts_received++; - = - smlTrace(TRACE_EXIT, "%s", __func__); - if (type !=3D SML_ALERT_SLOW_SYNC) - return FALSE; - else - return TRUE; -} - -static void _alert_reply(SmlSession *dsession, SmlStatus *status, void *us= erdata) -{ - smlTrace(TRACE_ENTRY, "%s()", __func__); - = - fail_unless(status !=3D NULL, NULL); - = - if (GPOINTER_TO_INT(userdata) =3D=3D 1) { - fail_unless(smlStatusGetClass(status) =3D=3D SML_ERRORCLASS_SUCCESS, NUL= L); - } else { - fail_unless(smlStatusGetClass(status) =3D=3D SML_ERRORCLASS_FATAL, NULL); - } - = - libsyncml_alert_replies_received++; - = - smlTrace(TRACE_EXIT, "%s", __func__); -} - -SmlDevInfAgent *libsyncml_agent =3D NULL; -void obex_client_send_alert() -{ - SmlError *error =3D NULL; - - if (locVcard) - { - smlDsSessionGetAlert(libsyncml_tracker->dssessions[0], _recv_alert, GINT= _TO_POINTER(1)); - smlDsSessionSendAlert(libsyncml_tracker->dssessions[0], SML_ALERT_SLOW_S= YNC, "last", "12345", _alert_reply, GINT_TO_POINTER(1), &error); - } - if (locVcal) - { - smlDsSessionGetAlert(libsyncml_tracker->dssessions[1], _recv_alert, GINT= _TO_POINTER(1)); - smlDsSessionSendAlert(libsyncml_tracker->dssessions[1], SML_ALERT_SLOW_S= YNC, "last", "12345", _alert_reply, GINT_TO_POINTER(1), &error); - } - - extern unsigned int max_obj_size; - extern SmlBool utc; - - SmlDevInf *devinf =3D smlDevInfNew("LibSyncmML", SML_DEVINF_DEVTYPE_WORKS= TATION, &error); - smlDevInfSetSupportsNumberOfChanges(devinf, TRUE); - smlDevInfSetSupportsLargeObjs(devinf, TRUE); - smlDevInfSetSupportsUTC(devinf, TRUE); - libsyncml_agent =3D smlDevInfAgentNew(devinf, &error); - smlDevInfAgentRegister(libsyncml_agent, libsyncml_manager, &error); - fail_unless(smlDevInfAgentRequestDevInf(libsyncml_agent, libsyncml_tracke= r->session, &error), NULL); - - fail_unless(libsyncml_tracker->session !=3D NULL, NULL); - fail_unless(smlSessionFlush(libsyncml_tracker->session, TRUE, &error), NU= LL); - - libsyncml_state =3D TEST_LIBSYNCML_STATE_WAIT_FOR_SYNC; - - while(mobile_state =3D=3D TEST_MOBILE_STATE_WAIT_FOR_ALERT) - { - smlManagerDispatch(libsyncml_manager); - usleep(100); - fail_unless(eventError =3D=3D NULL, smlErrorPrint(&eventError)); - } -} - -static void _recv_sync(SmlDsSession *dsession, unsigned int numChanges, vo= id *userdata) -{ - smlTrace(TRACE_ENTRY, "%s()", __func__); - - SmlDevInf *devinf =3D smlDevInfAgentGetDevInf(libsyncml_agent); - fail_unless(devinf !=3D NULL, NULL); - if (smlDevInfSupportsNumberOfChanges(devinf)) = - fail_unless(numChanges =3D=3D num_changes, NULL); - libsyncml_syncs_received++; - = - smlTrace(TRACE_EXIT, "%s", __func__); -} - -static SmlBool _recv_changes(SmlDsSession *dsession, SmlChangeType type, c= onst char *uid, char *data, unsigned int size, const char *contenttype, voi= d *userdata, SmlError **error) -{ - smlTrace(TRACE_ENTRY, "%s(%p, %i, %s, %s, %i, %s, %p, %p)", __func__, dse= ssion, type, uid, data, size, contenttype, userdata, error); - - if (type =3D=3D SML_CHANGE_ADD) { - libsyncml_adds_received++; - } else if (type =3D=3D SML_CHANGE_REPLACE) { - fail("Replace during SLOW-SYNC received"); - } else if (type =3D=3D SML_CHANGE_DELETE) { - fail("Delete during SLOW-SYNC received"); - } else - fail(NULL); - = - smlTrace(TRACE_EXIT, "%s", __func__); - return TRUE; -} - -static void _sync_reply(SmlSession *dsession, SmlStatus *status, void *use= rdata) -{ - smlTrace(TRACE_ENTRY, "%s()", __func__); - = - fail_unless(status !=3D NULL, NULL); - = - if (GPOINTER_TO_INT(userdata) =3D=3D 1) { - fail_unless(smlStatusGetClass(status) =3D=3D SML_ERRORCLASS_SUCCESS, NUL= L); - } else { - fail_unless(smlStatusGetClass(status) =3D=3D SML_ERRORCLASS_FATAL, NULL); - } - = - libsyncml_sync_replies_received++; - = - smlTrace(TRACE_EXIT, "%s", __func__); -} - -static void _add_reply(SmlDsSession *session, SmlStatus *status, const cha= r *newuid, void *userdata) -{ - smlTrace(TRACE_ENTRY, "%s(%p, %p, %s, %p)", __func__, session, status, ne= wuid, userdata); - = - fail_unless(status !=3D NULL, NULL); - fail_unless(smlStatusGetClass(status) =3D=3D SML_ERRORCLASS_SUCCESS, NULL= ); - fail_unless(GPOINTER_TO_INT(userdata) =3D=3D 1 || GPOINTER_TO_INT(userdat= a) =3D=3D 2, NULL); - - if (GPOINTER_TO_INT(userdata) =3D=3D 1) - fail_unless(!strcmp(newuid, "newuid"), NULL); - else - fail_unless(newuid =3D=3D NULL, NULL); - = - libsyncml_add_replies_received++; - - smlTrace(TRACE_EXIT, "%s", __func__); -} - -void obex_client_send_sync() -{ - unsigned int datastores =3D 0; - int num_items =3D 4; - num_changes =3D num_items; - SmlError *error =3D NULL; - - if (locVcard) { - smlDsSessionGetSync(libsyncml_tracker->dssessions[0], _recv_sync, GINT_T= O_POINTER(1)); - smlDsSessionGetChanges(libsyncml_tracker->dssessions[0], _recv_changes, = GINT_TO_POINTER(1)); - datastores++; - } - if (locVcal) { - smlDsSessionGetSync(libsyncml_tracker->dssessions[1], _recv_sync, GINT_T= O_POINTER(1)); - smlDsSessionGetChanges(libsyncml_tracker->dssessions[1], _recv_changes, = GINT_TO_POINTER(1)); - datastores++; - } - = - while (libsyncml_syncs_received < datastores || - libsyncml_adds_received < num_items * datastores) - { - if (locVcard) - smlDsSessionDispatch(libsyncml_tracker->dssessions[0]); - if (locVcal) - smlDsSessionDispatch(libsyncml_tracker->dssessions[1]); - = - smlManagerDispatch(libsyncml_manager); - usleep(100); - fail_unless(eventError =3D=3D NULL, smlErrorPrint(&eventError)); - } - - SmlDevInf *devinf =3D smlDevInfAgentGetDevInf(libsyncml_agent); - fail_unless(devinf !=3D NULL, NULL); - smlSessionUseNumberOfChanges(libsyncml_tracker->session, smlDevInfSupport= sNumberOfChanges(devinf)); - - const char *content_types[] =3D {SML_ELEMENT_TEXT_VCARD, SML_ELEMENT_TEXT= _VCAL, SML_ELEMENT_TEXT_PLAIN}; - int k =3D 0; - for (k =3D 0; k < datastores; k++) - { - smlDsSessionSendSync(libsyncml_tracker->dssessions[k], 0, _sync_reply, G= INT_TO_POINTER(1), &error); - - //int i =3D 0; = - //for (i =3D 0; i < num_items; i++) { - // fail_unless(smlDsSessionQueueChange(libsyncml_tracker->dssessions[k],= SML_CHANGE_ADD, "uid", "data", 4, content_types[k], _add_reply, GINT_TO_PO= INTER(1), &error), NULL); - // fail_unless(error =3D=3D NULL, NULL); - //} - - smlDsSessionCloseSync(libsyncml_tracker->dssessions[k], &error); - } - = - fail_unless(smlSessionFlush(libsyncml_tracker->session, TRUE, &error), NU= LL); - - libsyncml_state =3D TEST_LIBSYNCML_STATE_WAIT_FOR_MAP; - - while(mobile_state =3D=3D TEST_MOBILE_STATE_WAIT_FOR_SYNC) - { - smlManagerDispatch(libsyncml_manager); - usleep(100); - fail_unless(eventError =3D=3D NULL, smlErrorPrint(&eventError)); - } -} - = -void obex_client_send_end() -{ - while(mobile_state =3D=3D TEST_MOBILE_STATE_WAIT_FOR_END) - { - smlManagerDispatch(libsyncml_manager); - usleep(100); - fail_unless(eventError =3D=3D NULL, smlErrorPrint(&eventError)); - } - libsyncml_state =3D TEST_LIBSYNCML_STATE_FINISHED; -} - -void obex_client_disconnect() -{ - SmlError *error =3D NULL; - smlTransportDisconnect(libsyncml_tsp, NULL, &error); - while (libsyncml_state !=3D TEST_LIBSYNCML_STATE_DISCONNECTED) - { - smlManagerDispatch(libsyncml_manager); - usleep(100); - fail_unless(eventError =3D=3D NULL, smlErrorPrint(&eventError)); - } -} +#include "obex_mobile_ds_server.c" +#include "obex_mobile_ds_client.c" = /* ************************************ * *********** MOBILE TEST ************ @@ -711,21 +89,19 @@ START_TEST (test_mobile) { /* start the server (this is the mobile) */ - obex_server_connect(); + obex_mobile_connect(); = /* start the client (this is libsyncml) */ - obex_client_connect(); - obex_client_send_san(); - obex_client_send_alert(); - obex_client_send_sync(); - obex_client_send_end(); + obex_libsyncml_connect(); + obex_libsyncml_send_san(); + obex_libsyncml_send_alert(); + obex_libsyncml_send_sync(); + obex_libsyncml_send_end(); = - obex_server_disconnect(); - obex_client_disconnect(); + obex_mobile_disconnect(); + obex_libsyncml_disconnect(); } END_TEST - -extern const char *mobile_name; = Suite *get_test_suite(void) { |