Changeset 139

Show
Ignore:
Timestamp:
04/21/06 00:02:28 (3 years ago)
Author:
abauer
Message:

Added a new regression for better testing deletes

Fixed some unit tests

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/6620-branch/tests/check_ds.c

    r127 r139  
    4747 
    4848gint data_received = 0; 
    49 unsigned int init_alerts_received = 0; 
    50 unsigned int alerts_received = 0; 
    51 unsigned int syncs_received = 0; 
    52 unsigned int sync_ends_received = 0; 
    53 unsigned int changes_received = 0; 
    54 unsigned int replies_received = 0; 
    55 unsigned int adds_received = 0; 
    56 unsigned int add_replies_received = 0; 
    57 unsigned int deletes_received = 0; 
    58 unsigned int delete_replies_received = 0; 
    59 unsigned int modifies_received = 0; 
    60 unsigned int modify_replies_received = 0; 
    61 unsigned int session_ends = 0; 
     49int init_alerts_received = 0; 
     50int alerts_received = 0; 
     51int syncs_received = 0; 
     52int sync_ends_received = 0; 
     53int changes_received = 0; 
     54int replies_received = 0; 
     55int adds_received = 0; 
     56int add_replies_received = 0; 
     57int deletes_received = 0; 
     58int delete_replies_received = 0; 
     59int modifies_received = 0; 
     60int modify_replies_received = 0; 
     61int session_ends = 0; 
    6262 
    6363SmlTransportData *to_session = NULL; 
     
    225225         
    226226        corr->dsession = dsession; 
    227         init_alerts_received++
     227        g_atomic_int_add(&init_alerts_received, 1)
    228228        smlDsSessionRef(dsession); 
    229229         
     
    238238        fail_unless(next != NULL, NULL); 
    239239         
    240         alerts_received++
     240        g_atomic_int_add(&alerts_received, 1)
    241241         
    242242        smlTrace(TRACE_EXIT, "%s", __func__); 
     
    244244} 
    245245 
    246 void _recv_sync(SmlDsSession *dsession, unsigned int numChanges, void *userdata) 
     246static void _recv_sync(SmlDsSession *dsession, unsigned int numChanges, void *userdata) 
    247247{ 
    248248        smlTrace(TRACE_ENTRY, "%s()", __func__); 
    249249         
    250         syncs_received++
     250        g_atomic_int_add(&syncs_received, 1)
    251251                 
    252252        smlTrace(TRACE_EXIT, "%s", __func__); 
    253253} 
    254254 
    255 SmlBool _recv_changes(SmlDsSession *dsession, SmlChangeType type, const char *uid, char *data, unsigned int size, SmlContentType contenttype, void *userdata, SmlError **error) 
     255static SmlBool _recv_changes(SmlDsSession *dsession, SmlChangeType type, const char *uid, char *data, unsigned int size, SmlContentType contenttype, void *userdata, SmlError **error) 
    256256{ 
    257257        smlTrace(TRACE_ENTRY, "%s(%p, %i, %s, %s, %i, %i, %p, %p)", __func__, dsession, type, uid, data, size, contenttype, userdata, error); 
    258258 
    259259        if (type == SML_CHANGE_ADD) { 
    260                 adds_received++
    261                 fail_unless(!strcmp(uid, "uid"), NULL); 
    262                 fail_unless(!strcmp(data, "data"), NULL); 
    263                 fail_unless(size == 5, NULL); 
     260                g_atomic_int_add(&adds_received, 1)
     261                g_assert(!strcmp(uid, "uid")); 
     262                g_assert(!strncmp(data, "data", size)); 
     263                g_assert(size == 4); 
    264264        } else if (type == SML_CHANGE_REPLACE) { 
    265                 modifies_received++
    266                 fail_unless(!strcmp(uid, "uid"), NULL); 
    267                 fail_unless(!strcmp(data, "newdata"), NULL); 
    268                 fail_unless(size == 8, NULL); 
     265                g_atomic_int_add(&modifies_received, 1)
     266                g_assert(!strcmp(uid, "uid")); 
     267                g_assert(!strncmp(data, "newdata", size)); 
     268                g_assert(size == 7); 
    269269        } else if (type == SML_CHANGE_DELETE) { 
    270                 deletes_received++
    271                 fail_unless(!strcmp(uid, "uid"), NULL); 
    272                 fail_unless(!data, NULL); 
    273                 fail_unless(size == 0, NULL); 
     270                g_atomic_int_add(&deletes_received, 1)
     271                g_assert(!strcmp(uid, "uid")); 
     272                g_assert(!data); 
     273                g_assert(size == 0); 
    274274        } else 
    275275                fail(NULL); 
     
    278278        return TRUE; 
    279279} 
    280  
    281 /*static void _map_reply(SmlSession *session, SmlStatus *status, void *userdata) 
    282 { 
    283         smlTrace(TRACE_ENTRY, "%s()", __func__); 
    284          
    285         fail_unless(status != NULL, NULL); 
    286         fail_unless(userdata == GINT_TO_POINTER(1), NULL); 
    287         fail_unless(smlStatusGetClass(status) == SML_ERRORCLASS_SUCCESS, NULL); 
    288          
    289         smlTrace(TRACE_EXIT, "%s", __func__); 
    290 } 
    291  
    292 SmlBool _recv_client_changes(SmlDsServer *server, SmlChangeType type, const char *uid, char *data, unsigned int size, SmlContentType contenttype, void *userdata, SmlError **error) 
    293 { 
    294         smlTrace(TRACE_ENTRY, "%s(%p, %i, %s, %s, %i, %i, %p, %p)", __func__, server, type, uid, data, size, contenttype, userdata, error); 
    295          
    296         if (!type) { 
    297                 fail_unless(!uid, NULL); 
    298                 fail_unless(!data, NULL); 
    299                 client_changes_end = TRUE; 
    300                  
    301                 if (client_send_map) { 
    302                         fail_unless(smlDsServerCloseMap(server, _map_reply, GINT_TO_POINTER(1), error), NULL); 
    303                 } 
    304         } else if (type == SML_CHANGE_ADD) { 
    305                 clientrecvchanges++; 
    306                 fail_unless(!strcmp(uid, "uid"), NULL); 
    307                 fail_unless(!strcmp(data, "data"), NULL); 
    308                 fail_unless(size == 5, NULL); 
    309                 if (client_send_map) { 
    310                         fail_unless(smlDsServerQueueMap(server, uid, "newuid", error), NULL); 
    311                 } 
    312         } else if (type == SML_CHANGE_REPLACE) { 
    313                 clientrecvchanges++; 
    314                 fail_unless(!strcmp(uid, "uid"), NULL); 
    315                 fail_unless(!strcmp(data, "newdata"), NULL); 
    316                 fail_unless(size == 8, NULL); 
    317         } else if (type == SML_CHANGE_DELETE) { 
    318                 clientrecvchanges++; 
    319                 fail_unless(!strcmp(uid, "uid"), NULL); 
    320                 fail_unless(!data, NULL); 
    321                 fail_unless(size == 0, NULL); 
    322         } else 
    323                 fail(NULL); 
    324          
    325         smlTrace(TRACE_EXIT, "%s", __func__); 
    326         return TRUE; 
    327 }*/ 
    328280 
    329281static void _alert_reply(SmlSession *dsession, SmlStatus *status, void *userdata) 
     
    339291        } 
    340292         
    341         replies_received++
     293        g_atomic_int_add(&replies_received, 1)
    342294         
    343295        smlTrace(TRACE_EXIT, "%s", __func__); 
     
    356308        } 
    357309         
    358         replies_received++
     310        g_atomic_int_add(&replies_received, 1)
    359311         
    360312        smlTrace(TRACE_EXIT, "%s", __func__); 
     
    374326                fail_unless(newuid == NULL, NULL); 
    375327         
    376         add_replies_received++
     328        g_atomic_int_add(&add_replies_received, 1)
    377329 
    378330        smlTrace(TRACE_EXIT, "%s", __func__); 
     
    389341        fail_unless(newuid == NULL, NULL); 
    390342         
    391         modify_replies_received++
     343        g_atomic_int_add(&modify_replies_received, 1)
    392344 
    393345        smlTrace(TRACE_EXIT, "%s", __func__); 
     
    404356        fail_unless(newuid == NULL, NULL); 
    405357         
    406         delete_replies_received++
    407  
     358        g_atomic_int_add(&delete_replies_received, 1)
     359         
    408360        smlTrace(TRACE_EXIT, "%s", __func__); 
    409361} 
     
    416368        fail_unless(smlStatusGetClass(status) == SML_ERRORCLASS_SUCCESS, NULL); 
    417369         
    418         replies_received++
     370        g_atomic_int_add(&replies_received, 1)
    419371         
    420372        smlTrace(TRACE_EXIT, "%s", __func__); 
    421373} 
    422  
    423 /*static void _server_sent_change_add(SmlDsServer *server, SmlStatus *status, const char *newuid, void *userdata) 
    424 { 
    425         smlTrace(TRACE_ENTRY, "%s(%p, %p, %s, %p)", __func__, server, status, newuid, userdata); 
    426          
    427         fail_unless(status != NULL, NULL); 
    428         fail_unless(GPOINTER_TO_INT(userdata) == 1, NULL); 
    429         fail_unless(smlStatusGetClass(status) == SML_ERRORCLASS_SUCCESS, NULL); 
    430         fail_unless(!strcmp(newuid, "newuid"), NULL); 
    431  
    432         servercommitreplies++; 
    433  
    434         smlTrace(TRACE_EXIT, "%s", __func__); 
    435 } 
    436  
    437 static void _server_sent_change_repdel(SmlDsServer *server, SmlStatus *status, const char *newuid, void *userdata) 
    438 { 
    439         smlTrace(TRACE_ENTRY, "%s(%p, %p, %s, %p)", __func__, server, status, newuid, userdata); 
    440          
    441         fail_unless(status != NULL, NULL); 
    442         fail_unless(GPOINTER_TO_INT(userdata) == 1, NULL); 
    443         fail_unless(smlStatusGetClass(status) == SML_ERRORCLASS_SUCCESS, NULL); 
    444         fail_unless(newuid == NULL, NULL); 
    445  
    446         servercommitreplies++; 
    447  
    448         smlTrace(TRACE_EXIT, "%s", __func__); 
    449 } 
    450  
    451 void __client_final_handler_end(SmlSession *session, void *userdata) 
    452 { 
    453         smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, session, userdata); 
    454         SmlError *error = NULL; 
    455         clientfinals++; 
    456          
    457         fail_unless(!smlSessionFlush(session, TRUE, &error), NULL); 
    458         fail_unless(error != NULL, NULL); 
    459         smlErrorDeref(&error); 
    460  
    461         smlTrace(TRACE_EXIT, "%s", __func__); 
    462 } 
    463  
    464 void __client_final_handler3(SmlSession *session, void *userdata) 
    465 { 
    466         smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, session, userdata); 
    467         SmlError *error = NULL; 
    468         clientfinals++; 
    469          
    470         if (clientfinals == clientsessionend) { 
    471                 smlSessionRegisterFinalHandler(session, __client_final_handler_end, userdata); 
    472         } else  { 
    473                 fail(NULL); 
    474         } 
    475  
    476         fail_unless(smlSessionFlush(session, TRUE, &error), NULL); 
    477         fail_unless(error == NULL, NULL); 
    478          
    479         smlTrace(TRACE_EXIT, "%s", __func__); 
    480 } 
    481  
    482 void __client_final_handler2(SmlSession *session, void *userdata) 
    483 { 
    484         smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, session, userdata); 
    485         SmlDsServer *server = (SmlDsServer *)userdata; 
    486         SmlError *error = NULL; 
    487         clientfinals++; 
    488          
    489         if (client_request_changes) { 
    490                 fail_unless(smlDsServerRequestChanges(server, _recv_client_changes, _recv_sync, userdata, &error), NULL); 
    491                 fail_unless(error == NULL, NULL); 
    492         } 
    493          
    494         if (clientfinals == clientsessionend) { 
    495                 smlSessionRegisterFinalHandler(session, __client_final_handler_end, userdata); 
    496         } else  { 
    497                 smlSessionRegisterFinalHandler(session, __client_final_handler3, userdata); 
    498         } 
    499  
    500         fail_unless(smlSessionFlush(session, TRUE, &error), NULL); 
    501         fail_unless(error == NULL, NULL); 
    502          
    503         smlTrace(TRACE_EXIT, "%s", __func__); 
    504 } 
    505  
    506 void __client_final_handler(SmlSession *session, void *userdata) 
    507 { 
    508         smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, session, userdata); 
    509         SmlDsServer *server = (SmlDsServer *)userdata; 
    510         SmlError *error = NULL; 
    511         clientfinals++; 
    512          
    513         if (client_request_alert) { 
    514                 fail_unless(smlDsServerRequestAlert(server, _recv_alert, userdata, &error), NULL); 
    515                 fail_unless(error == NULL, NULL); 
    516         } 
    517          
    518         if (client_send_changes) { 
    519                 fail_unless(smlDsServerSendSync(server, 0, _alert_reply, GINT_TO_POINTER(1), &error), NULL); 
    520                 fail_unless(error == NULL, NULL); 
    521                  
    522                 if (client_send_add) { 
    523                         fail_unless(smlDsServerQueueChange(server, SML_CHANGE_ADD, "uid", "data", 5, SML_CONTENT_TYPE_VCARD, _client_sent_change_add, GINT_TO_POINTER(1), &error), NULL); 
    524                         fail_unless(error == NULL, NULL); 
    525                 } 
    526                  
    527                 if (client_send_many_add) { 
    528                         int i = 0; 
    529                         for (i = 0; i < 30; i++) { 
    530                                 char *uid = g_strdup_printf("uid%i", i); 
    531                                 fail_unless(smlDsServerQueueChange(server, SML_CHANGE_ADD, uid, "data", 5, SML_CONTENT_TYPE_VCARD, _client_sent_change_add, GINT_TO_POINTER(1), &error), NULL); 
    532                                 fail_unless(error == NULL, NULL); 
    533                                 g_free(uid); 
    534                         } 
    535                 } 
    536                  
    537                 if (client_send_replace) { 
    538                         fail_unless(smlDsServerQueueChange(server, SML_CHANGE_REPLACE, "uid", "newdata", 8, SML_CONTENT_TYPE_VCARD, _client_sent_change_add, GINT_TO_POINTER(1), &error), NULL); 
    539                         fail_unless(error == NULL, NULL); 
    540                 } 
    541                  
    542                 if (client_send_delete) { 
    543                         fail_unless(smlDsServerQueueChange(server, SML_CHANGE_DELETE, "uid", NULL, 0, SML_CONTENT_TYPE_VCARD, _client_sent_change_add, GINT_TO_POINTER(1), &error), NULL); 
    544                         fail_unless(error == NULL, NULL); 
    545                 } 
    546                  
    547                 fail_unless(smlDsServerCloseSync(server, &error), NULL); 
    548                 fail_unless(error == NULL, NULL); 
    549         } 
    550          
    551         if (clientfinals == clientsessionend) { 
    552                 smlSessionRegisterFinalHandler(session, __client_final_handler_end, userdata); 
    553         } else  { 
    554                 smlSessionRegisterFinalHandler(session, __client_final_handler2, userdata); 
    555         } 
    556          
    557         if (client_request_alert) { 
    558                 fail_unless(smlSessionFlush(session, TRUE, &error), NULL); 
    559                 fail_unless(error == NULL, NULL); 
    560         } 
    561          
    562         smlTrace(TRACE_EXIT, "%s", __func__); 
    563 } 
    564  
    565 void __server_final_handler_end(SmlSession *session, void *userdata) 
    566 { 
    567         smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, session, userdata); 
    568         SmlError *error = NULL; 
    569         serverfinals++; 
    570  
    571         fail_unless(smlSessionFlush(session, TRUE, &error), NULL); 
    572         fail_unless(error == NULL, NULL); 
    573          
    574         smlTrace(TRACE_EXIT, "%s", __func__); 
    575 } 
    576  
    577 void __server_final_handler2(SmlSession *session, void *userdata) 
    578 { 
    579         smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, session, userdata); 
    580         SmlDsServer *server = (SmlDsServer *)userdata; 
    581         SmlError *error = NULL; 
    582         serverfinals++; 
    583  
    584         if (server_request_changes) { 
    585                 fail_unless(smlDsServerRequestChanges(server, _recv_server_changes, _recv_sync, userdata, &error), NULL); 
    586                 fail_unless(error == NULL, NULL); 
    587         } 
    588          
    589         if (server_send_changes) { 
    590                 fail_unless(smlDsServerSendSync(server, 0, _alert_reply, GINT_TO_POINTER(1), &error), NULL); 
    591                 fail_unless(error == NULL, NULL); 
    592                                  
    593                 if (server_send_delete) { 
    594                         fail_unless(smlDsServerQueueChange(server, SML_CHANGE_DELETE, "uid", NULL, 0, SML_CONTENT_TYPE_VCARD, _server_sent_change_repdel, GINT_TO_POINTER(1), &error), NULL); 
    595                         fail_unless(error == NULL, NULL); 
    596                 } 
    597                  
    598                 if (server_send_many_add) { 
    599                         int i = 0; 
    600                         for (i = 0; i < 30; i++) { 
    601                                 char *uid = g_strdup_printf("uid%i", i); 
    602                                 fail_unless(smlDsServerQueueChange(server, SML_CHANGE_ADD, uid, "data", 5, SML_CONTENT_TYPE_VCARD, _client_sent_change_add, GINT_TO_POINTER(1), &error), NULL); 
    603                                 fail_unless(error == NULL, NULL); 
    604                                 g_free(uid); 
    605                         } 
    606                 } 
    607                  
    608                 if (server_send_add) { 
    609                         fail_unless(smlDsServerQueueChange(server, SML_CHANGE_ADD, "uid", "data", 5, SML_CONTENT_TYPE_VCARD, _server_sent_change_add, GINT_TO_POINTER(1), &error), NULL); 
    610                         fail_unless(error == NULL, NULL); 
    611                 } 
    612                  
    613                 if (server_send_replace) { 
    614                         fail_unless(smlDsServerQueueChange(server, SML_CHANGE_REPLACE, "uid", "newdata", 8, SML_CONTENT_TYPE_VCARD, _server_sent_change_repdel, GINT_TO_POINTER(1), &error), NULL); 
    615                         fail_unless(error == NULL, NULL); 
    616                 } 
    617                  
    618                 fail_unless(smlDsServerCloseSync(server, &error), NULL); 
    619                 fail_unless(error == NULL, NULL); 
    620         } 
    621          
    622         if (serverfinals == serversessionend) 
    623                 smlSessionRegisterFinalHandler(session, __server_final_handler_end, userdata); 
    624         else 
    625                 smlSessionRegisterFinalHandler(session, __server_final_handler2, userdata); 
    626                  
    627         fail_unless(smlSessionFlush(session, TRUE, &error), NULL); 
    628         fail_unless(error == NULL, NULL); 
    629          
    630         smlTrace(TRACE_EXIT, "%s", __func__); 
    631 }*/ 
    632374 
    633375START_TEST (check_ds_server_new) 
     
    704446                        break; 
    705447                case SML_SESSION_EVENT_END: 
    706                         session_ends++
     448                        g_atomic_int_add(&session_ends, 1)
    707449                        break; 
    708450                default: 
     
    1040782        while (syncs_received != 1) { 
    1041783                smlDsSessionDispatch(server_corr->dsession); 
    1042                 usleep(500000); 
     784                usleep(500); 
    1043785        } 
    1044786         
     
    1184926        while (syncs_received != 1) { 
    1185927                smlDsSessionDispatch(server_corr->dsession); 
    1186                 usleep(500000); 
     928                usleep(500); 
    1187929        } 
    1188930         
     
    1201943        while (syncs_received != 2) { 
    1202944                smlDsSessionDispatch(client_corr->dsession); 
    1203                 usleep(500000); 
     945                usleep(500); 
    1204946        } 
    1205947         
     
    13351077        smlDsSessionSendSync(client_corr->dsession, 0, _sync_reply, GINT_TO_POINTER(1), &error); 
    13361078         
    1337         fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_ADD, "uid", "data", 5, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(2), &error), NULL); 
     1079        fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_ADD, "uid", "data", 4, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(2), &error), NULL); 
    13381080        fail_unless(error == NULL, NULL); 
    13391081         
     
    13521094        while (syncs_received != 1 || adds_received != 1) { 
    13531095                smlDsSessionDispatch(server_corr->dsession); 
    1354                 usleep(500000); 
     1096                usleep(500); 
    13551097        } 
    13561098         
     
    13691111        while (syncs_received != 2) { 
    13701112                smlDsSessionDispatch(client_corr->dsession); 
    1371                 usleep(500000); 
     1113                usleep(500); 
    13721114        } 
    13731115         
     
    15091251        smlDsSessionSendSync(client_corr->dsession, 0, _sync_reply, GINT_TO_POINTER(1), &error); 
    15101252         
    1511         fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_ADD, "uid", "data", 5, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(2), &error), NULL); 
     1253        fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_ADD, "uid", "data", 4, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(2), &error), NULL); 
    15121254        fail_unless(error == NULL, NULL); 
    15131255         
     
    15261268        while (syncs_received != 1 || adds_received != 1) { 
    15271269                smlDsSessionDispatch(server_corr->dsession); 
    1528                 usleep(500000); 
     1270                usleep(500); 
    15291271        } 
    15301272         
    15311273        smlDsSessionSendSync(server_corr->dsession, 0, _sync_reply, GINT_TO_POINTER(1), &error); 
    15321274         
    1533         fail_unless(smlDsSessionQueueChange(server_corr->dsession, SML_CHANGE_ADD, "uid", "data", 5, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(1), &error), NULL); 
     1275        fail_unless(smlDsSessionQueueChange(server_corr->dsession, SML_CHANGE_ADD, "uid", "data", 4, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(1), &error), NULL); 
    15341276        fail_unless(error == NULL, NULL); 
    15351277         
     
    15481290        while (syncs_received != 2 || adds_received != 2) { 
    15491291                smlDsSessionDispatch(client_corr->dsession); 
    1550                 usleep(500000); 
     1292                usleep(500); 
    15511293        } 
    15521294         
     
    16031345END_TEST 
    16041346 
    1605 /* send alerts, send sync from client, send from server with one add */ 
    1606 /* Send map */ 
     1347/* send alerts, send sync from server, send from client with one add */ 
    16071348/* C -- Put, Alert --> S 
    16081349 * S -- Status, Put, Alert --> C 
    1609  * C -- Status, Sync, Replace, Delete, Add --> S 
    1610  * S -- Status, Sync, Add, Replace, Delete --> S 
    1611  * C -- Status, Map --> S 
     1350 * C -- Status, Sync, Delete --> S 
     1351 * S -- Status, Sync, Delete --> S 
     1352 * C -- Status --> S 
    16121353 * S -- Status --> C */ 
    1613 START_TEST (check_ds_map_full
     1354START_TEST (check_ds_delete
    16141355{ 
    16151356        data_received = 0; 
     
    16991440        smlDsSessionSendSync(client_corr->dsession, 0, _sync_reply, GINT_TO_POINTER(1), &error); 
    17001441         
    1701         fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_REPLACE, "uid", "newdata", 8, SML_CONTENT_TYPE_VCARD, _modify_reply, GINT_TO_POINTER(1), &error), NULL); 
    1702         fail_unless(error == NULL, NULL); 
    1703          
    17041442        fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_DELETE, "uid", NULL, 0, SML_CONTENT_TYPE_VCARD, _delete_reply, GINT_TO_POINTER(1), &error), NULL); 
    1705         fail_unless(error == NULL, NULL); 
    1706          
    1707         fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_ADD, "uid", "data", 5, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(2), &error), NULL); 
    17081443        fail_unless(error == NULL, NULL); 
    17091444         
     
    17201455        smlDsSessionGetChanges(server_corr->dsession, _recv_changes, GINT_TO_POINTER(1)); 
    17211456         
    1722         while (syncs_received != 1 || adds_received != 1 || deletes_received != 1 || modifies_received != 1) { 
     1457        while (syncs_received != 1 || deletes_received != 1) { 
    17231458                smlDsSessionDispatch(server_corr->dsession); 
    1724                 usleep(500000); 
     1459                usleep(500); 
    17251460        } 
    17261461         
    17271462        smlDsSessionSendSync(server_corr->dsession, 0, _sync_reply, GINT_TO_POINTER(1), &error); 
    1728          
    1729         fail_unless(smlDsSessionQueueChange(server_corr->dsession, SML_CHANGE_REPLACE, "uid", "newdata", 8, SML_CONTENT_TYPE_VCARD, _modify_reply, GINT_TO_POINTER(1), &error), NULL); 
    1730         fail_unless(error == NULL, NULL); 
    1731          
    1732         fail_unless(smlDsSessionQueueChange(server_corr->dsession, SML_CHANGE_ADD, "uid", "data", 5, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(1), &error), NULL); 
    1733         fail_unless(error == NULL, NULL); 
    17341463         
    17351464        fail_unless(smlDsSessionQueueChange(server_corr->dsession, SML_CHANGE_DELETE, "uid", NULL, 0, SML_CONTENT_TYPE_VCARD, _delete_reply, GINT_TO_POINTER(1), &error), NULL); 
     
    17481477        smlDsSessionGetChanges(client_corr->dsession, _recv_changes, GINT_TO_POINTER(1)); 
    17491478         
    1750         while (syncs_received != 2 || adds_received != 2 || deletes_received != 2 || modifies_received != 2) { 
     1479        while (syncs_received != 2 || deletes_received != 2) { 
    17511480                smlDsSessionDispatch(client_corr->dsession); 
    1752                 usleep(500000); 
    1753         } 
    1754          
    1755         smlDsSessionQueueMap(client_corr->dsession, "uid", "newuid", &error); 
    1756         smlDsSessionCloseMap(client_corr->dsession, _map_reply, GINT_TO_POINTER(1), &error); 
    1757          
    1758         fail_unless(smlSessionFlush(session, TRUE, &error), NULL); 
    1759         fail_unless(error == NULL, NULL); 
    1760          
    1761         while (data_received != 5 || add_replies_received != 2) { 
    1762                 usleep(500); 
    1763         } 
    1764          
    1765         fail_unless(smlSessionEnd(session2, &error), NULL); 
    1766         fail_unless(error == NULL, NULL); 
    1767          
    1768         while (session_ends != 2) { 
     1481                usleep(500); 
     1482        } 
     1483         
     1484        fail_unless(smlSessionFlush(session, TRUE, &error), NULL); 
     1485        fail_unless(error == NULL, NULL); 
     1486         
     1487        while (data_received != 6 || delete_replies_received != 2 || session_ends != 2) { 
    17691488                usleep(500); 
    17701489        } 
     
    17821501        fail_unless(syncs_received == 2, NULL); 
    17831502        fail_unless(changes_received == 0, NULL); 
    1784         fail_unless(replies_received == 5, NULL); 
     1503        fail_unless(replies_received == 4, NULL); 
    17851504        fail_unless(session_ends == 2, NULL); 
    17861505         
    1787         fail_unless(adds_received == 2, NULL); 
    1788         fail_unless(add_replies_received == 2, NULL); 
     1506        fail_unless(adds_received == 0, NULL); 
     1507        fail_unless(add_replies_received == 0, NULL); 
    17891508        fail_unless(deletes_received == 2, NULL); 
    17901509        fail_unless(delete_replies_received == 2, NULL); 
    1791         fail_unless(modifies_received == 2, NULL); 
    1792         fail_unless(modify_replies_received == 2, NULL); 
     1510        fail_unless(modifies_received == 0, NULL); 
     1511        fail_unless(modify_replies_received == 0, NULL); 
    17931512         
    17941513        g_free(client_corr); 
     
    18021521        smlDsServerFree(server); 
    18031522        smlDsServerFree(client); 
    1804          
    18051523} 
    18061524END_TEST 
    18071525 
     1526/* send alerts, send sync from client, send from server with one add */ 
     1527/* Send map */ 
    18081528/* C -- Put, Alert --> S 
    18091529 * S -- Status, Put, Alert --> C 
    1810  * C -- Status, Sync, 500 * Add --> S 
    1811  * S -- Status, Sync, 500 * Add --> S 
     1530 * C -- Status, Sync, Replace, Delete, Add --> S 
     1531 * S -- Status, Sync, Add, Replace, Delete --> S 
    18121532 * C -- Status, Map --> S 
    18131533 * S -- Status --> C */ 
    1814 START_TEST (check_ds_add_large
     1534START_TEST (check_ds_map_full
    18151535{ 
    18161536        data_received = 0; 
     
    18321552        to_session2 = NULL; 
    18331553         
    1834         int num = 50; 
    1835          
    18361554        /* General setup */ 
    18371555        setup_testbed(NULL); 
     
    19011619         
    19021620        smlDsSessionSendSync(client_corr->dsession, 0, _sync_reply, GINT_TO_POINTER(1), &error); 
    1903  
    1904         int i = 0; 
    1905         for (i = 0; i < num; i++) { 
    1906                 fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_ADD, "uid", "data", 5, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(2), &error), NULL); 
    1907                 fail_unless(error == NULL, NULL); 
    1908         } 
     1621         
     1622        fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_REPLACE, "uid", "newdata", 7, SML_CONTENT_TYPE_VCARD, _modify_reply, GINT_TO_POINTER(1), &error), NULL); 
     1623        fail_unless(error == NULL, NULL); 
     1624         
     1625        fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_DELETE, "uid", NULL, 0, SML_CONTENT_TYPE_VCARD, _delete_reply, GINT_TO_POINTER(1), &error), NULL); 
     1626        fail_unless(error == NULL, NULL); 
     1627         
     1628        fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_ADD, "uid", "data", 4, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(2), &error), NULL); 
     1629        fail_unless(error == NULL, NULL); 
    19091630         
    19101631        smlDsSessionCloseSync(client_corr->dsession, &error); 
     
    19201641        smlDsSessionGetChanges(server_corr->dsession, _recv_changes, GINT_TO_POINTER(1)); 
    19211642         
    1922         while (syncs_received != 1 || adds_received != num) { 
     1643        while (syncs_received != 1 || adds_received != 1 || deletes_received != 1 || modifies_received != 1) { 
    19231644                smlDsSessionDispatch(server_corr->dsession); 
    1924                 usleep(500000); 
     1645                usleep(500); 
    19251646        } 
    19261647         
    19271648        smlDsSessionSendSync(server_corr->dsession, 0, _sync_reply, GINT_TO_POINTER(1), &error); 
    19281649         
    1929         for (i = 0; i < num; i++) { 
    1930                 fail_unless(smlDsSessionQueueChange(server_corr->dsession, SML_CHANGE_ADD, "uid", "data", 5, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(1), &error), NULL); 
    1931                 fail_unless(error == NULL, NULL); 
    1932         } 
     1650        fail_unless(smlDsSessionQueueChange(server_corr->dsession, SML_CHANGE_REPLACE, "uid", "newdata", 7, SML_CONTENT_TYPE_VCARD, _modify_reply, GINT_TO_POINTER(1), &error), NULL); 
     1651        fail_unless(error == NULL, NULL); 
     1652         
     1653        fail_unless(smlDsSessionQueueChange(server_corr->dsession, SML_CHANGE_ADD, "uid", "data", 4, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(1), &error), NULL); 
     1654        fail_unless(error == NULL, NULL); 
     1655         
     1656        fail_unless(smlDsSessionQueueChange(server_corr->dsession, SML_CHANGE_DELETE, "uid", NULL, 0, SML_CONTENT_TYPE_VCARD, _delete_reply, GINT_TO_POINTER(1), &error), NULL); 
     1657        fail_unless(error == NULL, NULL); 
    19331658         
    19341659        smlDsSessionCloseSync(server_corr->dsession, &error); 
     
    19441669        smlDsSessionGetChanges(client_corr->dsession, _recv_changes, GINT_TO_POINTER(1)); 
    19451670         
    1946         while (syncs_received != 2 || adds_received != num * 2) { 
     1671        while (syncs_received != 2 || adds_received != 2 || deletes_received != 2 || modifies_received != 2) { 
    19471672                smlDsSessionDispatch(client_corr->dsession); 
    1948                 usleep(500000); 
    1949         } 
    1950          
    1951         for (i = 0; i < num; i++) { 
    1952                 smlDsSessionQueueMap(client_corr->dsession, "uid", "newuid", &error); 
    1953         } 
     1673                usleep(500); 
     1674        } 
     1675         
     1676        smlDsSessionQueueMap(client_corr->dsession, "uid", "newuid", &error); 
    19541677        smlDsSessionCloseMap(client_corr->dsession, _map_reply, GINT_TO_POINTER(1), &error); 
    19551678         
     
    19571680        fail_unless(error == NULL, NULL); 
    19581681         
    1959         while (data_received != 5 || add_replies_received != num * 2) { 
     1682        while (data_received != 5 || add_replies_received != 2) { 
    19601683                usleep(500); 
    19611684        } 
     
    19831706        fail_unless(session_ends == 2, NULL); 
    19841707         
    1985         fail_unless(adds_received == num * 2, NULL); 
    1986         fail_unless(add_replies_received == num * 2, NULL); 
    1987         fail_unless(deletes_received == 0, NULL); 
    1988         fail_unless(delete_replies_received == 0, NULL); 
    1989         fail_unless(modifies_received == 0, NULL); 
    1990         fail_unless(modify_replies_received == 0, NULL); 
     1708        fail_unless(adds_received == 2, NULL); 
     1709        fail_unless(add_replies_received == 2, NULL); 
     1710        fail_unless(deletes_received == 2, NULL); 
     1711        fail_unless(delete_replies_received == 2, NULL); 
     1712        fail_unless(modifies_received == 2, NULL); 
     1713        fail_unless(modify_replies_received == 2, NULL); 
    19911714         
    19921715        g_free(client_corr); 
     
    20001723        smlDsServerFree(server); 
    20011724        smlDsServerFree(client); 
     1725         
    20021726} 
    20031727END_TEST 
     
    20091733 * C -- Status, Map --> S 
    20101734 * S -- Status --> C */ 
    2011 /* Limit the sending size of both sides */ 
    2012 START_TEST (check_ds_limit) 
     1735START_TEST (check_ds_add_large) 
    20131736{ 
    20141737        data_received = 0; 
     
    20301753        to_session2 = NULL; 
    20311754         
    2032         int num = 5; 
    2033         unsigned int limit = 1300; 
     1755        int num = 50; 
    20341756         
    20351757        /* General setup */ 
     
    20541776        SmlSession *session = smlSessionNew(SML_SESSION_TYPE_CLIENT, SML_MIMETYPE_XML, SML_VERSION_12, SML_PROTOCOL_SYNCML, loc, loc, "1", 0, &error); 
    20551777        client_corr->thread = smlSessionRunAsync(session, &to_session); 
    2056         smlSessionSetSendingLimit(session, limit); 
    20571778        SmlSession *session2 = smlSessionNew(SML_SESSION_TYPE_SERVER, SML_MIMETYPE_XML, SML_VERSION_12, SML_PROTOCOL_SYNCML, loc, loc, "1", 0, &error); 
    20581779        server_corr->thread = smlSessionRunAsync(session2, &to_session2); 
    2059         smlSessionSetSendingLimit(session2, limit); 
    20601780         
    20611781        smlSessionSetEventCallback(session, _event_callback, client_corr); 
     
    20881808        fail_unless(error == NULL, NULL); 
    20891809         
     1810        while (data_received != 2) { 
     1811                usleep(500); 
     1812        } 
     1813         
    20901814        smlDsSessionGetAlert(client_corr->dsession, _recv_alert, GINT_TO_POINTER(1)); 
     1815         
    20911816         
    20921817         
     
    21001825        int i = 0; 
    21011826        for (i = 0; i < num; i++) { 
    2102                 fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_ADD, "uid", "data", 5, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(2), &error), NULL); 
     1827                fail_unless(smlDsSessionQueueChange(client_corr->dsession, SML_CHANGE_ADD, "uid", "data", 4, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(2), &error), NULL); 
    21031828                fail_unless(error == NULL, NULL); 
    21041829        } 
     
    21091834        fail_unless(error == NULL, NULL); 
    21101835         
     1836        while (data_received != 3) { 
     1837                usleep(500); 
     1838        } 
    21111839         
    21121840        smlDsSessionGetSync(server_corr->dsession, _recv_sync, GINT_TO_POINTER(1)); 
     
    21151843        while (syncs_received != 1 || adds_received != num) { 
    21161844                smlDsSessionDispatch(server_corr->dsession); 
    2117                 usleep(5000); 
     1845                usleep(500); 
    21181846        } 
    21191847         
     
    21211849         
    21221850        for (i = 0; i < num; i++) { 
    2123                 fail_unless(smlDsSessionQueueChange(server_corr->dsession, SML_CHANGE_ADD, "uid", "data", 5, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(1), &error), NULL); 
     1851                fail_unless(smlDsSessionQueueChange(server_corr->dsession, SML_CHANGE_ADD, "uid", "data", 4, SML_CONTENT_TYPE_VCARD, _add_reply, GINT_TO_POINTER(1), &error), NULL); 
    21241852                fail_unless(error == NULL, NULL); 
    21251853        } 
     
    21301858        fail_unless(error == NULL, NULL); 
    21311859         
     1860        while (data_received != 4) { 
     1861                usleep(500); 
     1862        } 
    21321863         
    21331864        smlDsSessionGetSync(client_corr->dsession, _recv_sync, GINT_TO_POINTER(1)); 
    21341865        smlDsSessionGetChanges(client_corr->dsession, _recv_changes, GINT_TO_POINTER(1)); 
    21351866         
    2136         while (adds_received != num * 2) { 
     1867        while (syncs_received != 2 || adds_received != num * 2) { 
    21371868                smlDsSessionDispatch(client_corr->dsession); 
    2138                 usleep(5000); 
     1869                usleep(500); 
    21391870        } 
    21401871         
     
    21471878        fail_unless(error == NULL, NULL); 
    21481879         
    2149         while (add_replies_received != num * 2) { 
     1880        while (data_received != 5 || add_replies_received != num * 2) { 
    21501881                usleep(500); 
    21511882        } 
     
    21571888                usleep(500); 
    21581889        } 
    2159          
    2160         smlLocationUnref(loc); 
    21611890         
    21621891        smlSessionStop(client_corr->thread); 
     
    21661895        smlDsSessionUnref(server_corr->dsession); 
    21671896         
    2168         //fail_unless(data_received == 6, NULL); 
     1897        fail_unless(data_received == 6, NULL); 
    21691898        fail_unless(init_alerts_received == 1, NULL); 
    21701899         
     
    21881917        smlSessionUnref(session2); 
    21891918                 
     1919        smlLocationUnref(loc); 
     1920                 
    21901921        smlDsServerFree(server); 
    21911922        smlDsServerFree(client); 
     
    21931924END_TEST 
    21941925 
    2195 #if 0 
    21961926/* C -- Put, Alert --> S 
    21971927 * S -- Status, Put, Alert --> C 
     
    22011931 * S -- Status --> C */ 
    22021932/* Limit the sending size of both sides */ 
    2203 START_TEST (check_ds_multi_server
     1933START_TEST (check_ds_limit
    22041934{ 
    22051935        data_received = 0; 
     
    22211951        to_session2 = NULL; 
    22221952         
     1953        int num = 5; 
     1954        unsigned int limit = 1300; 
     1955         
     1956        /* General setup */ 
     1957        setup_testbed(NULL); 
     1958         
     1959        SmlError *error = NULL; 
     1960        SmlLocation *loc = smlLocationNew("/vcards", NULL, &error); 
     1961         
     1962         
     1963        SmlDsServer *client = smlDsClientNew(SML_CONTENT_TYPE_VCARD, loc, loc, &error); 
     1964        _server_corr *client_corr = g_malloc0(sizeof(_server_corr)); 
     1965        client_corr->server = client; 
     1966         
     1967         
     1968        SmlDsServer *server = smlDsServerNew(SML_CONTENT_TYPE_VCARD, loc, &error); 
     1969        _server_corr *server_corr = g_malloc0(sizeof(_server_corr)); 
     1970        server_corr->server = server; 
     1971        smlDsServerSetConnectCallback(server, _recv_init_alert, server_corr); 
     1972         
     1973         
     1974        /* Start a new session from the client */ 
     1975        SmlSession *session = smlSessionNew(SML_SESSION_TYPE_CLIENT, SML_MIMETYPE_XML, SML_VERSION_12, SML_PROTOCOL_SYNCML, loc, loc, "1", 0, &error); 
     1976        client_corr->thread = smlSessionRunAsync(session, &to_session); 
     1977        smlSessionSetSendingLimit(session, limit); 
     1978        SmlSession *session2 = smlSessionNew(SML_SESSION_TYPE_SERVER, SML_MIMETYPE_XML, SML_VERSION_12, SML_PROTOCOL_SYNCML, loc, loc, "1", 0, &error); 
     1979        server_corr->thread = smlSessionRunAsync(session2, &to_session2); 
     1980        smlSessionSetSendingLimit(session2, limit); 
     1981         
     1982        smlSessionSetEventCallback(session, _event_callback, client_corr); 
     1983        smlSessionSetDataCallback(session, _data_send_callback, &to_session2); 
     1984        smlSessionSetEventCallback(session2, _event_callback, server_corr); 
     1985        smlSessionSetDataCallback(session2, _data_send_callback, &to_session); 
     1986         
     1987        client_corr->dsession = smlDsServerSendAlert(client, session, SML_ALERT_TWO_WAY, "last", "next", _alert_reply, GINT_TO_POINTER(1), &error); 
     1988        fail_unless(client_corr->dsession != NULL, NULL); 
     1989        fail_unless(error == NULL, NULL); 
     1990         
     1991        fail_unless(smlSessionFlush(session, TRUE, &error), NULL); 
     1992        fail_unless(error == NULL, NULL); 
     1993         
     1994        while (init_alerts_received != 1) { 
     1995                usleep(500); 
     1996        } 
     1997         
     1998        smlDsSessionGetAlert(server_corr->dsession, _recv_alert, GINT_TO_POINTER(1)); 
     1999        smlDsSessionSendAlert(server_corr->dsession, SML_ALERT_TWO_WAY, "last", "next", _alert_reply, GINT_TO_POINTER(1), &error); 
     2000         
     2001         
     2002         
     2003        while (alerts_received != 1) { 
     2004                smlDsSessionDispatch(server_corr->dsession); 
     2005                usleep(500); 
     2006        } 
     2007         
     2008