3 #include <opensync/opensync-group.h>
4 #include <opensync/opensync-data.h>
5 #include <opensync/opensync-helper.h>
6 #include <opensync/opensync-engine.h>
7 #include <opensync/opensync-mapping.h>
9 #include "opensync/group/opensync_group_internals.h"
10 #include "opensync/engine/opensync_engine_internals.h"
12 START_TEST (sync_setup_connect
)
14 char *testbed
= setup_testbed("sync");
15 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
16 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
18 OSyncError
*error
= NULL
;
19 OSyncGroup
*group
= osync_group_new(&error
);
20 fail_unless(group
!= NULL
, NULL
);
21 fail_unless(error
== NULL
, NULL
);
23 osync_group_set_schemadir(group
, testbed
);
24 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
25 fail_unless(error
== NULL
, NULL
);
27 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
28 fail_unless(engine
!= NULL
, NULL
);
29 fail_unless(error
== NULL
, NULL
);
30 osync_group_unref(group
);
32 osync_engine_set_schemadir(engine
, testbed
);
33 osync_engine_set_plugindir(engine
, plugindir
);
34 osync_engine_set_formatdir(engine
, formatdir
);
36 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
38 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
39 fail_unless(error
== NULL
, NULL
);
41 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
42 fail_unless(error
== NULL
, NULL
);
44 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
45 fail_unless(error
== NULL
, NULL
);
47 osync_engine_unref(engine
);
49 fail_unless(num_client_connected
== 2, NULL
);
50 fail_unless(num_client_main_connected
== 2, NULL
);
51 fail_unless(num_client_disconnected
== 2, NULL
);
52 fail_unless(num_client_main_disconnected
== 2, NULL
);
53 //fail_unless(num_engine_end_conflicts == 0, NULL);
58 destroy_testbed(testbed
);
62 START_TEST (sync_easy_new
)
64 char *testbed
= setup_testbed("sync");
65 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
66 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
68 osync_testing_system_abort("cp testdata data1/testdata");
70 OSyncError
*error
= NULL
;
71 OSyncGroup
*group
= osync_group_new(&error
);
72 fail_unless(group
!= NULL
, NULL
);
73 fail_unless(error
== NULL
, NULL
);
75 osync_group_set_schemadir(group
, testbed
);
76 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
77 fail_unless(error
== NULL
, NULL
);
79 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
80 fail_unless(engine
!= NULL
, NULL
);
81 fail_unless(error
== NULL
, NULL
);
82 osync_group_unref(group
);
84 osync_engine_set_schemadir(engine
, testbed
);
85 osync_engine_set_plugindir(engine
, plugindir
);
86 osync_engine_set_formatdir(engine
, formatdir
);
88 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(1));
89 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
90 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
91 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
92 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
95 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
96 fail_unless(error
== NULL
, NULL
);
98 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
99 fail_unless(error
== NULL
, NULL
);
101 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
102 fail_unless(error
== NULL
, NULL
);
104 osync_engine_unref(engine
);
107 fail_unless(num_client_connected
== 2, NULL
);
108 fail_unless(num_client_main_connected
== 2, NULL
);
109 fail_unless(num_client_read
== 2, NULL
);
110 fail_unless(num_client_main_read
== 2, NULL
);
111 fail_unless(num_client_written
== 2, NULL
);
112 fail_unless(num_client_main_written
== 2, NULL
);
113 fail_unless(num_client_disconnected
== 2, NULL
);
114 fail_unless(num_client_main_disconnected
== 2, NULL
);
115 fail_unless(num_client_errors
== 0, NULL
);
116 fail_unless(num_client_sync_done
== 2, NULL
);
117 fail_unless(num_client_main_sync_done
== 2, NULL
);
120 fail_unless(num_engine_connected
== 1, NULL
);
121 fail_unless(num_engine_errors
== 0, NULL
);
122 fail_unless(num_engine_read
== 1, NULL
);
123 fail_unless(num_engine_written
== 1, NULL
);
124 fail_unless(num_engine_sync_done
== 1, NULL
);
125 fail_unless(num_engine_disconnected
== 1, NULL
);
126 fail_unless(num_engine_successful
== 1, NULL
);
127 fail_unless(num_engine_end_conflicts
== 1, NULL
);
128 fail_unless(num_engine_prev_unclean
== 0, NULL
);
131 fail_unless(num_change_read
== 1, NULL
);
132 fail_unless(num_change_written
== 1, NULL
);
133 fail_unless(num_change_error
== 0, NULL
);
136 fail_unless(num_mapping_solved
== 1, NULL
);
137 //fail_unless(num_mapping_written == 1, NULL);
138 fail_unless(num_mapping_errors
== 0, NULL
);
139 fail_unless(num_mapping_conflicts
== 0, NULL
);
141 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
143 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
144 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 1);
146 check_mapping(maptable
, 1, 1, 2, "testdata");
147 check_mapping(maptable
, 2, 1, 2, "testdata");
148 osync_mapping_table_close(maptable
);
149 osync_mapping_table_unref(maptable
);
151 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
152 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 1);
154 check_hash(table
, "testdata");
155 osync_hashtable_unref(table
);
157 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
158 table
= hashtable_load(path
, "mockobjtype1", 1);
160 check_hash(table
, "testdata");
161 osync_hashtable_unref(table
);
166 destroy_testbed(testbed
);
170 START_TEST (sync_easy_new_del
)
172 char *testbed
= setup_testbed("sync");
173 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
174 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
176 osync_testing_system_abort("cp testdata data1/testdata");
178 OSyncError
*error
= NULL
;
179 OSyncGroup
*group
= osync_group_new(&error
);
180 fail_unless(group
!= NULL
, NULL
);
181 fail_unless(error
== NULL
, NULL
);
183 osync_group_set_schemadir(group
, testbed
);
184 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
185 fail_unless(error
== NULL
, NULL
);
187 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
188 fail_unless(engine
!= NULL
, NULL
);
189 fail_unless(error
== NULL
, NULL
);
190 osync_group_unref(group
);
192 osync_engine_set_schemadir(engine
, testbed
);
193 osync_engine_set_plugindir(engine
, plugindir
);
194 osync_engine_set_formatdir(engine
, formatdir
);
196 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(1));
197 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
198 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
199 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
200 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
203 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
204 fail_unless(error
== NULL
, NULL
);
206 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
207 fail_unless(error
== NULL
, NULL
);
209 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
211 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
212 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 1);
214 check_mapping(maptable
, 1, 1, 2, "testdata");
215 check_mapping(maptable
, 2, 1, 2, "testdata");
216 osync_mapping_table_close(maptable
);
217 osync_mapping_table_unref(maptable
);
219 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
220 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 1);
222 check_hash(table
, "testdata");
223 osync_hashtable_unref(table
);
225 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
226 table
= hashtable_load(path
, "mockobjtype1", 1);
228 check_hash(table
, "testdata");
229 osync_hashtable_unref(table
);
232 osync_testing_system_abort("rm data1/testdata");
234 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
235 fail_unless(error
== NULL
, NULL
);
237 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
238 fail_unless(error
== NULL
, NULL
);
240 osync_engine_unref(engine
);
243 fail_unless(num_client_connected
== 2, NULL
);
244 fail_unless(num_client_main_connected
== 2, NULL
);
245 fail_unless(num_client_read
== 2, NULL
);
246 fail_unless(num_client_main_read
== 2, NULL
);
247 fail_unless(num_client_written
== 2, NULL
);
248 fail_unless(num_client_main_written
== 2, NULL
);
249 fail_unless(num_client_disconnected
== 2, NULL
);
250 fail_unless(num_client_main_disconnected
== 2, NULL
);
251 fail_unless(num_client_errors
== 0, NULL
);
252 fail_unless(num_client_sync_done
== 2, NULL
);
253 fail_unless(num_client_main_sync_done
== 2, NULL
);
256 fail_unless(num_engine_connected
== 1, NULL
);
257 fail_unless(num_engine_errors
== 0, NULL
);
258 fail_unless(num_engine_read
== 1, NULL
);
259 fail_unless(num_engine_written
== 1, NULL
);
260 fail_unless(num_engine_sync_done
== 1, NULL
);
261 fail_unless(num_engine_disconnected
== 1, NULL
);
262 fail_unless(num_engine_successful
== 1, NULL
);
263 fail_unless(num_engine_end_conflicts
== 1, NULL
);
264 fail_unless(num_engine_prev_unclean
== 0, NULL
);
267 fail_unless(num_change_read
== 1, NULL
);
268 fail_unless(num_change_written
== 1, NULL
);
269 fail_unless(num_change_error
== 0, NULL
);
272 fail_unless(num_mapping_solved
== 1, NULL
);
273 //fail_unless(num_mapping_written == 1, NULL);
274 fail_unless(num_mapping_errors
== 0, NULL
);
275 fail_unless(num_mapping_conflicts
== 0, NULL
);
277 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
279 path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
280 maptable
= mappingtable_load(path
, "mockobjtype1", 0);
282 osync_mapping_table_close(maptable
);
283 osync_mapping_table_unref(maptable
);
285 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
286 table
= hashtable_load(path
, "mockobjtype1", 0);
288 osync_hashtable_unref(table
);
290 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
291 table
= hashtable_load(path
, "mockobjtype1", 0);
293 osync_hashtable_unref(table
);
298 destroy_testbed(testbed
);
302 START_TEST (sync_easy_conflict
)
304 char *testbed
= setup_testbed("sync");
305 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
306 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
308 osync_testing_system_abort("cp testdata data1/testdata");
309 osync_testing_system_abort("cp testdata comp_data");
310 osync_testing_system_abort("cp new_data1 data2/testdata");
312 OSyncError
*error
= NULL
;
313 OSyncGroup
*group
= osync_group_new(&error
);
314 fail_unless(group
!= NULL
, NULL
);
315 fail_unless(error
== NULL
, NULL
);
317 osync_group_set_schemadir(group
, testbed
);
318 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
319 fail_unless(error
== NULL
, NULL
);
321 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
322 fail_unless(engine
!= NULL
, NULL
);
323 fail_unless(error
== NULL
, NULL
);
324 osync_group_unref(group
);
326 osync_engine_set_schemadir(engine
, testbed
);
327 osync_engine_set_plugindir(engine
, plugindir
);
328 osync_engine_set_formatdir(engine
, formatdir
);
330 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(2));
331 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
332 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
333 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
334 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
337 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
338 fail_unless(error
== NULL
, NULL
);
340 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
341 fail_unless(error
== NULL
, NULL
);
343 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
344 fail_unless(error
== NULL
, NULL
);
346 osync_engine_unref(engine
);
349 fail_unless(num_client_connected
== 2, NULL
);
350 fail_unless(num_client_main_connected
== 2, NULL
);
351 fail_unless(num_client_read
== 2, NULL
);
352 fail_unless(num_client_main_read
== 2, NULL
);
353 fail_unless(num_client_written
== 2, NULL
);
354 fail_unless(num_client_main_written
== 2, NULL
);
355 fail_unless(num_client_disconnected
== 2, NULL
);
356 fail_unless(num_client_main_disconnected
== 2, NULL
);
357 fail_unless(num_client_errors
== 0, NULL
);
358 fail_unless(num_client_sync_done
== 2, NULL
);
359 fail_unless(num_client_main_sync_done
== 2, NULL
);
362 fail_unless(num_engine_connected
== 1, NULL
);
363 fail_unless(num_engine_errors
== 0, NULL
);
364 fail_unless(num_engine_read
== 1, NULL
);
365 fail_unless(num_engine_written
== 1, NULL
);
366 fail_unless(num_engine_sync_done
== 1, NULL
);
367 fail_unless(num_engine_disconnected
== 1, NULL
);
368 fail_unless(num_engine_successful
== 1, NULL
);
369 fail_unless(num_engine_end_conflicts
== 1, NULL
);
370 fail_unless(num_engine_prev_unclean
== 0, NULL
);
373 fail_unless(num_change_read
== 2, NULL
);
374 fail_unless(num_change_written
== 1, NULL
);
375 fail_unless(num_change_error
== 0, NULL
);
378 fail_unless(num_mapping_solved
== 1, NULL
);
379 //fail_unless(num_mapping_written == 1, NULL);
380 fail_unless(num_mapping_errors
== 0, NULL
);
381 fail_unless(num_mapping_conflicts
== 1, NULL
);
383 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
384 fail_unless(!system("test \"x$(diff -x \".*\" data1/testdata comp_data)\" = \"x\""), NULL
);
385 fail_unless(!system("test \"x$(diff -x \".*\" data2/testdata comp_data)\" = \"x\""), NULL
);
387 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
388 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 1);
390 check_mapping(maptable
, 1, 1, 2, "testdata");
391 check_mapping(maptable
, 2, 1, 2, "testdata");
392 osync_mapping_table_close(maptable
);
393 osync_mapping_table_unref(maptable
);
395 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
396 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 1);
398 check_hash(table
, "testdata");
399 osync_hashtable_unref(table
);
401 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
402 table
= hashtable_load(path
, "mockobjtype1", 1);
404 check_hash(table
, "testdata");
405 osync_hashtable_unref(table
);
410 destroy_testbed(testbed
);
414 START_TEST (sync_easy_new_mapping
)
416 char *testbed
= setup_testbed("sync");
417 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
418 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
420 osync_testing_system_abort("cp testdata data1/testdata");
421 osync_testing_system_abort("cp testdata data2/testdata");
423 OSyncError
*error
= NULL
;
424 OSyncGroup
*group
= osync_group_new(&error
);
425 fail_unless(group
!= NULL
, NULL
);
426 fail_unless(error
== NULL
, NULL
);
428 osync_group_set_schemadir(group
, testbed
);
429 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
430 fail_unless(error
== NULL
, NULL
);
432 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
433 fail_unless(engine
!= NULL
, NULL
);
434 fail_unless(error
== NULL
, NULL
);
435 osync_group_unref(group
);
437 osync_engine_set_schemadir(engine
, testbed
);
438 osync_engine_set_plugindir(engine
, plugindir
);
439 osync_engine_set_formatdir(engine
, formatdir
);
441 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(2));
442 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
443 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
444 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
445 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
448 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
449 fail_unless(error
== NULL
, NULL
);
451 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
452 fail_unless(error
== NULL
, NULL
);
455 fail_unless(num_client_connected
== 2, NULL
);
456 fail_unless(num_client_main_connected
== 2, NULL
);
457 fail_unless(num_client_read
== 2, NULL
);
458 fail_unless(num_client_main_read
== 2, NULL
);
459 fail_unless(num_client_written
== 2, NULL
);
460 fail_unless(num_client_main_written
== 2, NULL
);
461 fail_unless(num_client_disconnected
== 2, NULL
);
462 fail_unless(num_client_main_disconnected
== 2, NULL
);
463 fail_unless(num_client_errors
== 0, NULL
);
464 fail_unless(num_client_sync_done
== 2, NULL
);
465 fail_unless(num_client_main_sync_done
== 2, NULL
);
468 fail_unless(num_engine_connected
== 1, NULL
);
469 fail_unless(num_engine_errors
== 0, NULL
);
470 fail_unless(num_engine_read
== 1, NULL
);
471 fail_unless(num_engine_written
== 1, NULL
);
472 fail_unless(num_engine_sync_done
== 1, NULL
);
473 fail_unless(num_engine_disconnected
== 1, NULL
);
474 fail_unless(num_engine_successful
== 1, NULL
);
475 fail_unless(num_engine_end_conflicts
== 1, NULL
);
476 fail_unless(num_engine_prev_unclean
== 0, NULL
);
479 fail_unless(num_change_read
== 2, NULL
);
480 fail_unless(num_change_written
== 0, NULL
);
481 fail_unless(num_change_error
== 0, NULL
);
484 fail_unless(num_mapping_solved
== 1, NULL
);
485 //fail_unless(num_mapping_written == 1, NULL);
486 fail_unless(num_mapping_errors
== 0, NULL
);
487 fail_unless(num_mapping_conflicts
== 0, NULL
);
489 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
491 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
492 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 1);
494 check_mapping(maptable
, 1, 1, 2, "testdata");
495 check_mapping(maptable
, 2, 1, 2, "testdata");
496 osync_mapping_table_close(maptable
);
497 osync_mapping_table_unref(maptable
);
499 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
500 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 1);
502 check_hash(table
, "testdata");
503 osync_hashtable_unref(table
);
505 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
506 table
= hashtable_load(path
, "mockobjtype1", 1);
508 check_hash(table
, "testdata");
509 osync_hashtable_unref(table
);
512 osync_testing_system_abort("rm data1/testdata");
514 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
515 fail_unless(error
== NULL
, NULL
);
517 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
518 fail_unless(error
== NULL
, NULL
);
520 osync_engine_unref(engine
);
523 fail_unless(num_client_connected
== 2, NULL
);
524 fail_unless(num_client_main_connected
== 2, NULL
);
525 fail_unless(num_client_read
== 2, NULL
);
526 fail_unless(num_client_main_read
== 2, NULL
);
527 fail_unless(num_client_written
== 2, NULL
);
528 fail_unless(num_client_main_written
== 2, NULL
);
529 fail_unless(num_client_disconnected
== 2, NULL
);
530 fail_unless(num_client_main_disconnected
== 2, NULL
);
531 fail_unless(num_client_errors
== 0, NULL
);
532 fail_unless(num_client_sync_done
== 2, NULL
);
533 fail_unless(num_client_main_sync_done
== 2, NULL
);
536 fail_unless(num_engine_connected
== 1, NULL
);
537 fail_unless(num_engine_errors
== 0, NULL
);
538 fail_unless(num_engine_read
== 1, NULL
);
539 fail_unless(num_engine_written
== 1, NULL
);
540 fail_unless(num_engine_sync_done
== 1, NULL
);
541 fail_unless(num_engine_disconnected
== 1, NULL
);
542 fail_unless(num_engine_successful
== 1, NULL
);
543 fail_unless(num_engine_end_conflicts
== 1, NULL
);
544 fail_unless(num_engine_prev_unclean
== 0, NULL
);
547 fail_unless(num_change_read
== 1, NULL
);
548 fail_unless(num_change_written
== 1, NULL
);
549 fail_unless(num_change_error
== 0, NULL
);
552 fail_unless(num_mapping_solved
== 1, NULL
);
553 //fail_unless(num_mapping_written == 1, NULL);
554 fail_unless(num_mapping_errors
== 0, NULL
);
555 fail_unless(num_mapping_conflicts
== 0, NULL
);
557 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
559 path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
560 maptable
= mappingtable_load(path
, "mockobjtype1", 0);
562 osync_mapping_table_close(maptable
);
563 osync_mapping_table_unref(maptable
);
565 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
566 table
= hashtable_load(path
, "mockobjtype1", 0);
568 osync_hashtable_unref(table
);
570 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
571 table
= hashtable_load(path
, "mockobjtype1", 0);
573 osync_hashtable_unref(table
);
578 destroy_testbed(testbed
);
582 START_TEST (sync_easy_conflict_duplicate
)
584 char *testbed
= setup_testbed("sync");
585 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
586 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
588 osync_testing_system_abort("cp testdata data1/testdata");
589 osync_testing_system_abort("cp new_data1 data2/testdata");
591 OSyncError
*error
= NULL
;
592 OSyncGroup
*group
= osync_group_new(&error
);
593 fail_unless(group
!= NULL
, NULL
);
594 fail_unless(error
== NULL
, NULL
);
596 osync_group_set_schemadir(group
, testbed
);
597 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
598 fail_unless(error
== NULL
, NULL
);
600 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
601 fail_unless(engine
!= NULL
, NULL
);
602 fail_unless(error
== NULL
, NULL
);
603 osync_group_unref(group
);
605 osync_engine_set_schemadir(engine
, testbed
);
606 osync_engine_set_plugindir(engine
, plugindir
);
607 osync_engine_set_formatdir(engine
, formatdir
);
609 osync_engine_set_conflict_callback(engine
, conflict_handler_duplicate
, GINT_TO_POINTER(2));
610 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
611 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
612 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
613 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
616 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
617 fail_unless(error
== NULL
, NULL
);
619 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
620 fail_unless(error
== NULL
, NULL
);
623 fail_unless(num_client_connected
== 2, NULL
);
624 fail_unless(num_client_main_connected
== 2, NULL
);
625 fail_unless(num_client_read
== 2, NULL
);
626 fail_unless(num_client_main_read
== 2, NULL
);
627 fail_unless(num_client_written
== 2, NULL
);
628 fail_unless(num_client_main_written
== 2, NULL
);
629 fail_unless(num_client_disconnected
== 2, NULL
);
630 fail_unless(num_client_main_disconnected
== 2, NULL
);
631 fail_unless(num_client_errors
== 0, NULL
);
632 fail_unless(num_client_sync_done
== 2, NULL
);
633 fail_unless(num_client_main_sync_done
== 2, NULL
);
636 fail_unless(num_engine_connected
== 1, NULL
);
637 fail_unless(num_engine_errors
== 0, NULL
);
638 fail_unless(num_engine_read
== 1, NULL
);
639 fail_unless(num_engine_written
== 1, NULL
);
640 fail_unless(num_engine_sync_done
== 1, NULL
);
641 fail_unless(num_engine_disconnected
== 1, NULL
);
642 fail_unless(num_engine_successful
== 1, NULL
);
643 fail_unless(num_engine_end_conflicts
== 1, NULL
);
644 fail_unless(num_engine_prev_unclean
== 0, NULL
);
647 fail_unless(num_change_read
== 2, NULL
);
648 fail_unless(num_change_written
== 3, NULL
);
649 fail_unless(num_change_error
== 0, NULL
);
652 fail_unless(num_mapping_solved
== 1, NULL
);
653 //fail_unless(num_mapping_written == 1, NULL);
654 fail_unless(num_mapping_errors
== 0, NULL
);
655 fail_unless(num_mapping_conflicts
== 1, NULL
);
657 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
659 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
660 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 2);
662 check_mapping(maptable
, 1, -1, 2, "testdata");
663 check_mapping(maptable
, 1, -1, 2, "testdata-dupe");
664 check_mapping(maptable
, 2, -1, 2, "testdata");
665 check_mapping(maptable
, 1, -1, 2, "testdata-dupe");
666 osync_mapping_table_close(maptable
);
667 osync_mapping_table_unref(maptable
);
669 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
670 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 2);
672 check_hash(table
, "testdata");
673 check_hash(table
, "testdata-dupe");
674 osync_hashtable_unref(table
);
676 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
677 table
= hashtable_load(path
, "mockobjtype1", 2);
679 check_hash(table
, "testdata");
680 check_hash(table
, "testdata-dupe");
681 osync_hashtable_unref(table
);
683 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
684 osync_testing_system_abort("rm -f data1/testdata-dupe");
687 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
688 fail_unless(error
== NULL
, NULL
);
690 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
691 fail_unless(error
== NULL
, NULL
);
693 osync_engine_unref(engine
);
696 fail_unless(num_client_connected
== 2, NULL
);
697 fail_unless(num_client_main_connected
== 2, NULL
);
698 fail_unless(num_client_read
== 2, NULL
);
699 fail_unless(num_client_main_read
== 2, NULL
);
700 fail_unless(num_client_written
== 2, NULL
);
701 fail_unless(num_client_main_written
== 2, NULL
);
702 fail_unless(num_client_disconnected
== 2, NULL
);
703 fail_unless(num_client_main_disconnected
== 2, NULL
);
704 fail_unless(num_client_errors
== 0, NULL
);
705 fail_unless(num_client_sync_done
== 2, NULL
);
706 fail_unless(num_client_main_sync_done
== 2, NULL
);
709 fail_unless(num_engine_connected
== 1, NULL
);
710 fail_unless(num_engine_errors
== 0, NULL
);
711 fail_unless(num_engine_read
== 1, NULL
);
712 fail_unless(num_engine_written
== 1, NULL
);
713 fail_unless(num_engine_sync_done
== 1, NULL
);
714 fail_unless(num_engine_disconnected
== 1, NULL
);
715 fail_unless(num_engine_successful
== 1, NULL
);
716 fail_unless(num_engine_end_conflicts
== 1, NULL
);
717 fail_unless(num_engine_prev_unclean
== 0, NULL
);
720 fail_unless(num_change_read
== 1, NULL
);
721 fail_unless(num_change_written
== 1, NULL
);
722 fail_unless(num_change_error
== 0, NULL
);
725 fail_unless(num_mapping_solved
== 1, NULL
);
726 //fail_unless(num_mapping_written == 1, NULL);
727 fail_unless(num_mapping_errors
== 0, NULL
);
728 fail_unless(num_mapping_conflicts
== 0, NULL
);
730 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
733 path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
734 maptable
= mappingtable_load(path
, "mockobjtype1", 1);
736 check_mapping(maptable
, 1, -1, 2, "testdata");
737 check_mapping(maptable
, 2, -1, 2, "testdata");
738 osync_mapping_table_close(maptable
);
739 osync_mapping_table_unref(maptable
);
741 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
742 table
= hashtable_load(path
, "mockobjtype1", 1);
744 check_hash(table
, "testdata");
745 osync_hashtable_unref(table
);
747 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
748 table
= hashtable_load(path
, "mockobjtype1", 1);
750 check_hash(table
, "testdata");
751 osync_hashtable_unref(table
);
756 destroy_testbed(testbed
);
760 /* Aborting the entire synchronization while conflict resolution. Bug ticket: #700 */
761 START_TEST (sync_easy_conflict_abort
)
763 char *testbed
= setup_testbed("sync");
764 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
765 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
767 osync_testing_system_abort("cp testdata data1/testdata");
768 osync_testing_system_abort("cp new_data1 data2/testdata");
770 g_setenv("NO_COMMITTED_ALL_CHECK", "1", TRUE
);
772 OSyncError
*error
= NULL
;
773 OSyncGroup
*group
= osync_group_new(&error
);
774 fail_unless(group
!= NULL
, NULL
);
775 fail_unless(error
== NULL
, NULL
);
777 osync_group_set_schemadir(group
, testbed
);
778 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
779 fail_unless(error
== NULL
, NULL
);
781 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
782 fail_unless(engine
!= NULL
, NULL
);
783 fail_unless(error
== NULL
, NULL
);
784 osync_group_unref(group
);
786 osync_engine_set_schemadir(engine
, testbed
);
787 osync_engine_set_plugindir(engine
, plugindir
);
788 osync_engine_set_formatdir(engine
, formatdir
);
790 osync_engine_set_conflict_callback(engine
, conflict_handler_abort
, GINT_TO_POINTER(2));
791 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
792 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
793 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
794 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
797 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
798 fail_unless(error
== NULL
, NULL
);
800 fail_unless(!osync_engine_synchronize_and_block(engine
, &error
), NULL
);
801 fail_unless(error
!= NULL
, NULL
);
802 osync_error_unref(&error
);
805 fail_unless(num_client_connected
== 2, NULL
);
806 fail_unless(num_client_main_connected
== 2, NULL
);
807 fail_unless(num_client_read
== 2, NULL
);
808 fail_unless(num_client_main_read
== 2, NULL
);
809 fail_unless(num_client_written
== 0, NULL
);
810 fail_unless(num_client_main_written
== 2, NULL
);
811 fail_unless(num_client_disconnected
== 2, NULL
);
812 fail_unless(num_client_main_disconnected
== 2, NULL
);
813 fail_unless(num_client_errors
== 0, NULL
);
814 fail_unless(num_client_sync_done
== 0, NULL
);
815 fail_unless(num_client_main_sync_done
== 0, NULL
);
818 fail_unless(num_engine_connected
== 1, NULL
);
819 fail_unless(num_engine_errors
== 1, "errors: %i", num_engine_errors
);
820 fail_unless(num_engine_read
== 1, NULL
);
821 fail_unless(num_engine_written
== 0, NULL
);
822 fail_unless(num_engine_sync_done
== 0, NULL
);
823 fail_unless(num_engine_disconnected
== 1, NULL
);
824 fail_unless(num_engine_successful
== 0, NULL
);
825 /* FIXME: END_CONFLICTS even when we aborted the entire sync while solving the conflicts?!i
826 Review if this shouldn't be 0 .. very likely this signal got emitted in the wrong place within OSyncEngine. */
827 fail_unless(num_engine_end_conflicts
== 1, NULL
);
828 fail_unless(num_engine_prev_unclean
== 0, NULL
);
831 fail_unless(num_change_read
== 2, NULL
);
832 fail_unless(num_change_written
== 0, NULL
);
833 fail_unless(num_change_error
== 0, NULL
);
836 fail_unless(num_mapping_solved
== 0, NULL
);
837 //fail_unless(num_mapping_written == 1, NULL);
838 fail_unless(num_mapping_errors
== 0, NULL
);
839 fail_unless(num_mapping_conflicts
== 0, NULL
);
841 /* Still conflicts! */
842 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" != \"x\""), NULL
);
844 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
845 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 0);
847 osync_mapping_table_close(maptable
);
848 osync_mapping_table_unref(maptable
);
851 /* Don't care about the hashtable. The engine got aborted - this MUST and WILL
852 cause a slow-sync next time. A slow-sync ends up in flushing the persistent
856 path = g_strdup_printf("%s/configs/group/1/hashtable.db", testbed);
857 OSyncHashTable *table = hashtable_load(path, "mockobjtype1", 1);
859 check_hash(table, "testdata");
860 // check_hash(table, "testdata-dupe");
861 osync_hashtable_unref(table);
863 path = g_strdup_printf("%s/configs/group/2/hashtable.db", testbed);
864 table = hashtable_load(path, "mockobjtype1", 1);
866 check_hash(table, "testdata");
867 // check_hash(table, "testdata-dupe");
868 osync_hashtable_unref(table);
871 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" != \"x\""), NULL
);
872 // osync_testing_system_abort("rm -f data1/testdata-dupe");
875 fail_unless(!osync_engine_synchronize_and_block(engine
, &error
), NULL
);
876 fail_unless(error
!= NULL
, NULL
);
877 osync_error_unref(&error
);
879 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
880 fail_unless(error
== NULL
, "error: %s", osync_error_print(&error
));
882 osync_engine_unref(engine
);
885 fail_unless(num_client_connected
== 2, NULL
);
886 fail_unless(num_client_main_connected
== 2, NULL
);
887 fail_unless(num_client_read
== 2, NULL
);
888 fail_unless(num_client_main_read
== 2, NULL
);
889 fail_unless(num_client_written
== 0, NULL
);
890 fail_unless(num_client_main_written
== 2, NULL
);
891 fail_unless(num_client_disconnected
== 2, NULL
);
892 fail_unless(num_client_main_disconnected
== 2, NULL
);
893 fail_unless(num_client_errors
== 0, NULL
);
894 fail_unless(num_client_sync_done
== 0, NULL
);
895 fail_unless(num_client_main_sync_done
== 0, NULL
);
898 fail_unless(num_engine_connected
== 1, NULL
);
899 fail_unless(num_engine_errors
== 1, NULL
);
900 fail_unless(num_engine_read
== 1, NULL
);
901 fail_unless(num_engine_written
== 0, NULL
);
902 fail_unless(num_engine_sync_done
== 0, NULL
);
903 fail_unless(num_engine_disconnected
== 1, NULL
);
904 fail_unless(num_engine_successful
== 0, NULL
);
905 /* FIXME: END_CONFLICTS even when we aborted the entire sync while solving the conflicts?!i
906 Review if this shouldn't be 0 .. very likely this signal got emitted in the wrong place within OSyncEngine. */
907 fail_unless(num_engine_end_conflicts
== 1, NULL
);
908 fail_unless(num_engine_prev_unclean
== 0, NULL
);
911 fail_unless(num_change_read
== 2, NULL
);
912 fail_unless(num_change_written
== 0, NULL
);
913 fail_unless(num_change_error
== 0, NULL
);
916 fail_unless(num_mapping_solved
== 0, NULL
);
917 //fail_unless(num_mapping_written == 1, NULL);
918 fail_unless(num_mapping_errors
== 0, NULL
);
919 fail_unless(num_mapping_conflicts
== 0, NULL
);
921 /* Still different */
922 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" != \"x\""), NULL
);
925 path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
926 maptable
= mappingtable_load(path
, "mockobjtype1", 0);
928 osync_mapping_table_close(maptable
);
929 osync_mapping_table_unref(maptable
);
931 /* Don't care about the hashtable. The engine got aborted - this MUST and WILL
932 cause a slow-sync next time. A slow-sync ends up in flushing the persistent
936 path = g_strdup_printf("%s/configs/group/1/hashtable.db", testbed);
937 table = hashtable_load(path, "mockobjtype1", 1);
939 check_hash(table, "testdata");
940 osync_hashtable_unref(table);
942 path = g_strdup_printf("%s/configs/group/2/hashtable.db", testbed);
943 table = hashtable_load(path, "mockobjtype1", 1);
945 check_hash(table, "testdata");
946 osync_hashtable_unref(table);
952 destroy_testbed(testbed
);
958 START_TEST (sync_conflict_duplicate
)
960 char *testbed
= setup_testbed("sync_conflict_duplicate");
961 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
962 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
965 OSyncEnv
*osync
= init_env();
966 OSyncGroup
*group
= osync_group_load(osync
, "configs/group", NULL
);
968 OSyncError
*error
= NULL
;
969 OSyncEngine
*engine
= osengine_new(group
, &error
);
970 osengine_set_conflict_callback(engine
, conflict_handler_duplication
, GINT_TO_POINTER(2));
971 osengine_init(engine
, &error
);
973 synchronize_once(engine
, NULL
);
975 osync_testing_system_abort("diff -x \".*\" data1 data2");
976 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
978 OSyncMappingTable
*maptable
= mappingtable_load(group
, 3, 0);
979 check_mapping(maptable
, 1, -1, 2, "testdata");
980 check_mapping(maptable
, 1, -1, 2, "testdata-dupe");
981 check_mapping(maptable
, 1, -1, 2, "testdata-dupe-dupe");
982 check_mapping(maptable
, 2, -1, 2, "testdata");
983 check_mapping(maptable
, 2, -1, 2, "testdata-dupe");
984 check_mapping(maptable
, 2, -1, 2, "testdata-dupe-dupe");
985 mappingtable_close(maptable
);
987 OSyncHashTable
*table
= hashtable_load(group
, 1, 3);
988 check_hash(table
, "testdata");
989 check_hash(table
, "testdata-dupe");
990 check_hash(table
, "testdata-dupe-dupe");
991 osync_hashtable_close(table
);
993 table
= hashtable_load(group
, 2, 3);
994 check_hash(table
, "testdata");
995 check_hash(table
, "testdata-dupe");
996 check_hash(table
, "testdata-dupe-dupe");
997 osync_hashtable_close(table
);
999 fail_unless(!system("rm -f data1/testdata-dupe data2/testdata-dupe-dupe"), NULL
);
1001 synchronize_once(engine
, NULL
);
1002 osengine_finalize(engine
);
1003 osengine_free(engine
);
1004 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1005 fail_unless(num_conflicts
== 0, NULL
);
1007 maptable
= mappingtable_load(group
, 1, 0);
1008 check_mapping(maptable
, 1, 0, 2, "testdata");
1009 check_mapping(maptable
, 2, 0, 2, "testdata");
1010 mappingtable_close(maptable
);
1012 table
= hashtable_load(group
, 1, 1);
1013 check_hash(table
, "testdata");
1014 osync_hashtable_close(table
);
1016 table
= hashtable_load(group
, 2, 1);
1017 check_hash(table
, "testdata");
1018 osync_hashtable_close(table
);
1023 destroy_testbed(testbed
);
1028 START_TEST (sync_conflict_duplicate2
)
1030 char *testbed
= setup_testbed("sync");
1031 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
1032 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
1034 osync_testing_system_abort("cp testdata data1/testdata");
1035 osync_testing_system_abort("cp testdata comp_data");
1036 osync_testing_system_abort("cp new_data1 data2/testdata");
1038 OSyncError
*error
= NULL
;
1039 OSyncGroup
*group
= osync_group_new(&error
);
1040 fail_unless(group
!= NULL
, NULL
);
1041 fail_unless(error
== NULL
, NULL
);
1043 osync_group_set_schemadir(group
, testbed
);
1044 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
1045 fail_unless(error
== NULL
, NULL
);
1047 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
1048 fail_unless(engine
!= NULL
, NULL
);
1049 fail_unless(error
== NULL
, NULL
);
1050 osync_group_unref(group
);
1052 osync_engine_set_schemadir(engine
, testbed
);
1053 osync_engine_set_plugindir(engine
, plugindir
);
1054 osync_engine_set_formatdir(engine
, formatdir
);
1056 osync_engine_set_conflict_callback(engine
, conflict_handler_duplicate
, GINT_TO_POINTER(2));
1057 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
1058 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
1059 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
1060 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
1063 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
1064 fail_unless(error
== NULL
, NULL
);
1066 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1067 fail_unless(error
== NULL
, NULL
);
1070 fail_unless(num_client_connected
== 2, NULL
);
1071 fail_unless(num_client_main_connected
== 2, NULL
);
1072 fail_unless(num_client_read
== 2, NULL
);
1073 fail_unless(num_client_main_read
== 2, NULL
);
1074 fail_unless(num_client_written
== 2, NULL
);
1075 fail_unless(num_client_main_written
== 2, NULL
);
1076 fail_unless(num_client_disconnected
== 2, NULL
);
1077 fail_unless(num_client_main_disconnected
== 2, NULL
);
1078 fail_unless(num_client_errors
== 0, NULL
);
1079 fail_unless(num_client_sync_done
== 2, NULL
);
1080 fail_unless(num_client_main_sync_done
== 2, NULL
);
1083 fail_unless(num_engine_connected
== 1, NULL
);
1084 fail_unless(num_engine_errors
== 0, NULL
);
1085 fail_unless(num_engine_read
== 1, NULL
);
1086 fail_unless(num_engine_written
== 1, NULL
);
1087 fail_unless(num_engine_sync_done
== 1, NULL
);
1088 fail_unless(num_engine_disconnected
== 1, NULL
);
1089 fail_unless(num_engine_successful
== 1, NULL
);
1090 fail_unless(num_engine_end_conflicts
== 1, NULL
);
1091 fail_unless(num_engine_prev_unclean
== 0, NULL
);
1094 fail_unless(num_change_read
== 2, NULL
);
1095 fail_unless(num_change_written
== 3, NULL
);
1096 fail_unless(num_change_error
== 0, NULL
);
1098 /* Mapping checks */
1099 fail_unless(num_mapping_solved
== 1, NULL
);
1100 //fail_unless(num_mapping_written == 1, NULL);
1101 fail_unless(num_mapping_errors
== 0, NULL
);
1102 fail_unless(num_mapping_conflicts
== 1, NULL
);
1104 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1106 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
1107 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 2);
1109 check_mapping(maptable
, 1, -1, 2, "testdata");
1110 check_mapping(maptable
, 1, -1, 2, "testdata-dupe");
1111 check_mapping(maptable
, 2, -1, 2, "testdata");
1112 check_mapping(maptable
, 1, -1, 2, "testdata-dupe");
1113 osync_mapping_table_close(maptable
);
1114 osync_mapping_table_unref(maptable
);
1116 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
1117 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 2);
1119 check_hash(table
, "testdata");
1120 check_hash(table
, "testdata-dupe");
1121 osync_hashtable_unref(table
);
1123 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
1124 table
= hashtable_load(path
, "mockobjtype1", 2);
1126 check_hash(table
, "testdata");
1127 check_hash(table
, "testdata-dupe");
1128 osync_hashtable_unref(table
);
1131 osync_testing_system_abort("rm -f data1/testdata");
1132 osync_testing_system_abort("rm -f data2/testdata-dupe");
1133 g_usleep(2*G_USEC_PER_SEC
);
1134 osync_testing_system_abort("cp new_data1 data2/testdata");
1135 osync_testing_system_abort("cp new_data1 comp_data");
1138 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1139 fail_unless(error
== NULL
, NULL
);
1141 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
1142 fail_unless(error
== NULL
, NULL
);
1144 osync_engine_unref(engine
);
1147 fail_unless(num_client_connected
== 2, NULL
);
1148 fail_unless(num_client_main_connected
== 2, NULL
);
1149 fail_unless(num_client_read
== 2, NULL
);
1150 fail_unless(num_client_main_read
== 2, NULL
);
1151 fail_unless(num_client_written
== 2, NULL
);
1152 fail_unless(num_client_main_written
== 2, NULL
);
1153 fail_unless(num_client_disconnected
== 2, NULL
);
1154 fail_unless(num_client_main_disconnected
== 2, NULL
);
1155 fail_unless(num_client_errors
== 0, NULL
);
1156 fail_unless(num_client_sync_done
== 2, NULL
);
1157 fail_unless(num_client_main_sync_done
== 2, NULL
);
1160 fail_unless(num_engine_connected
== 1, NULL
);
1161 fail_unless(num_engine_errors
== 0, NULL
);
1162 fail_unless(num_engine_read
== 1, NULL
);
1163 fail_unless(num_engine_written
== 1, NULL
);
1164 fail_unless(num_engine_sync_done
== 1, NULL
);
1165 fail_unless(num_engine_disconnected
== 1, NULL
);
1166 fail_unless(num_engine_successful
== 1, NULL
);
1167 fail_unless(num_engine_end_conflicts
== 1, NULL
);
1168 fail_unless(num_engine_prev_unclean
== 0, NULL
);
1171 fail_unless(num_change_read
== 3, NULL
);
1172 fail_unless(num_change_written
== 2, NULL
);
1173 fail_unless(num_change_error
== 0, NULL
);
1175 /* Mapping checks */
1176 fail_unless(num_mapping_solved
== 2, NULL
);
1177 //fail_unless(num_mapping_written == 1, NULL);
1178 fail_unless(num_mapping_errors
== 0, NULL
);
1179 fail_unless(num_mapping_conflicts
== 1, NULL
);
1181 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1182 fail_unless(!system("test \"x$(diff -x \".*\" data1/testdata comp_data)\" = \"x\""), NULL
);
1184 path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
1185 maptable
= mappingtable_load(path
, "mockobjtype1", 1);
1187 check_mapping(maptable
, 1, -1, 2, "testdata");
1188 check_mapping(maptable
, 2, -1, 2, "testdata");
1189 osync_mapping_table_close(maptable
);
1190 osync_mapping_table_unref(maptable
);
1192 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
1193 table
= hashtable_load(path
, "mockobjtype1", 1);
1195 check_hash(table
, "testdata");
1196 osync_hashtable_unref(table
);
1198 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
1199 table
= hashtable_load(path
, "mockobjtype1", 1);
1201 check_hash(table
, "testdata");
1202 osync_hashtable_unref(table
);
1207 destroy_testbed(testbed
);
1211 START_TEST (sync_conflict_delay
)
1213 char *testbed
= setup_testbed("sync");
1214 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
1215 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
1217 create_random_file("data1/testdata1");
1218 create_random_file("data1/testdata2");
1219 create_random_file("data1/testdata3");
1221 create_random_file("data2/testdata1");
1222 create_random_file("data2/testdata2");
1223 create_random_file("data2/testdata3");
1225 OSyncError
*error
= NULL
;
1226 OSyncGroup
*group
= osync_group_new(&error
);
1227 fail_unless(group
!= NULL
, NULL
);
1228 fail_unless(error
== NULL
, NULL
);
1230 osync_group_set_schemadir(group
, testbed
);
1231 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
1232 fail_unless(error
== NULL
, NULL
);
1234 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
1235 fail_unless(engine
!= NULL
, NULL
);
1236 fail_unless(error
== NULL
, NULL
);
1237 osync_group_unref(group
);
1239 osync_engine_set_schemadir(engine
, testbed
);
1240 osync_engine_set_plugindir(engine
, plugindir
);
1241 osync_engine_set_formatdir(engine
, formatdir
);
1243 osync_engine_set_conflict_callback(engine
, conflict_handler_delay
, GINT_TO_POINTER(2));
1244 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
1245 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
1246 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
1247 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
1250 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
1251 fail_unless(error
== NULL
, NULL
);
1253 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1254 fail_unless(error
== NULL
, NULL
);
1257 fail_unless(num_client_connected
== 2, NULL
);
1258 fail_unless(num_client_main_connected
== 2, NULL
);
1259 fail_unless(num_client_read
== 2, NULL
);
1260 fail_unless(num_client_main_read
== 2, NULL
);
1261 fail_unless(num_client_written
== 2, NULL
);
1262 fail_unless(num_client_main_written
== 2, NULL
);
1263 fail_unless(num_client_disconnected
== 2, NULL
);
1264 fail_unless(num_client_main_disconnected
== 2, NULL
);
1265 fail_unless(num_client_errors
== 0, NULL
);
1266 fail_unless(num_client_sync_done
== 2, NULL
);
1267 fail_unless(num_client_main_sync_done
== 2, NULL
);
1270 fail_unless(num_engine_connected
== 1, NULL
);
1271 fail_unless(num_engine_errors
== 0, NULL
);
1272 fail_unless(num_engine_read
== 1, NULL
);
1273 fail_unless(num_engine_written
== 1, NULL
);
1274 fail_unless(num_engine_sync_done
== 1, NULL
);
1275 fail_unless(num_engine_disconnected
== 1, NULL
);
1276 fail_unless(num_engine_successful
== 1, NULL
);
1277 fail_unless(num_engine_end_conflicts
== 1, NULL
);
1278 fail_unless(num_engine_prev_unclean
== 0, NULL
);
1281 fail_unless(num_change_read
== 6, NULL
);
1282 fail_unless(num_change_written
== 3, NULL
);
1283 fail_unless(num_change_error
== 0, NULL
);
1285 /* Mapping checks */
1286 fail_unless(num_mapping_solved
== 3, NULL
);
1287 //fail_unless(num_mapping_written == 1, NULL);
1288 fail_unless(num_mapping_errors
== 0, NULL
);
1289 fail_unless(num_mapping_conflicts
== 3, NULL
);
1291 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1293 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
1294 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 3);
1296 check_mapping(maptable
, 1, -1, 2, "testdata1");
1297 check_mapping(maptable
, 2, -1, 2, "testdata1");
1298 check_mapping(maptable
, 1, -1, 2, "testdata2");
1299 check_mapping(maptable
, 2, -1, 2, "testdata2");
1300 check_mapping(maptable
, 1, -1, 2, "testdata3");
1301 check_mapping(maptable
, 2, -1, 2, "testdata3");
1302 osync_mapping_table_close(maptable
);
1303 osync_mapping_table_unref(maptable
);
1305 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
1306 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 3);
1308 check_hash(table
, "testdata1");
1309 check_hash(table
, "testdata2");
1310 check_hash(table
, "testdata3");
1311 osync_hashtable_unref(table
);
1313 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
1314 table
= hashtable_load(path
, "mockobjtype1", 3);
1316 check_hash(table
, "testdata1");
1317 check_hash(table
, "testdata2");
1318 check_hash(table
, "testdata3");
1319 osync_hashtable_unref(table
);
1321 osync_testing_system_abort("rm -f data1/testdata1");
1322 osync_testing_system_abort("rm -f data2/testdata2");
1323 osync_testing_system_abort("rm -f data1/testdata3");
1326 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1327 fail_unless(error
== NULL
, NULL
);
1329 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
1330 fail_unless(error
== NULL
, NULL
);
1332 osync_engine_unref(engine
);
1335 fail_unless(num_client_connected
== 2, NULL
);
1336 fail_unless(num_client_main_connected
== 2, NULL
);
1337 fail_unless(num_client_read
== 2, NULL
);
1338 fail_unless(num_client_main_read
== 2, NULL
);
1339 fail_unless(num_client_written
== 2, NULL
);
1340 fail_unless(num_client_main_written
== 2, NULL
);
1341 fail_unless(num_client_disconnected
== 2, NULL
);
1342 fail_unless(num_client_main_disconnected
== 2, NULL
);
1343 fail_unless(num_client_errors
== 0, NULL
);
1344 fail_unless(num_client_sync_done
== 2, NULL
);
1345 fail_unless(num_client_main_sync_done
== 2, NULL
);
1348 fail_unless(num_engine_connected
== 1, NULL
);
1349 fail_unless(num_engine_errors
== 0, NULL
);
1350 fail_unless(num_engine_read
== 1, NULL
);
1351 fail_unless(num_engine_written
== 1, NULL
);
1352 fail_unless(num_engine_sync_done
== 1, NULL
);
1353 fail_unless(num_engine_disconnected
== 1, NULL
);
1354 fail_unless(num_engine_successful
== 1, NULL
);
1355 fail_unless(num_engine_end_conflicts
== 1, NULL
);
1356 fail_unless(num_engine_prev_unclean
== 0, NULL
);
1359 fail_unless(num_change_read
== 3, NULL
);
1360 fail_unless(num_change_written
== 3, NULL
);
1361 fail_unless(num_change_error
== 0, NULL
);
1363 /* Mapping checks */
1364 fail_unless(num_mapping_solved
== 3, NULL
);
1365 //fail_unless(num_mapping_written == 1, NULL);
1366 fail_unless(num_mapping_errors
== 0, NULL
);
1367 fail_unless(num_mapping_conflicts
== 0, NULL
);
1369 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1371 path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
1372 maptable
= mappingtable_load(path
, "mockobjtype1", 0);
1374 osync_mapping_table_close(maptable
);
1375 osync_mapping_table_unref(maptable
);
1377 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
1378 table
= hashtable_load(path
, "mockobjtype1", 0);
1380 osync_hashtable_unref(table
);
1382 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
1383 table
= hashtable_load(path
, "mockobjtype1", 0);
1385 osync_hashtable_unref(table
);
1390 destroy_testbed(testbed
);
1394 START_TEST (sync_conflict_deldel
)
1396 char *testbed
= setup_testbed("sync");
1397 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
1398 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
1400 osync_testing_system_abort("cp testdata data1/testdata");
1402 OSyncError
*error
= NULL
;
1403 OSyncGroup
*group
= osync_group_new(&error
);
1404 fail_unless(group
!= NULL
, NULL
);
1405 fail_unless(error
== NULL
, NULL
);
1407 osync_group_set_schemadir(group
, testbed
);
1408 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
1409 fail_unless(error
== NULL
, NULL
);
1411 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
1412 fail_unless(engine
!= NULL
, NULL
);
1413 fail_unless(error
== NULL
, NULL
);
1414 osync_group_unref(group
);
1416 osync_engine_set_schemadir(engine
, testbed
);
1417 osync_engine_set_plugindir(engine
, plugindir
);
1418 osync_engine_set_formatdir(engine
, formatdir
);
1420 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(2));
1421 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
1422 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
1423 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
1424 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
1427 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
1428 fail_unless(error
== NULL
, NULL
);
1430 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1431 fail_unless(error
== NULL
, NULL
);
1433 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1436 osync_testing_system_abort("rm data1/testdata");
1437 osync_testing_system_abort("rm data2/testdata");
1439 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1440 fail_unless(error
== NULL
, NULL
);
1442 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
1443 fail_unless(error
== NULL
, NULL
);
1445 osync_engine_unref(engine
);
1448 fail_unless(num_client_connected
== 2, NULL
);
1449 fail_unless(num_client_main_connected
== 2, NULL
);
1450 fail_unless(num_client_read
== 2, NULL
);
1451 fail_unless(num_client_main_read
== 2, NULL
);
1452 fail_unless(num_client_written
== 2, NULL
);
1453 fail_unless(num_client_main_written
== 2, NULL
);
1454 fail_unless(num_client_disconnected
== 2, NULL
);
1455 fail_unless(num_client_main_disconnected
== 2, NULL
);
1456 fail_unless(num_client_errors
== 0, NULL
);
1457 fail_unless(num_client_sync_done
== 2, NULL
);
1458 fail_unless(num_client_main_sync_done
== 2, NULL
);
1461 fail_unless(num_engine_connected
== 1, NULL
);
1462 fail_unless(num_engine_errors
== 0, NULL
);
1463 fail_unless(num_engine_read
== 1, NULL
);
1464 fail_unless(num_engine_written
== 1, NULL
);
1465 fail_unless(num_engine_sync_done
== 1, NULL
);
1466 fail_unless(num_engine_disconnected
== 1, NULL
);
1467 fail_unless(num_engine_successful
== 1, NULL
);
1468 fail_unless(num_engine_end_conflicts
== 1, NULL
);
1469 fail_unless(num_engine_prev_unclean
== 0, NULL
);
1472 fail_unless(num_change_read
== 2, NULL
);
1473 fail_unless(num_change_written
== 0, NULL
);
1474 fail_unless(num_change_error
== 0, NULL
);
1476 /* Mapping checks */
1477 fail_unless(num_mapping_solved
== 1, NULL
);
1478 fail_unless(num_mapping_errors
== 0, NULL
);
1479 fail_unless(num_mapping_conflicts
== 0, NULL
);
1481 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1483 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
1484 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 0);
1486 osync_mapping_table_close(maptable
);
1487 osync_mapping_table_unref(maptable
);
1489 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
1490 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 0);
1492 osync_hashtable_unref(table
);
1494 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
1495 table
= hashtable_load(path
, "mockobjtype1", 0);
1497 osync_hashtable_unref(table
);
1502 destroy_testbed(testbed
);
1506 START_TEST (sync_moddel
)
1508 char *testbed
= setup_testbed("sync");
1509 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
1510 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
1512 osync_testing_system_abort("cp testdata data1/testdata");
1514 OSyncError
*error
= NULL
;
1515 OSyncGroup
*group
= osync_group_new(&error
);
1516 fail_unless(group
!= NULL
, NULL
);
1517 fail_unless(error
== NULL
, NULL
);
1519 osync_group_set_schemadir(group
, testbed
);
1520 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
1521 fail_unless(error
== NULL
, NULL
);
1523 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
1524 fail_unless(engine
!= NULL
, NULL
);
1525 fail_unless(error
== NULL
, NULL
);
1526 osync_group_unref(group
);
1528 osync_engine_set_schemadir(engine
, testbed
);
1529 osync_engine_set_plugindir(engine
, plugindir
);
1530 osync_engine_set_formatdir(engine
, formatdir
);
1532 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(2));
1533 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
1534 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
1535 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
1536 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
1539 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
1540 fail_unless(error
== NULL
, NULL
);
1542 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1543 fail_unless(error
== NULL
, NULL
);
1545 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1546 fail_unless(num_mapping_conflicts
== 0, NULL
);
1549 g_usleep(2*G_USEC_PER_SEC
);
1550 osync_testing_system_abort("cp new_data1 data1/testdata");
1551 osync_testing_system_abort("cp new_data2 data2/testdata");
1553 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1554 fail_unless(error
== NULL
, NULL
);
1557 fail_unless(num_client_connected
== 2, NULL
);
1558 fail_unless(num_client_main_connected
== 2, NULL
);
1559 fail_unless(num_client_read
== 2, NULL
);
1560 fail_unless(num_client_main_read
== 2, NULL
);
1561 fail_unless(num_client_written
== 2, NULL
);
1562 fail_unless(num_client_main_written
== 2, NULL
);
1563 fail_unless(num_client_disconnected
== 2, NULL
);
1564 fail_unless(num_client_main_disconnected
== 2, NULL
);
1565 fail_unless(num_client_errors
== 0, NULL
);
1566 fail_unless(num_client_sync_done
== 2, NULL
);
1567 fail_unless(num_client_main_sync_done
== 2, NULL
);
1570 fail_unless(num_engine_connected
== 1, NULL
);
1571 fail_unless(num_engine_errors
== 0, NULL
);
1572 fail_unless(num_engine_read
== 1, NULL
);
1573 fail_unless(num_engine_written
== 1, NULL
);
1574 fail_unless(num_engine_sync_done
== 1, NULL
);
1575 fail_unless(num_engine_disconnected
== 1, NULL
);
1576 fail_unless(num_engine_successful
== 1, NULL
);
1577 fail_unless(num_engine_end_conflicts
== 1, NULL
);
1578 fail_unless(num_engine_prev_unclean
== 0, NULL
);
1581 fail_unless(num_change_read
== 2, NULL
);
1582 fail_unless(num_change_written
== 1, NULL
);
1583 fail_unless(num_change_error
== 0, NULL
);
1585 /* Mapping checks */
1586 fail_unless(num_mapping_solved
== 1, NULL
);
1587 fail_unless(num_mapping_errors
== 0, NULL
);
1588 fail_unless(num_mapping_conflicts
== 1, NULL
);
1590 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1592 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
1593 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 1);
1595 check_mapping(maptable
, 1, 1, 2, "testdata");
1596 check_mapping(maptable
, 2, 1, 2, "testdata");
1597 osync_mapping_table_close(maptable
);
1598 osync_mapping_table_unref(maptable
);
1600 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
1601 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 1);
1603 check_hash(table
, "testdata");
1604 osync_hashtable_unref(table
);
1606 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
1607 table
= hashtable_load(path
, "mockobjtype1", 1);
1609 check_hash(table
, "testdata");
1610 osync_hashtable_unref(table
);
1614 osync_testing_system_abort("rm data2/testdata");
1616 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1617 fail_unless(error
== NULL
, NULL
);
1619 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
1620 fail_unless(error
== NULL
, NULL
);
1622 osync_engine_unref(engine
);
1625 fail_unless(num_client_connected
== 2, NULL
);
1626 fail_unless(num_client_main_connected
== 2, NULL
);
1627 fail_unless(num_client_read
== 2, NULL
);
1628 fail_unless(num_client_main_read
== 2, NULL
);
1629 fail_unless(num_client_written
== 2, NULL
);
1630 fail_unless(num_client_main_written
== 2, NULL
);
1631 fail_unless(num_client_disconnected
== 2, NULL
);
1632 fail_unless(num_client_main_disconnected
== 2, NULL
);
1633 fail_unless(num_client_errors
== 0, NULL
);
1634 fail_unless(num_client_sync_done
== 2, NULL
);
1635 fail_unless(num_client_main_sync_done
== 2, NULL
);
1638 fail_unless(num_engine_connected
== 1, NULL
);
1639 fail_unless(num_engine_errors
== 0, NULL
);
1640 fail_unless(num_engine_read
== 1, NULL
);
1641 fail_unless(num_engine_written
== 1, NULL
);
1642 fail_unless(num_engine_sync_done
== 1, NULL
);
1643 fail_unless(num_engine_disconnected
== 1, NULL
);
1644 fail_unless(num_engine_successful
== 1, NULL
);
1645 fail_unless(num_engine_end_conflicts
== 1, NULL
);
1646 fail_unless(num_engine_prev_unclean
== 0, NULL
);
1649 fail_unless(num_change_read
== 1, NULL
);
1650 fail_unless(num_change_written
== 1, NULL
);
1651 fail_unless(num_change_error
== 0, NULL
);
1653 /* Mapping checks */
1654 fail_unless(num_mapping_solved
== 1, NULL
);
1655 fail_unless(num_mapping_errors
== 0, NULL
);
1656 fail_unless(num_mapping_conflicts
== 0, NULL
);
1658 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1660 path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
1661 maptable
= mappingtable_load(path
, "mockobjtype1", 0);
1663 osync_mapping_table_close(maptable
);
1664 osync_mapping_table_unref(maptable
);
1666 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
1667 table
= hashtable_load(path
, "mockobjtype1", 0);
1669 osync_hashtable_unref(table
);
1671 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
1672 table
= hashtable_load(path
, "mockobjtype1", 0);
1674 osync_hashtable_unref(table
);
1679 destroy_testbed(testbed
);
1683 START_TEST (sync_conflict_moddel
)
1685 char *testbed
= setup_testbed("sync");
1686 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
1687 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
1689 osync_testing_system_abort("cp testdata data1/testdata");
1691 OSyncError
*error
= NULL
;
1692 OSyncGroup
*group
= osync_group_new(&error
);
1693 fail_unless(group
!= NULL
, NULL
);
1694 fail_unless(error
== NULL
, NULL
);
1696 osync_group_set_schemadir(group
, testbed
);
1697 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
1698 fail_unless(error
== NULL
, NULL
);
1700 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
1701 fail_unless(engine
!= NULL
, NULL
);
1702 fail_unless(error
== NULL
, NULL
);
1703 osync_group_unref(group
);
1705 osync_engine_set_schemadir(engine
, testbed
);
1706 osync_engine_set_plugindir(engine
, plugindir
);
1707 osync_engine_set_formatdir(engine
, formatdir
);
1709 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_deleted
, GINT_TO_POINTER(2));
1710 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
1711 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
1712 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
1713 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
1716 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
1717 fail_unless(error
== NULL
, NULL
);
1719 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1720 fail_unless(error
== NULL
, NULL
);
1722 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1723 fail_unless(num_mapping_conflicts
== 0, NULL
);
1726 g_usleep(2*G_USEC_PER_SEC
);
1727 osync_testing_system_abort("cp new_data2 data1/testdata");
1728 osync_testing_system_abort("rm -f data2/testdata");
1730 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1731 fail_unless(error
== NULL
, NULL
);
1733 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
1734 fail_unless(error
== NULL
, NULL
);
1736 osync_engine_unref(engine
);
1739 fail_unless(num_client_connected
== 2, NULL
);
1740 fail_unless(num_client_main_connected
== 2, NULL
);
1741 fail_unless(num_client_read
== 2, NULL
);
1742 fail_unless(num_client_main_read
== 2, NULL
);
1743 fail_unless(num_client_written
== 2, NULL
);
1744 fail_unless(num_client_main_written
== 2, NULL
);
1745 fail_unless(num_client_disconnected
== 2, NULL
);
1746 fail_unless(num_client_main_disconnected
== 2, NULL
);
1747 fail_unless(num_client_errors
== 0, NULL
);
1748 fail_unless(num_client_sync_done
== 2, NULL
);
1749 fail_unless(num_client_main_sync_done
== 2, NULL
);
1752 fail_unless(num_engine_connected
== 1, NULL
);
1753 fail_unless(num_engine_errors
== 0, NULL
);
1754 fail_unless(num_engine_read
== 1, NULL
);
1755 fail_unless(num_engine_written
== 1, NULL
);
1756 fail_unless(num_engine_sync_done
== 1, NULL
);
1757 fail_unless(num_engine_disconnected
== 1, NULL
);
1758 fail_unless(num_engine_successful
== 1, NULL
);
1759 fail_unless(num_engine_end_conflicts
== 1, NULL
);
1760 fail_unless(num_engine_prev_unclean
== 0, NULL
);
1763 fail_unless(num_change_read
== 2, NULL
);
1764 fail_unless(num_change_written
== 1, NULL
);
1765 fail_unless(num_change_error
== 0, NULL
);
1767 /* Mapping checks */
1768 fail_unless(num_mapping_solved
== 1, NULL
);
1769 fail_unless(num_mapping_errors
== 0, NULL
);
1770 fail_unless(num_mapping_conflicts
== 1, NULL
);
1772 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1774 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
1775 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 0);
1777 osync_mapping_table_close(maptable
);
1778 osync_mapping_table_unref(maptable
);
1780 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
1781 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 0);
1783 osync_hashtable_unref(table
);
1785 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
1786 table
= hashtable_load(path
, "mockobjtype1", 0);
1788 osync_hashtable_unref(table
);
1790 fail_unless(!system("test \"x$(ls data1)\" = \"x\""), NULL
);
1791 fail_unless(!system("test \"x$(ls data2)\" = \"x\""), NULL
);
1796 destroy_testbed(testbed
);
1800 START_TEST (sync_easy_dualdel
)
1802 char *testbed
= setup_testbed("sync");
1803 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
1804 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
1806 osync_testing_system_abort("cp testdata data1/testdata");
1807 osync_testing_system_abort("cp new_data1 data1/testdata2");
1809 OSyncError
*error
= NULL
;
1810 OSyncGroup
*group
= osync_group_new(&error
);
1811 fail_unless(group
!= NULL
, NULL
);
1812 fail_unless(error
== NULL
, NULL
);
1814 osync_group_set_schemadir(group
, testbed
);
1815 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
1816 fail_unless(error
== NULL
, NULL
);
1818 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
1819 fail_unless(engine
!= NULL
, NULL
);
1820 fail_unless(error
== NULL
, NULL
);
1821 osync_group_unref(group
);
1823 osync_engine_set_schemadir(engine
, testbed
);
1824 osync_engine_set_plugindir(engine
, plugindir
);
1825 osync_engine_set_formatdir(engine
, formatdir
);
1827 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_deleted
, GINT_TO_POINTER(2));
1828 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
1829 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
1830 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
1831 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
1834 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
1835 fail_unless(error
== NULL
, NULL
);
1837 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1838 fail_unless(error
== NULL
, NULL
);
1841 fail_unless(num_client_connected
== 2, NULL
);
1842 fail_unless(num_client_main_connected
== 2, NULL
);
1843 fail_unless(num_client_read
== 2, NULL
);
1844 fail_unless(num_client_main_read
== 2, NULL
);
1845 fail_unless(num_client_written
== 2, NULL
);
1846 fail_unless(num_client_main_written
== 2, NULL
);
1847 fail_unless(num_client_disconnected
== 2, NULL
);
1848 fail_unless(num_client_main_disconnected
== 2, NULL
);
1849 fail_unless(num_client_errors
== 0, NULL
);
1850 fail_unless(num_client_sync_done
== 2, NULL
);
1851 fail_unless(num_client_main_sync_done
== 2, NULL
);
1854 fail_unless(num_engine_connected
== 1, NULL
);
1855 fail_unless(num_engine_errors
== 0, NULL
);
1856 fail_unless(num_engine_read
== 1, NULL
);
1857 fail_unless(num_engine_written
== 1, NULL
);
1858 fail_unless(num_engine_sync_done
== 1, NULL
);
1859 fail_unless(num_engine_disconnected
== 1, NULL
);
1860 fail_unless(num_engine_successful
== 1, NULL
);
1861 fail_unless(num_engine_end_conflicts
== 1, NULL
);
1862 fail_unless(num_engine_prev_unclean
== 0, NULL
);
1865 fail_unless(num_change_read
== 2, NULL
);
1866 fail_unless(num_change_written
== 2, NULL
);
1867 fail_unless(num_change_error
== 0, NULL
);
1869 /* Mapping checks */
1870 fail_unless(num_mapping_solved
== 2, NULL
);
1871 fail_unless(num_mapping_errors
== 0, NULL
);
1872 fail_unless(num_mapping_conflicts
== 0, NULL
);
1874 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1876 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
1877 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 2);
1880 check_mapping(maptable
, 2, -1, 2, "testdata2");
1881 check_mapping(maptable
, 1, -1, 2, "testdata2");
1882 check_mapping(maptable
, 2, -1, 2, "testdata");
1883 check_mapping(maptable
, 1, -1, 2, "testdata");
1885 osync_mapping_table_close(maptable
);
1886 osync_mapping_table_unref(maptable
);
1888 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
1889 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 2);
1891 check_hash(table
, "testdata");
1892 check_hash(table
, "testdata2");
1893 osync_hashtable_unref(table
);
1895 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
1896 table
= hashtable_load(path
, "mockobjtype1", 2);
1898 check_hash(table
, "testdata");
1899 check_hash(table
, "testdata2");
1900 osync_hashtable_unref(table
);
1904 g_usleep(2*G_USEC_PER_SEC
);
1905 osync_testing_system_abort("rm -f data1/testdata");
1906 osync_testing_system_abort("rm -f data1/testdata2");
1908 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
1909 fail_unless(error
== NULL
, NULL
);
1911 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
1912 fail_unless(error
== NULL
, NULL
);
1914 osync_engine_unref(engine
);
1917 fail_unless(num_client_connected
== 2, NULL
);
1918 fail_unless(num_client_main_connected
== 2, NULL
);
1919 fail_unless(num_client_read
== 2, NULL
);
1920 fail_unless(num_client_main_read
== 2, NULL
);
1921 fail_unless(num_client_written
== 2, NULL
);
1922 fail_unless(num_client_main_written
== 2, NULL
);
1923 fail_unless(num_client_disconnected
== 2, NULL
);
1924 fail_unless(num_client_main_disconnected
== 2, NULL
);
1925 fail_unless(num_client_errors
== 0, NULL
);
1926 fail_unless(num_client_sync_done
== 2, NULL
);
1927 fail_unless(num_client_main_sync_done
== 2, NULL
);
1930 fail_unless(num_engine_connected
== 1, NULL
);
1931 fail_unless(num_engine_errors
== 0, NULL
);
1932 fail_unless(num_engine_read
== 1, NULL
);
1933 fail_unless(num_engine_written
== 1, NULL
);
1934 fail_unless(num_engine_sync_done
== 1, NULL
);
1935 fail_unless(num_engine_disconnected
== 1, NULL
);
1936 fail_unless(num_engine_successful
== 1, NULL
);
1937 fail_unless(num_engine_end_conflicts
== 1, NULL
);
1938 fail_unless(num_engine_prev_unclean
== 0, NULL
);
1941 fail_unless(num_change_read
== 2, NULL
);
1942 fail_unless(num_change_written
== 2, NULL
);
1943 fail_unless(num_change_error
== 0, NULL
);
1945 /* Mapping checks */
1946 fail_unless(num_mapping_solved
== 2, NULL
);
1947 fail_unless(num_mapping_errors
== 0, NULL
);
1948 fail_unless(num_mapping_conflicts
== 0, NULL
);
1950 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
1952 path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
1953 maptable
= mappingtable_load(path
, "mockobjtype1", 0);
1955 osync_mapping_table_close(maptable
);
1956 osync_mapping_table_unref(maptable
);
1958 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
1959 table
= hashtable_load(path
, "mockobjtype1", 0);
1961 osync_hashtable_unref(table
);
1963 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
1964 table
= hashtable_load(path
, "mockobjtype1", 0);
1966 osync_hashtable_unref(table
);
1968 fail_unless(!system("test \"x$(ls data1)\" = \"x\""), NULL
);
1969 fail_unless(!system("test \"x$(ls data2)\" = \"x\""), NULL
);
1974 destroy_testbed(testbed
);
1978 START_TEST (sync_large
)
1980 char *testbed
= setup_testbed("sync");
1981 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
1982 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
1984 create_random_file("data1/file1");
1985 create_random_file("data1/file2");
1986 create_random_file("data1/file4");
1987 create_random_file("data1/file5");
1988 create_random_file("data1/file9");
1989 create_random_file("data1/file10");
1991 osync_testing_system_abort("cp data1/file2 data2/file2");
1992 create_random_file("data2/file3");
1993 create_random_file("data2/file4");
1994 osync_testing_system_abort("cp data1/file5 data2/file5");
1995 create_random_file("data2/file6");
1996 create_random_file("data2/file7");
1997 create_random_file("data2/file8");
1998 create_random_file("data2/file10");
2000 OSyncError
*error
= NULL
;
2001 OSyncGroup
*group
= osync_group_new(&error
);
2002 fail_unless(group
!= NULL
, NULL
);
2003 fail_unless(error
== NULL
, NULL
);
2005 osync_group_set_schemadir(group
, testbed
);
2006 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
2007 fail_unless(error
== NULL
, NULL
);
2009 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
2010 fail_unless(engine
!= NULL
, NULL
);
2011 fail_unless(error
== NULL
, NULL
);
2012 osync_group_unref(group
);
2014 osync_engine_set_schemadir(engine
, testbed
);
2015 osync_engine_set_plugindir(engine
, plugindir
);
2016 osync_engine_set_formatdir(engine
, formatdir
);
2018 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(2));
2019 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
2020 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
2021 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
2022 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
2025 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
2026 fail_unless(error
== NULL
, NULL
);
2028 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
2029 fail_unless(error
== NULL
, NULL
);
2032 fail_unless(num_client_connected
== 2, NULL
);
2033 fail_unless(num_client_main_connected
== 2, NULL
);
2034 fail_unless(num_client_read
== 2, NULL
);
2035 fail_unless(num_client_main_read
== 2, NULL
);
2036 fail_unless(num_client_written
== 2, NULL
);
2037 fail_unless(num_client_main_written
== 2, NULL
);
2038 fail_unless(num_client_disconnected
== 2, NULL
);
2039 fail_unless(num_client_main_disconnected
== 2, NULL
);
2040 fail_unless(num_client_errors
== 0, NULL
);
2041 fail_unless(num_client_sync_done
== 2, NULL
);
2042 fail_unless(num_client_main_sync_done
== 2, NULL
);
2045 fail_unless(num_engine_connected
== 1, NULL
);
2046 fail_unless(num_engine_errors
== 0, NULL
);
2047 fail_unless(num_engine_read
== 1, NULL
);
2048 fail_unless(num_engine_written
== 1, NULL
);
2049 fail_unless(num_engine_sync_done
== 1, NULL
);
2050 fail_unless(num_engine_disconnected
== 1, NULL
);
2051 fail_unless(num_engine_successful
== 1, NULL
);
2052 fail_unless(num_engine_end_conflicts
== 1, NULL
);
2053 fail_unless(num_engine_prev_unclean
== 0, NULL
);
2056 fail_unless(num_change_read
== 14, NULL
);
2057 fail_unless(num_change_written
== 8, NULL
);
2058 fail_unless(num_change_error
== 0, NULL
);
2060 /* Mapping checks */
2061 fail_unless(num_mapping_solved
== 10, NULL
);
2062 fail_unless(num_mapping_errors
== 0, NULL
);
2063 fail_unless(num_mapping_conflicts
== 2, NULL
);
2065 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
2067 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
2068 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 10);
2070 check_mapping(maptable
, 1, -1, 2, "file1");
2071 check_mapping(maptable
, 2, -1, 2, "file1");
2072 check_mapping(maptable
, 1, -1, 2, "file2");
2073 check_mapping(maptable
, 2, -1, 2, "file2");
2074 check_mapping(maptable
, 1, -1, 2, "file3");
2075 check_mapping(maptable
, 2, -1, 2, "file3");
2076 check_mapping(maptable
, 1, -1, 2, "file4");
2077 check_mapping(maptable
, 2, -1, 2, "file4");
2078 check_mapping(maptable
, 1, -1, 2, "file5");
2079 check_mapping(maptable
, 2, -1, 2, "file5");
2080 check_mapping(maptable
, 1, -1, 2, "file6");
2081 check_mapping(maptable
, 2, -1, 2, "file6");
2082 check_mapping(maptable
, 1, -1, 2, "file7");
2083 check_mapping(maptable
, 2, -1, 2, "file7");
2084 check_mapping(maptable
, 1, -1, 2, "file8");
2085 check_mapping(maptable
, 2, -1, 2, "file8");
2086 check_mapping(maptable
, 1, -1, 2, "file9");
2087 check_mapping(maptable
, 2, -1, 2, "file9");
2088 check_mapping(maptable
, 1, -1, 2, "file10");
2089 check_mapping(maptable
, 2, -1, 2, "file10");
2090 osync_mapping_table_close(maptable
);
2091 osync_mapping_table_unref(maptable
);
2093 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
2094 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 10);
2096 check_hash(table
, "file1");
2097 check_hash(table
, "file2");
2098 check_hash(table
, "file3");
2099 check_hash(table
, "file4");
2100 check_hash(table
, "file5");
2101 check_hash(table
, "file6");
2102 check_hash(table
, "file7");
2103 check_hash(table
, "file8");
2104 check_hash(table
, "file9");
2105 check_hash(table
, "file10");
2106 osync_hashtable_unref(table
);
2108 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
2109 table
= hashtable_load(path
, "mockobjtype1", 10);
2111 check_hash(table
, "file1");
2112 check_hash(table
, "file2");
2113 check_hash(table
, "file3");
2114 check_hash(table
, "file4");
2115 check_hash(table
, "file5");
2116 check_hash(table
, "file6");
2117 check_hash(table
, "file7");
2118 check_hash(table
, "file8");
2119 check_hash(table
, "file9");
2120 check_hash(table
, "file10");
2121 osync_hashtable_unref(table
);
2125 g_usleep(2*G_USEC_PER_SEC
);
2127 create_random_file("data1/file11");
2129 create_random_file("data2/file12");
2131 create_random_file("data1/file1");
2133 create_random_file("data2/file2");
2135 osync_testing_system_abort("rm -f data1/file3");
2137 osync_testing_system_abort("rm -f data2/file4");
2138 //Add left, right, same
2139 create_random_file("data1/file13");
2140 osync_testing_system_abort("cp data1/file13 data2/file13");
2141 //Add left, right, conflict
2142 create_random_file("data1/file14");
2143 create_random_file("data2/file14");
2144 //Modify left, right, same
2145 create_random_file("data1/file5");
2146 osync_testing_system_abort("cp data1/file5 data2/file5");
2147 //Modify left, right, conflict
2148 create_random_file("data1/file6");
2149 create_random_file("data2/file6");
2150 //Delete left, right
2151 osync_testing_system_abort("rm -f data1/file7");
2152 osync_testing_system_abort("rm -f data2/file7");
2153 //delete left, modify right
2154 osync_testing_system_abort("rm -f data1/file8");
2155 create_random_file("data2/file8");
2156 //modify left, delete right
2157 create_random_file("data1/file9");
2158 osync_testing_system_abort("rm -f data2/file9");
2161 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
2162 fail_unless(error
== NULL
, NULL
);
2165 fail_unless(num_client_connected
== 2, NULL
);
2166 fail_unless(num_client_main_connected
== 2, NULL
);
2167 fail_unless(num_client_read
== 2, NULL
);
2168 fail_unless(num_client_main_read
== 2, NULL
);
2169 fail_unless(num_client_written
== 2, NULL
);
2170 fail_unless(num_client_main_written
== 2, NULL
);
2171 fail_unless(num_client_disconnected
== 2, NULL
);
2172 fail_unless(num_client_main_disconnected
== 2, NULL
);
2173 fail_unless(num_client_errors
== 0, NULL
);
2174 fail_unless(num_client_sync_done
== 2, NULL
);
2175 fail_unless(num_client_main_sync_done
== 2, NULL
);
2178 fail_unless(num_engine_connected
== 1, NULL
);
2179 fail_unless(num_engine_errors
== 0, NULL
);
2180 fail_unless(num_engine_read
== 1, NULL
);
2181 fail_unless(num_engine_written
== 1, NULL
);
2182 fail_unless(num_engine_sync_done
== 1, NULL
);
2183 fail_unless(num_engine_disconnected
== 1, NULL
);
2184 fail_unless(num_engine_successful
== 1, NULL
);
2185 fail_unless(num_engine_end_conflicts
== 1, NULL
);
2186 fail_unless(num_engine_prev_unclean
== 0, NULL
);
2189 fail_unless(num_change_read
== 20, NULL
);
2190 fail_unless(num_change_written
== 10, NULL
);
2191 fail_unless(num_change_error
== 0, NULL
);
2193 /* Mapping checks */
2194 fail_unless(num_mapping_solved
== 13, NULL
);
2195 fail_unless(num_mapping_errors
== 0, NULL
);
2196 fail_unless(num_mapping_conflicts
== 4, NULL
);
2198 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
2200 path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
2201 maptable
= mappingtable_load(path
, "mockobjtype1", 10);
2203 check_mapping(maptable
, 1, -1, 2, "file1");
2204 check_mapping(maptable
, 2, -1, 2, "file1");
2205 check_mapping(maptable
, 1, -1, 2, "file2");
2206 check_mapping(maptable
, 2, -1, 2, "file2");
2207 check_mapping(maptable
, 1, -1, 2, "file5");
2208 check_mapping(maptable
, 2, -1, 2, "file5");
2209 check_mapping(maptable
, 1, -1, 2, "file6");
2210 check_mapping(maptable
, 2, -1, 2, "file6");
2211 check_mapping(maptable
, 1, -1, 2, "file9");
2212 check_mapping(maptable
, 2, -1, 2, "file9");
2213 check_mapping(maptable
, 1, -1, 2, "file10");
2214 check_mapping(maptable
, 2, -1, 2, "file10");
2215 check_mapping(maptable
, 1, -1, 2, "file11");
2216 check_mapping(maptable
, 2, -1, 2, "file11");
2217 check_mapping(maptable
, 1, -1, 2, "file12");
2218 check_mapping(maptable
, 2, -1, 2, "file12");
2219 check_mapping(maptable
, 1, -1, 2, "file13");
2220 check_mapping(maptable
, 2, -1, 2, "file13");
2221 check_mapping(maptable
, 1, -1, 2, "file14");
2222 check_mapping(maptable
, 2, -1, 2, "file14");
2223 osync_mapping_table_close(maptable
);
2224 osync_mapping_table_unref(maptable
);
2226 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
2227 table
= hashtable_load(path
, "mockobjtype1", 10);
2229 check_hash(table
, "file1");
2230 check_hash(table
, "file2");
2231 check_hash(table
, "file5");
2232 check_hash(table
, "file6");
2233 check_hash(table
, "file9");
2234 check_hash(table
, "file10");
2235 check_hash(table
, "file11");
2236 check_hash(table
, "file12");
2237 check_hash(table
, "file13");
2238 check_hash(table
, "file14");
2239 osync_hashtable_unref(table
);
2241 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
2242 table
= hashtable_load(path
, "mockobjtype1", 10);
2244 check_hash(table
, "file1");
2245 check_hash(table
, "file2");
2246 check_hash(table
, "file5");
2247 check_hash(table
, "file6");
2248 check_hash(table
, "file9");
2249 check_hash(table
, "file10");
2250 check_hash(table
, "file11");
2251 check_hash(table
, "file12");
2252 check_hash(table
, "file13");
2253 check_hash(table
, "file14");
2254 osync_hashtable_unref(table
);
2259 osync_testing_system_abort("rm -f data1/file1");
2260 osync_testing_system_abort("rm -f data1/file2");
2261 osync_testing_system_abort("rm -f data1/file10");
2262 osync_testing_system_abort("rm -f data1/file11");
2263 osync_testing_system_abort("rm -f data1/file12");
2264 osync_testing_system_abort("rm -f data1/file13");
2265 osync_testing_system_abort("rm -f data1/file14");
2268 osync_testing_system_abort("rm -f data2/file5");
2269 osync_testing_system_abort("rm -f data2/file6");
2270 osync_testing_system_abort("rm -f data2/file9");
2271 osync_testing_system_abort("rm -f data2/file10");
2272 osync_testing_system_abort("rm -f data2/file11");
2273 osync_testing_system_abort("rm -f data2/file12");
2274 osync_testing_system_abort("rm -f data2/file13");
2275 osync_testing_system_abort("rm -f data2/file14");
2277 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
2278 fail_unless(error
== NULL
, NULL
);
2280 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
2281 fail_unless(error
== NULL
, NULL
);
2283 osync_engine_unref(engine
);
2285 fail_unless(num_client_connected
== 2, NULL
);
2286 fail_unless(num_client_main_connected
== 2, NULL
);
2287 fail_unless(num_client_read
== 2, NULL
);
2288 fail_unless(num_client_main_read
== 2, NULL
);
2289 fail_unless(num_client_written
== 2, NULL
);
2290 fail_unless(num_client_main_written
== 2, NULL
);
2291 fail_unless(num_client_disconnected
== 2, NULL
);
2292 fail_unless(num_client_main_disconnected
== 2, NULL
);
2293 fail_unless(num_client_errors
== 0, NULL
);
2294 fail_unless(num_client_sync_done
== 2, NULL
);
2295 fail_unless(num_client_main_sync_done
== 2, NULL
);
2298 fail_unless(num_engine_connected
== 1, NULL
);
2299 fail_unless(num_engine_errors
== 0, NULL
);
2300 fail_unless(num_engine_read
== 1, NULL
);
2301 fail_unless(num_engine_written
== 1, NULL
);
2302 fail_unless(num_engine_sync_done
== 1, NULL
);
2303 fail_unless(num_engine_disconnected
== 1, NULL
);
2304 fail_unless(num_engine_successful
== 1, NULL
);
2305 fail_unless(num_engine_end_conflicts
== 1, NULL
);
2306 fail_unless(num_engine_prev_unclean
== 0, NULL
);
2309 fail_unless(num_change_read
== 15, NULL
);
2310 fail_unless(num_change_written
== 5, NULL
);
2311 fail_unless(num_change_error
== 0, NULL
);
2313 /* Mapping checks */
2314 fail_unless(num_mapping_solved
== 10, NULL
);
2315 fail_unless(num_mapping_errors
== 0, NULL
);
2316 fail_unless(num_mapping_conflicts
== 0, NULL
);
2319 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
2321 path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
2322 maptable
= mappingtable_load(path
, "mockobjtype1", 0);
2324 osync_mapping_table_close(maptable
);
2325 osync_mapping_table_unref(maptable
);
2327 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
2328 table
= hashtable_load(path
, "mockobjtype1", 0);
2330 osync_hashtable_unref(table
);
2332 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
2333 table
= hashtable_load(path
, "mockobjtype1", 0);
2335 osync_hashtable_unref(table
);
2337 fail_unless(!system("test \"x$(ls data1)\" = \"x\""), NULL
);
2338 fail_unless(!system("test \"x$(ls data2)\" = \"x\""), NULL
);
2343 destroy_testbed(testbed
);
2347 /* We want to detect a single objtype "mockobjtype1"
2349 * - First we send the config to the plugin
2350 * - Then the plugin will report the objtypes
2352 START_TEST (sync_detect_obj
)
2354 char *testbed
= setup_testbed("sync_multi");
2355 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
2356 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
2358 osync_testing_system_abort("mkdir file-1");
2359 osync_testing_system_abort("mkdir file2-1");
2360 osync_testing_system_abort("mkdir file3-1");
2362 osync_testing_system_abort("mkdir file-2");
2363 osync_testing_system_abort("mkdir file2-2");
2364 osync_testing_system_abort("mkdir file3-2");
2366 create_random_file("file-1/file1");
2368 OSyncError
*error
= NULL
;
2369 OSyncGroup
*group
= osync_group_new(&error
);
2370 fail_unless(group
!= NULL
, NULL
);
2371 fail_unless(error
== NULL
, NULL
);
2373 osync_group_set_schemadir(group
, testbed
);
2374 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
2375 fail_unless(error
== NULL
, NULL
);
2377 OSyncMember
*member1
= osync_group_nth_member(group
, 0);
2378 OSyncPluginConfig
*config1
= simple_plugin_config(NULL
, "file-1", "mockobjtype1", "mockformat1", NULL
);
2379 simple_plugin_config(config1
, "file2-1", "mockobjtype2", "mockformat2", NULL
);
2380 simple_plugin_config(config1
, "file3-1", "mockobjtype3", "mockformat3", NULL
);
2381 osync_member_set_config(member1
, config1
);
2382 osync_plugin_config_unref(config1
);
2384 OSyncMember
*member2
= osync_group_nth_member(group
, 1);
2385 OSyncPluginConfig
*config2
= simple_plugin_config(NULL
, "file-2", "mockobjtype1", "mockformat1", NULL
);
2386 simple_plugin_config(config2
, "file2-2", "mockobjtype2", "mockformat2", NULL
);
2387 simple_plugin_config(config2
, "file3-2", "mockobjtype3", "mockformat3", NULL
);
2388 osync_member_set_config(member2
, config2
);
2389 osync_plugin_config_unref(config2
);
2391 /* Check that we dont have any discovered objtypes */
2392 fail_unless(osync_member_num_objtypes(member1
) == 0, NULL
);
2393 fail_unless(osync_member_num_objtypes(member2
) == 0, NULL
);
2395 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
2396 fail_unless(engine
!= NULL
, NULL
);
2397 fail_unless(error
== NULL
, NULL
);
2398 osync_group_unref(group
);
2400 osync_engine_set_schemadir(engine
, testbed
);
2401 osync_engine_set_plugindir(engine
, plugindir
);
2402 osync_engine_set_formatdir(engine
, formatdir
);
2404 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(2));
2405 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
2406 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
2407 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
2408 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
2410 /* Discover the objtypes for the members */
2411 fail_unless(osync_engine_discover_and_block(engine
, member1
, &error
), NULL
);
2412 fail_unless(osync_member_num_objtypes(member1
) == 3, NULL
);
2415 fail_unless(num_client_connected
== 0, NULL
);
2416 fail_unless(num_client_main_connected
== 0, NULL
);
2417 fail_unless(num_client_read
== 0, NULL
);
2418 fail_unless(num_client_main_read
== 0, NULL
);
2419 fail_unless(num_client_written
== 0, NULL
);
2420 fail_unless(num_client_main_written
== 0, NULL
);
2421 fail_unless(num_client_disconnected
== 0, NULL
);
2422 fail_unless(num_client_main_disconnected
== 0, NULL
);
2423 fail_unless(num_client_errors
== 0, NULL
);
2424 fail_unless(num_client_sync_done
== 0, NULL
);
2425 fail_unless(num_client_main_sync_done
== 0, NULL
);
2426 fail_unless(num_client_discovered
== 1, NULL
);
2429 fail_unless(num_engine_connected
== 0, NULL
);
2430 fail_unless(num_engine_errors
== 0, NULL
);
2431 fail_unless(num_engine_read
== 0, NULL
);
2432 fail_unless(num_engine_written
== 0, NULL
);
2433 fail_unless(num_engine_sync_done
== 0, NULL
);
2434 fail_unless(num_engine_disconnected
== 0, NULL
);
2435 fail_unless(num_engine_successful
== 0, NULL
);
2436 fail_unless(num_engine_end_conflicts
== 0, NULL
);
2437 fail_unless(num_engine_prev_unclean
== 0, NULL
);
2440 fail_unless(num_change_read
== 0, NULL
);
2441 fail_unless(num_change_written
== 0, NULL
);
2442 fail_unless(num_change_error
== 0, NULL
);
2444 /* Mapping checks */
2445 fail_unless(num_mapping_solved
== 0, NULL
);
2446 fail_unless(num_mapping_errors
== 0, NULL
);
2447 fail_unless(num_mapping_conflicts
== 0, NULL
);
2450 fail_unless(osync_engine_discover_and_block(engine
, member2
, &error
), NULL
);
2451 fail_unless(osync_member_num_objtypes(member2
) == 3, NULL
);
2454 fail_unless(num_client_connected
== 0, NULL
);
2455 fail_unless(num_client_main_connected
== 0, NULL
);
2456 fail_unless(num_client_read
== 0, NULL
);
2457 fail_unless(num_client_main_read
== 0, NULL
);
2458 fail_unless(num_client_written
== 0, NULL
);
2459 fail_unless(num_client_main_written
== 0, NULL
);
2460 fail_unless(num_client_disconnected
== 0, NULL
);
2461 fail_unless(num_client_main_disconnected
== 0, NULL
);
2462 fail_unless(num_client_errors
== 0, NULL
);
2463 fail_unless(num_client_sync_done
== 0, NULL
);
2464 fail_unless(num_client_main_sync_done
== 0, NULL
);
2465 fail_unless(num_client_discovered
== 1, NULL
);
2468 fail_unless(num_engine_connected
== 0, NULL
);
2469 fail_unless(num_engine_errors
== 0, NULL
);
2470 fail_unless(num_engine_read
== 0, NULL
);
2471 fail_unless(num_engine_written
== 0, NULL
);
2472 fail_unless(num_engine_sync_done
== 0, NULL
);
2473 fail_unless(num_engine_disconnected
== 0, NULL
);
2474 fail_unless(num_engine_successful
== 0, NULL
);
2475 fail_unless(num_engine_end_conflicts
== 0, NULL
);
2476 fail_unless(num_engine_prev_unclean
== 0, NULL
);
2479 fail_unless(num_change_read
== 0, NULL
);
2480 fail_unless(num_change_written
== 0, NULL
);
2481 fail_unless(num_change_error
== 0, NULL
);
2483 /* Mapping checks */
2484 fail_unless(num_mapping_solved
== 0, NULL
);
2485 fail_unless(num_mapping_errors
== 0, NULL
);
2486 fail_unless(num_mapping_conflicts
== 0, NULL
);
2488 fail_unless(osync_group_num_objtypes(group
) == 3, NULL
);
2491 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
2492 fail_unless(error
== NULL
, NULL
);
2494 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
2495 fail_unless(error
== NULL
, NULL
);
2497 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
2498 fail_unless(error
== NULL
, NULL
);
2500 osync_engine_unref(engine
);
2503 fail_unless(num_client_connected
== 6, NULL
);
2504 fail_unless(num_client_main_connected
== 2, NULL
);
2505 fail_unless(num_client_read
== 6, NULL
);
2506 fail_unless(num_client_main_read
== 2, NULL
);
2507 fail_unless(num_client_written
== 6, NULL
);
2508 fail_unless(num_client_main_written
== 2, NULL
);
2509 fail_unless(num_client_disconnected
== 6, NULL
);
2510 fail_unless(num_client_main_disconnected
== 2, NULL
);
2511 fail_unless(num_client_errors
== 0, NULL
);
2512 fail_unless(num_client_sync_done
== 6, NULL
);
2513 fail_unless(num_client_main_sync_done
== 2, NULL
);
2514 fail_unless(num_client_discovered
== 0, NULL
);
2517 fail_unless(num_engine_connected
== 1, NULL
);
2518 fail_unless(num_engine_errors
== 0, NULL
);
2519 fail_unless(num_engine_read
== 1, NULL
);
2520 fail_unless(num_engine_written
== 1, NULL
);
2521 fail_unless(num_engine_sync_done
== 1, NULL
);
2522 fail_unless(num_engine_disconnected
== 1, NULL
);
2523 fail_unless(num_engine_successful
== 1, NULL
);
2524 fail_unless(num_engine_end_conflicts
== 1, NULL
);
2525 fail_unless(num_engine_prev_unclean
== 0, NULL
);
2528 fail_unless(num_change_read
== 1, NULL
);
2529 fail_unless(num_change_written
== 1, NULL
);
2530 fail_unless(num_change_error
== 0, NULL
);
2532 /* Mapping checks */
2533 fail_unless(num_mapping_solved
== 1, NULL
);
2534 fail_unless(num_mapping_errors
== 0, NULL
);
2535 fail_unless(num_mapping_conflicts
== 0, NULL
);
2537 fail_unless(!system("test \"x$(diff -x \".*\" file-1 file-2)\" = \"x\""), NULL
);
2539 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
2540 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 1);
2542 check_mapping(maptable
, 1, -1, 2, "file1");
2543 check_mapping(maptable
, 2, -1, 2, "file1");
2544 osync_mapping_table_close(maptable
);
2545 osync_mapping_table_unref(maptable
);
2547 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
2548 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 1);
2550 check_hash(table
, "file1");
2551 osync_hashtable_unref(table
);
2553 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
2554 table
= hashtable_load(path
, "mockobjtype1", 1);
2556 check_hash(table
, "file1");
2557 osync_hashtable_unref(table
);
2562 destroy_testbed(testbed
);
2566 START_TEST (sync_detect_obj2
)
2568 char *testbed
= setup_testbed("sync_multi");
2569 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
2570 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
2572 osync_testing_system_abort("mkdir file-1");
2573 osync_testing_system_abort("mkdir file2-1");
2574 osync_testing_system_abort("mkdir file3-1");
2576 osync_testing_system_abort("mkdir file-2");
2577 osync_testing_system_abort("mkdir file2-2");
2578 osync_testing_system_abort("mkdir file3-2");
2580 create_random_file("file-1/file1");
2582 OSyncError
*error
= NULL
;
2583 OSyncGroup
*group
= osync_group_new(&error
);
2584 fail_unless(group
!= NULL
, NULL
);
2585 fail_unless(error
== NULL
, NULL
);
2587 osync_group_set_schemadir(group
, testbed
);
2588 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
2589 fail_unless(error
== NULL
, NULL
);
2591 OSyncMember
*member1
= osync_group_nth_member(group
, 0);
2592 OSyncPluginConfig
*config1
= simple_plugin_config(NULL
, "file-1", "mockobjtype1", "mockformat1", NULL
);
2593 simple_plugin_config(config1
, "file2-1", "mockobjtype2", "mockformat2", NULL
);
2594 simple_plugin_config(config1
, "file3-1", "mockobjtype3", "mockformat3", NULL
);
2595 osync_member_set_config(member1
, config1
);
2596 osync_plugin_config_unref(config1
);
2598 OSyncMember
*member2
= osync_group_nth_member(group
, 1);
2599 OSyncPluginConfig
*config2
= simple_plugin_config(NULL
, "file-2", "mockobjtype1", "mockformat1", NULL
);
2600 osync_member_set_config(member2
, config2
);
2601 osync_plugin_config_unref(config2
);
2603 /* Check that we dont have any discovered objtypes */
2604 fail_unless(osync_member_num_objtypes(member1
) == 0, NULL
);
2605 fail_unless(osync_member_num_objtypes(member2
) == 0, NULL
);
2607 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
2608 fail_unless(engine
!= NULL
, NULL
);
2609 fail_unless(error
== NULL
, NULL
);
2610 osync_group_unref(group
);
2612 osync_engine_set_schemadir(engine
, testbed
);
2613 osync_engine_set_plugindir(engine
, plugindir
);
2614 osync_engine_set_formatdir(engine
, formatdir
);
2616 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(2));
2617 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
2618 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
2619 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
2620 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
2622 /* Discover the objtypes for the members */
2623 fail_unless(osync_engine_discover_and_block(engine
, member1
, &error
), NULL
);
2624 fail_unless(osync_member_num_objtypes(member1
) == 3, NULL
);
2627 fail_unless(num_client_connected
== 0, NULL
);
2628 fail_unless(num_client_main_connected
== 0, NULL
);
2629 fail_unless(num_client_read
== 0, NULL
);
2630 fail_unless(num_client_main_read
== 0, NULL
);
2631 fail_unless(num_client_written
== 0, NULL
);
2632 fail_unless(num_client_main_written
== 0, NULL
);
2633 fail_unless(num_client_disconnected
== 0, NULL
);
2634 fail_unless(num_client_main_disconnected
== 0, NULL
);
2635 fail_unless(num_client_errors
== 0, NULL
);
2636 fail_unless(num_client_sync_done
== 0, NULL
);
2637 fail_unless(num_client_main_sync_done
== 0, NULL
);
2638 fail_unless(num_client_discovered
== 1, NULL
);
2641 fail_unless(num_engine_connected
== 0, NULL
);
2642 fail_unless(num_engine_errors
== 0, NULL
);
2643 fail_unless(num_engine_read
== 0, NULL
);
2644 fail_unless(num_engine_written
== 0, NULL
);
2645 fail_unless(num_engine_sync_done
== 0, NULL
);
2646 fail_unless(num_engine_disconnected
== 0, NULL
);
2647 fail_unless(num_engine_successful
== 0, NULL
);
2648 fail_unless(num_engine_end_conflicts
== 0, NULL
);
2649 fail_unless(num_engine_prev_unclean
== 0, NULL
);
2652 fail_unless(num_change_read
== 0, NULL
);
2653 fail_unless(num_change_written
== 0, NULL
);
2654 fail_unless(num_change_error
== 0, NULL
);
2656 /* Mapping checks */
2657 fail_unless(num_mapping_solved
== 0, NULL
);
2658 fail_unless(num_mapping_errors
== 0, NULL
);
2659 fail_unless(num_mapping_conflicts
== 0, NULL
);
2662 fail_unless(osync_engine_discover_and_block(engine
, member2
, &error
), NULL
);
2663 fail_unless(osync_member_num_objtypes(member2
) == 1, NULL
);
2666 fail_unless(num_client_connected
== 0, NULL
);
2667 fail_unless(num_client_main_connected
== 0, NULL
);
2668 fail_unless(num_client_read
== 0, NULL
);
2669 fail_unless(num_client_main_read
== 0, NULL
);
2670 fail_unless(num_client_written
== 0, NULL
);
2671 fail_unless(num_client_main_written
== 0, NULL
);
2672 fail_unless(num_client_disconnected
== 0, NULL
);
2673 fail_unless(num_client_main_disconnected
== 0, NULL
);
2674 fail_unless(num_client_errors
== 0, NULL
);
2675 fail_unless(num_client_sync_done
== 0, NULL
);
2676 fail_unless(num_client_main_sync_done
== 0, NULL
);
2677 fail_unless(num_client_discovered
== 1, NULL
);
2680 fail_unless(num_engine_connected
== 0, NULL
);
2681 fail_unless(num_engine_errors
== 0, NULL
);
2682 fail_unless(num_engine_read
== 0, NULL
);
2683 fail_unless(num_engine_written
== 0, NULL
);
2684 fail_unless(num_engine_sync_done
== 0, NULL
);
2685 fail_unless(num_engine_disconnected
== 0, NULL
);
2686 fail_unless(num_engine_successful
== 0, NULL
);
2687 fail_unless(num_engine_end_conflicts
== 0, NULL
);
2688 fail_unless(num_engine_prev_unclean
== 0, NULL
);
2691 fail_unless(num_change_read
== 0, NULL
);
2692 fail_unless(num_change_written
== 0, NULL
);
2693 fail_unless(num_change_error
== 0, NULL
);
2695 /* Mapping checks */
2696 fail_unless(num_mapping_solved
== 0, NULL
);
2697 fail_unless(num_mapping_errors
== 0, NULL
);
2698 fail_unless(num_mapping_conflicts
== 0, NULL
);
2700 fail_unless(osync_group_num_objtypes(group
) == 1, NULL
);
2703 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
2704 fail_unless(error
== NULL
, NULL
);
2706 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
2707 fail_unless(error
== NULL
, NULL
);
2709 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
2710 fail_unless(error
== NULL
, NULL
);
2712 osync_engine_unref(engine
);
2715 fail_unless(num_client_connected
== 2, NULL
);
2716 fail_unless(num_client_main_connected
== 2, NULL
);
2717 fail_unless(num_client_read
== 2, NULL
);
2718 fail_unless(num_client_main_read
== 2, NULL
);
2719 fail_unless(num_client_written
== 2, NULL
);
2720 fail_unless(num_client_main_written
== 2, NULL
);
2721 fail_unless(num_client_disconnected
== 2, NULL
);
2722 fail_unless(num_client_main_disconnected
== 2, NULL
);
2723 fail_unless(num_client_errors
== 0, NULL
);
2724 fail_unless(num_client_sync_done
== 2, NULL
);
2725 fail_unless(num_client_main_sync_done
== 2, NULL
);
2726 fail_unless(num_client_discovered
== 0, NULL
);
2729 fail_unless(num_engine_connected
== 1, NULL
);
2730 fail_unless(num_engine_errors
== 0, NULL
);
2731 fail_unless(num_engine_read
== 1, NULL
);
2732 fail_unless(num_engine_written
== 1, NULL
);
2733 fail_unless(num_engine_sync_done
== 1, NULL
);
2734 fail_unless(num_engine_disconnected
== 1, NULL
);
2735 fail_unless(num_engine_successful
== 1, NULL
);
2736 fail_unless(num_engine_end_conflicts
== 1, NULL
);
2737 fail_unless(num_engine_prev_unclean
== 0, NULL
);
2740 fail_unless(num_change_read
== 1, NULL
);
2741 fail_unless(num_change_written
== 1, NULL
);
2742 fail_unless(num_change_error
== 0, NULL
);
2744 /* Mapping checks */
2745 fail_unless(num_mapping_solved
== 1, NULL
);
2746 fail_unless(num_mapping_errors
== 0, NULL
);
2747 fail_unless(num_mapping_conflicts
== 0, NULL
);
2749 fail_unless(!system("test \"x$(diff -x \".*\" file-1 file-2)\" = \"x\""), NULL
);
2751 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
2752 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 1);
2754 check_mapping(maptable
, 1, -1, 2, "file1");
2755 check_mapping(maptable
, 2, -1, 2, "file1");
2756 osync_mapping_table_close(maptable
);
2757 osync_mapping_table_unref(maptable
);
2759 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
2760 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 1);
2762 check_hash(table
, "file1");
2763 osync_hashtable_unref(table
);
2765 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
2766 table
= hashtable_load(path
, "mockobjtype1", 1);
2768 check_hash(table
, "file1");
2769 osync_hashtable_unref(table
);
2774 destroy_testbed(testbed
);
2778 /* sync_slowsync_connect is intendet to check if a slow-sync got triggered
2779 for all members/sinks when the slow-sync got requested during the connect()
2780 function of one of the members (e.g. anchor mismatch). Bug Ticket: #538 */
2781 START_TEST (sync_slowsync_connect
)
2783 char *testbed
= setup_testbed("sync");
2784 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
2785 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
2787 osync_testing_system_abort("cp testdata data1/testdata");
2789 OSyncError
*error
= NULL
;
2790 OSyncGroup
*group
= osync_group_new(&error
);
2791 fail_unless(group
!= NULL
, NULL
);
2792 fail_unless(error
== NULL
, NULL
);
2794 osync_group_set_schemadir(group
, testbed
);
2795 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
2796 fail_unless(error
== NULL
, NULL
);
2798 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
2799 fail_unless(engine
!= NULL
, NULL
);
2800 fail_unless(error
== NULL
, NULL
);
2801 osync_group_unref(group
);
2803 osync_engine_set_schemadir(engine
, testbed
);
2804 osync_engine_set_plugindir(engine
, plugindir
);
2805 osync_engine_set_formatdir(engine
, formatdir
);
2807 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(1));
2808 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
2809 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
2810 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
2811 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
2814 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
2815 fail_unless(error
== NULL
, NULL
);
2817 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
2818 fail_unless(error
== NULL
, NULL
);
2820 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
2821 fail_unless(error
== NULL
, NULL
);
2823 osync_engine_unref(engine
);
2826 fail_unless(num_client_connected
== 2, NULL
);
2827 fail_unless(num_client_main_connected
== 2, NULL
);
2828 fail_unless(num_client_read
== 2, NULL
);
2829 fail_unless(num_client_main_read
== 2, NULL
);
2830 fail_unless(num_client_written
== 2, NULL
);
2831 fail_unless(num_client_main_written
== 2, NULL
);
2832 fail_unless(num_client_disconnected
== 2, NULL
);
2833 fail_unless(num_client_main_disconnected
== 2, NULL
);
2834 fail_unless(num_client_errors
== 0, NULL
);
2835 fail_unless(num_client_sync_done
== 2, NULL
);
2836 fail_unless(num_client_main_sync_done
== 2, NULL
);
2839 fail_unless(num_engine_connected
== 1, NULL
);
2840 fail_unless(num_engine_errors
== 0, NULL
);
2841 fail_unless(num_engine_read
== 1, NULL
);
2842 fail_unless(num_engine_written
== 1, NULL
);
2843 fail_unless(num_engine_sync_done
== 1, NULL
);
2844 fail_unless(num_engine_disconnected
== 1, NULL
);
2845 fail_unless(num_engine_successful
== 1, NULL
);
2846 fail_unless(num_engine_end_conflicts
== 1, NULL
);
2847 fail_unless(num_engine_prev_unclean
== 0, NULL
);
2850 fail_unless(num_change_read
== 1, NULL
);
2851 fail_unless(num_change_written
== 1, NULL
);
2852 fail_unless(num_change_error
== 0, NULL
);
2854 /* Mapping checks */
2855 fail_unless(num_mapping_solved
== 1, NULL
);
2856 //fail_unless(num_mapping_written == 1, NULL);
2857 fail_unless(num_mapping_errors
== 0, NULL
);
2858 fail_unless(num_mapping_conflicts
== 0, NULL
);
2860 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
2862 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
2863 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 1);
2865 check_mapping(maptable
, 1, 1, 2, "testdata");
2866 check_mapping(maptable
, 2, 1, 2, "testdata");
2867 osync_mapping_table_close(maptable
);
2868 osync_mapping_table_unref(maptable
);
2870 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
2871 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 1);
2873 check_hash(table
, "testdata");
2874 osync_hashtable_unref(table
);
2876 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
2877 table
= hashtable_load(path
, "mockobjtype1", 1);
2879 check_hash(table
, "testdata");
2880 osync_hashtable_unref(table
);
2882 /* 2nd Sync with new path config for #1 member - this is needed
2883 * to trigger a slow-sync within the connect() plugin call. */
2885 osync_testing_system_abort("mkdir data3");
2886 osync_testing_system_abort("cp configs/new_path.conf configs/group/1/mock-sync.conf");
2888 group
= osync_group_new(&error
);
2889 fail_unless(group
!= NULL
, NULL
);
2890 fail_unless(error
== NULL
, NULL
);
2892 osync_group_set_schemadir(group
, testbed
);
2893 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
2894 fail_unless(error
== NULL
, NULL
);
2896 engine
= osync_engine_new(group
, &error
);
2897 fail_unless(engine
!= NULL
, NULL
);
2898 fail_unless(error
== NULL
, NULL
);
2899 osync_group_unref(group
);
2901 osync_engine_set_schemadir(engine
, testbed
);
2902 osync_engine_set_plugindir(engine
, plugindir
);
2903 osync_engine_set_formatdir(engine
, formatdir
);
2905 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(1));
2906 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
2907 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
2908 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
2909 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
2912 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
2913 fail_unless(error
== NULL
, NULL
);
2915 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
2916 fail_unless(error
== NULL
, NULL
);
2918 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
2919 fail_unless(error
== NULL
, NULL
);
2921 osync_engine_unref(engine
);
2924 fail_unless(num_client_connected
== 2, NULL
);
2925 fail_unless(num_client_main_connected
== 2, NULL
);
2926 fail_unless(num_client_read
== 2, NULL
);
2927 fail_unless(num_client_main_read
== 2, NULL
);
2928 fail_unless(num_client_written
== 2, NULL
);
2929 fail_unless(num_client_main_written
== 2, NULL
);
2930 fail_unless(num_client_disconnected
== 2, NULL
);
2931 fail_unless(num_client_main_disconnected
== 2, NULL
);
2932 fail_unless(num_client_errors
== 0, NULL
);
2933 fail_unless(num_client_sync_done
== 2, NULL
);
2934 fail_unless(num_client_main_sync_done
== 2, NULL
);
2937 fail_unless(num_engine_connected
== 1, NULL
);
2938 fail_unless(num_engine_errors
== 0, NULL
);
2939 fail_unless(num_engine_read
== 1, NULL
);
2940 fail_unless(num_engine_written
== 1, NULL
);
2941 fail_unless(num_engine_sync_done
== 1, NULL
);
2942 fail_unless(num_engine_disconnected
== 1, NULL
);
2943 fail_unless(num_engine_successful
== 1, NULL
);
2944 fail_unless(num_engine_end_conflicts
== 1, NULL
);
2945 fail_unless(num_engine_prev_unclean
== 0, NULL
);
2948 fail_unless(num_change_read
== 1, NULL
);
2949 fail_unless(num_change_written
== 1, NULL
);
2950 fail_unless(num_change_error
== 0, NULL
);
2952 /* Mapping checks */
2953 fail_unless(num_mapping_solved
== 1, NULL
);
2954 //fail_unless(num_mapping_written == 1, NULL);
2955 fail_unless(num_mapping_errors
== 0, NULL
);
2956 fail_unless(num_mapping_conflicts
== 0, NULL
);
2958 fail_unless(!system("test \"x$(diff -x \".*\" data3 data2)\" = \"x\""), NULL
);
2960 path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
2961 maptable
= mappingtable_load(path
, "mockobjtype1", 1);
2963 check_mapping(maptable
, 1, 1, 2, "testdata");
2964 check_mapping(maptable
, 2, 1, 2, "testdata");
2965 osync_mapping_table_close(maptable
);
2966 osync_mapping_table_unref(maptable
);
2968 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
2969 table
= hashtable_load(path
, "mockobjtype1", 1);
2971 check_hash(table
, "testdata");
2972 osync_hashtable_unref(table
);
2974 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
2975 table
= hashtable_load(path
, "mockobjtype1", 1);
2977 check_hash(table
, "testdata");
2978 osync_hashtable_unref(table
);
2983 destroy_testbed(testbed
);
2987 /* sync_slowsync_mainsink_connect is intendet to check if a slow-sync got triggered
2988 for all members/sinks when the slow-sync got requested during the MAINSINK connect()
2989 function of one of the members (e.g. anchor mismatch). The MAINSINK is the interesting
2990 part of this test, compared to sync_slowsync_connect which is using regulars sink functions. */
2991 START_TEST (sync_slowsync_mainsink_connect
)
2993 char *testbed
= setup_testbed("sync");
2994 char *formatdir
= g_strdup_printf("%s/formats", testbed
);
2995 char *plugindir
= g_strdup_printf("%s/plugins", testbed
);
2997 osync_testing_system_abort("cp testdata data1/testdata");
2999 g_setenv("MAINSINK_CONNECT", "1", TRUE
);
3001 OSyncError
*error
= NULL
;
3002 OSyncGroup
*group
= osync_group_new(&error
);
3003 fail_unless(group
!= NULL
, NULL
);
3004 fail_unless(error
== NULL
, NULL
);
3006 osync_group_set_schemadir(group
, testbed
);
3007 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
3008 fail_unless(error
== NULL
, NULL
);
3010 OSyncEngine
*engine
= osync_engine_new(group
, &error
);
3011 fail_unless(engine
!= NULL
, NULL
);
3012 fail_unless(error
== NULL
, NULL
);
3013 osync_group_unref(group
);
3015 osync_engine_set_schemadir(engine
, testbed
);
3016 osync_engine_set_plugindir(engine
, plugindir
);
3017 osync_engine_set_formatdir(engine
, formatdir
);
3019 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(1));
3020 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
3021 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
3022 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
3023 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
3026 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
3027 fail_unless(error
== NULL
, NULL
);
3029 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
3030 fail_unless(error
== NULL
, NULL
);
3032 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
3033 fail_unless(error
== NULL
, NULL
);
3035 osync_engine_unref(engine
);
3038 fail_unless(num_client_connected
== 2, NULL
);
3039 fail_unless(num_client_main_connected
== 2, NULL
);
3040 fail_unless(num_client_read
== 2, NULL
);
3041 fail_unless(num_client_main_read
== 2, NULL
);
3042 fail_unless(num_client_written
== 2, NULL
);
3043 fail_unless(num_client_main_written
== 2, NULL
);
3044 fail_unless(num_client_disconnected
== 2, NULL
);
3045 fail_unless(num_client_main_disconnected
== 2, NULL
);
3046 fail_unless(num_client_errors
== 0, NULL
);
3047 fail_unless(num_client_sync_done
== 2, NULL
);
3048 fail_unless(num_client_main_sync_done
== 2, NULL
);
3051 fail_unless(num_engine_connected
== 1, NULL
);
3052 fail_unless(num_engine_errors
== 0, NULL
);
3053 fail_unless(num_engine_read
== 1, NULL
);
3054 fail_unless(num_engine_written
== 1, NULL
);
3055 fail_unless(num_engine_sync_done
== 1, NULL
);
3056 fail_unless(num_engine_disconnected
== 1, NULL
);
3057 fail_unless(num_engine_successful
== 1, NULL
);
3058 fail_unless(num_engine_end_conflicts
== 1, NULL
);
3059 fail_unless(num_engine_prev_unclean
== 0, NULL
);
3062 fail_unless(num_change_read
== 1, NULL
);
3063 fail_unless(num_change_written
== 1, NULL
);
3064 fail_unless(num_change_error
== 0, NULL
);
3066 /* Mapping checks */
3067 fail_unless(num_mapping_solved
== 1, NULL
);
3068 //fail_unless(num_mapping_written == 1, NULL);
3069 fail_unless(num_mapping_errors
== 0, NULL
);
3070 fail_unless(num_mapping_conflicts
== 0, NULL
);
3072 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
3074 char *path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
3075 OSyncMappingTable
*maptable
= mappingtable_load(path
, "mockobjtype1", 1);
3077 check_mapping(maptable
, 1, 1, 2, "testdata");
3078 check_mapping(maptable
, 2, 1, 2, "testdata");
3079 osync_mapping_table_close(maptable
);
3080 osync_mapping_table_unref(maptable
);
3082 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
3083 OSyncHashTable
*table
= hashtable_load(path
, "mockobjtype1", 1);
3085 check_hash(table
, "testdata");
3086 osync_hashtable_unref(table
);
3088 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
3089 table
= hashtable_load(path
, "mockobjtype1", 1);
3091 check_hash(table
, "testdata");
3092 osync_hashtable_unref(table
);
3094 /* 2nd Sync trigger a SlowSync within the MAINSINK connect function. */
3096 g_setenv("CONNECT_SLOWSYNC", "1", TRUE
);
3097 osync_testing_system_abort("rm data2/testdata");
3099 group
= osync_group_new(&error
);
3100 fail_unless(group
!= NULL
, NULL
);
3101 fail_unless(error
== NULL
, NULL
);
3103 osync_group_set_schemadir(group
, testbed
);
3104 fail_unless(osync_group_load(group
, "configs/group", &error
), NULL
);
3105 fail_unless(error
== NULL
, NULL
);
3107 engine
= osync_engine_new(group
, &error
);
3108 fail_unless(engine
!= NULL
, NULL
);
3109 fail_unless(error
== NULL
, NULL
);
3110 osync_group_unref(group
);
3112 osync_engine_set_schemadir(engine
, testbed
);
3113 osync_engine_set_plugindir(engine
, plugindir
);
3114 osync_engine_set_formatdir(engine
, formatdir
);
3116 osync_engine_set_conflict_callback(engine
, conflict_handler_choose_first
, GINT_TO_POINTER(1));
3117 osync_engine_set_changestatus_callback(engine
, entry_status
, GINT_TO_POINTER(1));
3118 osync_engine_set_mappingstatus_callback(engine
, mapping_status
, GINT_TO_POINTER(1));
3119 osync_engine_set_enginestatus_callback(engine
, engine_status
, GINT_TO_POINTER(1));
3120 osync_engine_set_memberstatus_callback(engine
, member_status
, GINT_TO_POINTER(1));
3123 fail_unless(osync_engine_initialize(engine
, &error
), NULL
);
3124 fail_unless(error
== NULL
, NULL
);
3126 fail_unless(osync_engine_synchronize_and_block(engine
, &error
), NULL
);
3127 fail_unless(error
== NULL
, NULL
);
3129 fail_unless(osync_engine_finalize(engine
, &error
), NULL
);
3130 fail_unless(error
== NULL
, NULL
);
3132 osync_engine_unref(engine
);
3135 fail_unless(num_client_connected
== 2, NULL
);
3136 fail_unless(num_client_main_connected
== 2, NULL
);
3137 fail_unless(num_client_read
== 2, NULL
);
3138 fail_unless(num_client_main_read
== 2, NULL
);
3139 fail_unless(num_client_written
== 2, NULL
);
3140 fail_unless(num_client_main_written
== 2, NULL
);
3141 fail_unless(num_client_disconnected
== 2, NULL
);
3142 fail_unless(num_client_main_disconnected
== 2, NULL
);
3143 fail_unless(num_client_errors
== 0, NULL
);
3144 fail_unless(num_client_sync_done
== 2, NULL
);
3145 fail_unless(num_client_main_sync_done
== 2, NULL
);
3148 fail_unless(num_engine_connected
== 1, NULL
);
3149 fail_unless(num_engine_errors
== 0, NULL
);
3150 fail_unless(num_engine_read
== 1, NULL
);
3151 fail_unless(num_engine_written
== 1, NULL
);
3152 fail_unless(num_engine_sync_done
== 1, NULL
);
3153 fail_unless(num_engine_disconnected
== 1, NULL
);
3154 fail_unless(num_engine_successful
== 1, NULL
);
3155 fail_unless(num_engine_end_conflicts
== 1, NULL
);
3156 fail_unless(num_engine_prev_unclean
== 0, NULL
);
3159 fail_unless(num_change_read
== 1, NULL
);
3160 fail_unless(num_change_written
== 1, NULL
);
3161 fail_unless(num_change_error
== 0, NULL
);
3163 /* Mapping checks */
3164 fail_unless(num_mapping_solved
== 1, NULL
);
3165 //fail_unless(num_mapping_written == 1, NULL);
3166 fail_unless(num_mapping_errors
== 0, NULL
);
3167 fail_unless(num_mapping_conflicts
== 0, NULL
);
3169 fail_unless(!system("test \"x$(diff -x \".*\" data1 data2)\" = \"x\""), NULL
);
3171 path
= g_strdup_printf("%s/configs/group/archive.db", testbed
);
3172 maptable
= mappingtable_load(path
, "mockobjtype1", 1);
3174 check_mapping(maptable
, 1, 1, 2, "testdata");
3175 check_mapping(maptable
, 2, 1, 2, "testdata");
3176 osync_mapping_table_close(maptable
);
3177 osync_mapping_table_unref(maptable
);
3179 path
= g_strdup_printf("%s/configs/group/1/hashtable.db", testbed
);
3180 table
= hashtable_load(path
, "mockobjtype1", 1);
3182 check_hash(table
, "testdata");
3183 osync_hashtable_unref(table
);
3185 path
= g_strdup_printf("%s/configs/group/2/hashtable.db", testbed
);
3186 table
= hashtable_load(path
, "mockobjtype1", 1);
3188 check_hash(table
, "testdata");
3189 osync_hashtable_unref(table
);
3194 destroy_testbed(testbed
);
3198 Suite
*env_suite(void)
3200 Suite
*s
= suite_create("Sync");
3201 // Suite *s2 = suite_create("Sync");
3202 // Suite *s3 = suite_create("Sync"); // really broken...
3204 create_case(s
, "sync_setup_connect", sync_setup_connect
);
3205 create_case(s
, "sync_easy_new", sync_easy_new
);
3206 create_case(s
, "sync_easy_new_del", sync_easy_new_del
);
3207 create_case(s
, "sync_easy_conflict", sync_easy_conflict
);
3208 create_case(s
, "sync_easy_new_mapping", sync_easy_new_mapping
);
3209 create_case(s
, "sync_easy_conflict_duplicate", sync_easy_conflict_duplicate
);
3210 create_case(s
, "sync_easy_conflict_abort", sync_easy_conflict_abort
);
3211 create_case(s
, "sync_conflict_duplicate2", sync_conflict_duplicate2
);
3212 create_case(s
, "sync_conflict_delay", sync_conflict_delay
);
3213 create_case(s
, "sync_conflict_deldel", sync_conflict_deldel
);
3214 create_case(s
, "sync_moddel", sync_moddel
);
3215 create_case(s
, "sync_conflict_moddel", sync_conflict_moddel
);
3216 create_case(s
, "sync_easy_dualdel", sync_easy_dualdel
);
3217 create_case(s
, "sync_large", sync_large
);
3219 create_case(s
, "sync_detect_obj", sync_detect_obj
);
3220 create_case(s
, "sync_detect_obj2", sync_detect_obj2
);
3222 create_case(s
, "sync_slowsync_connect", sync_slowsync_connect
);
3223 create_case(s
, "sync_slowsync_mainsink_connect", sync_slowsync_mainsink_connect
);
3236 Suite
*s
= env_suite();
3239 sr
= srunner_create(s
);
3240 srunner_run_all(sr
, CK_VERBOSE
);
3241 nf
= srunner_ntests_failed(sr
);
3243 return (nf
== 0) ? EXIT_SUCCESS
: EXIT_FAILURE
;