Timeout merge complete
[opensync.git] / tests / support.h
blobb5681fe0a6a68defcaeb3ccab05dcbde77524864
1 #ifndef OSYNC_TEST_SUPPORT
2 #define OSYNC_TEST_SUPPORT
4 #include <check.h>
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>
17 #include "config.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 \
26 { NULL, NULL } \
27 }; \
29 int main(int argc, char **argv) \
30 { \
31 return osync_testsuite(argc, argv, _unittest, osync_testcase); \
34 struct osync_testcase_s {
35 const char *name;
36 void *func;
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;
50 int num_client_read;
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;
59 int num_change_read;
60 int num_change_written;
61 int num_change_error;
63 int num_engine_connected;
64 int num_engine_connect_done;
65 int num_engine_read;
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;
84 void check_env(void);
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 */
138 #ifdef HAVE_SOLARIS
139 #define DIFF "gdiff"
140 #else
141 #define DIFF "diff"
142 #endif
144 /* Engine helper */
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 */