1 #ifndef OSYNC_TEST_SUPPORT
2 #define OSYNC_TEST_SUPPORT
6 #include <opensync/opensync.h>
7 #include <opensync/opensync_internals.h>
8 #include <opensync/opensync-engine.h>
9 #include <opensync/opensync-mapping.h>
10 #include <opensync/opensync-archive.h>
11 #include <opensync/opensync-helper.h>
12 #include <opensync/opensync-format.h>
13 #include <opensync/opensync-data.h>
14 #include <opensync/opensync-group.h>
15 #include <opensync/opensync-plugin.h>
19 #define OSYNC_TESTCASE_START(x) \
20 const char *_unittest = (#x); \
21 struct osync_testcase_s osync_testcase[] = {
23 #define OSYNC_TESTCASE_ADD(x) { (#x), x },
25 #define OSYNC_TESTCASE_END \
29 int main(int argc, char **argv) \
31 return osync_testsuite(argc, argv, _unittest, osync_testcase); \
34 struct osync_testcase_s
{
40 int osync_testsuite(int argc
, char **argv
, const char *unittest
,
41 struct osync_testcase_s
*tc
);
44 int num_client_connected
;
45 int num_client_main_connected
;
46 int num_client_connect_done
;
47 int num_client_main_connect_done
;
48 int num_client_disconnected
;
49 int num_client_main_disconnected
;
51 int num_client_main_read
;
52 int num_client_written
;
53 int num_client_main_written
;
54 int num_client_errors
;
55 int num_client_sync_done
;
56 int num_client_main_sync_done
;
57 int num_client_discovered
;
60 int num_change_written
;
63 int num_engine_connected
;
64 int num_engine_connect_done
;
66 int num_engine_prepared_map
;
67 int num_engine_mapped
;
68 int num_engine_multiplied
;
69 int num_engine_prepared_write
;
70 int num_engine_written
;
71 int num_engine_disconnected
;
72 int num_engine_errors
;
73 int num_engine_successful
;
74 int num_engine_end_conflicts
;
75 int num_engine_prev_unclean
;
76 int num_engine_sync_done
;
79 int num_mapping_solved
;
80 int num_mapping_written
;
81 int num_mapping_errors
;
82 int num_mapping_conflicts
;
86 char *setup_testbed(const char *fkt_name
);
87 void destroy_testbed(char *path
);
88 // create_case() with timeout of 30seconds (default)
89 void create_case(Suite
*s
, const char *name
, TFun function
);
90 // create_case_timeout() allow to specific a specific timeout - intended for breaking testcases which needs longer then 30seconds (default)
91 void create_case_timeout(Suite
*s
, const char *name
, TFun function
, int timeout
);
93 void conflict_handler_random(OSyncEngine
*engine
, OSyncMapping
*mapping
, void *user_data
);
95 OSyncMappingTable
*mappingtable_load(const char *path
, const char *objtype
, int num_mappings
);
96 void mappingtable_close(OSyncMappingTable
*maptable
);
98 OSyncHashTable
*hashtable_load(const char *path
, const char *objtype
, int entries
);
99 void check_hash(OSyncHashTable
*table
, const char *cmpuid
);
100 void check_mapping(OSyncMappingTable
*table
, int memberid
, int mappingid
, int numentries
, const char *uid
);
102 void create_random_file(const char *path
);
104 void reset_counters();
105 osync_bool
synchronize_once(OSyncEngine
*engine
, OSyncError
**error
);
106 void discover_all_once(OSyncEngine
*engine
, OSyncError
**error
);
108 /* Status callbacks */
109 void member_status(OSyncMemberUpdate
*status
, void *user_data
);
110 void entry_status(OSyncChangeUpdate
*status
, void *user_data
);
111 void engine_status(OSyncEngineUpdate
*status
, void *user_data
);
112 void mapping_status(OSyncMappingUpdate
*status
, void *user_data
);
114 /* Conflict handlers */
115 void conflict_handler_choose_first(OSyncEngine
*engine
, OSyncMappingEngine
*mapping
, void *user_data
);
116 void conflict_handler_choose_deleted(OSyncEngine
*engine
, OSyncMappingEngine
*mapping
, void *user_data
);
117 void conflict_handler_choose_modified(OSyncEngine
*engine
, OSyncMappingEngine
*mapping
, void *user_data
);
118 void conflict_handler_ignore(OSyncEngine
*engine
, OSyncMappingEngine
*mapping
, void *user_data
);
119 void conflict_handler_duplicate(OSyncEngine
*engine
, OSyncMappingEngine
*mapping
, void *user_data
);
120 void conflict_handler_abort(OSyncEngine
*engine
, OSyncMappingEngine
*mapping
, void *user_data
);
121 void solve_conflict(OSyncMappingEngine
*mapping
);
122 void conflict_handler_delay(OSyncEngine
*engine
, OSyncMappingEngine
*mapping
, void *user_data
);
124 /* Plugin Env helper */
125 OSyncFormatEnv
*osync_testing_load_formatenv(const char *formatdir
);
127 /* File testing helper */
128 osync_bool
osync_testing_file_exists(const char *file
);
129 osync_bool
osync_testing_file_remove(const char *file
);
130 osync_bool
osync_testing_file_chmod(const char *file
, int mode
);
131 osync_bool
osync_testing_file_copy(const char *source
, const char *dest
);
132 osync_bool
osync_testing_diff(const char *file1
, const char *file2
);
134 /* Plugin config helper */
135 OSyncPluginConfig
*simple_plugin_config(OSyncPluginConfig
*config
, const char *path
, const char *objtype
, const char *objformat
, const char *format_config
);
137 /* gdiff is GNU diff in Solaris */
145 OSyncEngine
*osync_testing_create_engine_dummy(unsigned int member_size
);
147 /* System Env helper */
148 void osync_testing_system_abort(const char *command
);
150 #endif /* OSYNC_TEST_SUPPORT */