/*! @brief Loads all members of a group * * Loads all members of a group * * @param group The group * @param path The path from which to load the members * @param error Pointer to an error struct * @returns True if the members were loaded successfully, FALSE otherwise * */ static osync_bool _osync_group_load_members(OSyncGroup *group, const char *path, OSyncError **error) { GDir *dir = NULL; GError *gerror = NULL; char *member_path = NULL; char *filename = NULL; OSyncMember *member = NULL; const gchar *de = NULL; osync_trace(TRACE_ENTRY, "%s(%p, %s, %p)", __func__, group, path, error); dir = g_dir_open(path, 0, &gerror); if (!dir) { osync_error_set(error, OSYNC_ERROR_IO_ERROR, "Unable to open group configdir %s", gerror->message); g_error_free (gerror); goto error; } while ((de = g_dir_read_name(dir))) { filename = g_strdup_printf ("%s%c%s%csyncmember.conf", osync_group_get_configdir(group), G_DIR_SEPARATOR, de, G_DIR_SEPARATOR); if (!g_file_test(filename, G_FILE_TEST_IS_REGULAR)) { g_free(filename); continue; } g_free(filename); member = osync_member_new(error); if (!member) goto error_close; #ifdef OPENSYNC_UNITTESTS if (group->schemadir) osync_member_set_schemadir(member, group->schemadir); #endif /* OPENSYNC_UNITTESTS */ member_path = g_strdup_printf ("%s%c%s", osync_group_get_configdir(group), G_DIR_SEPARATOR, de); if (!osync_member_load(member, member_path, error)) { g_free(member_path); goto error_free_member; } g_free(member_path); osync_group_add_member(group, member); osync_member_unref(member); } g_dir_close(dir); osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; error_free_member: osync_member_unref(member); error_close: g_dir_close(dir); error: osync_trace(TRACE_EXIT_ERROR, "%s: %p", __func__, osync_error_print(error)); return FALSE; }
/** @brief Creates a simple OSyncEngine with nth Members with mock-sync * plugins. * * @param member_size The number of member the Group for this Engine should have * @returns OSyncEngine pointer or asserts on error * */ OSyncEngine *osync_testing_create_engine_dummy(unsigned int member_size) { unsigned int u; OSyncError *error = NULL; OSyncEngine *engine = NULL; OSyncGroup *group = osync_group_new(&error); fail_unless(group != NULL, NULL); fail_unless(error == NULL, NULL); for (u=0; u < member_size; u++) { OSyncMember *member = osync_member_new(&error); fail_unless(member != NULL, NULL); fail_unless(error == NULL, NULL); osync_group_add_member(group, member); } engine = osync_engine_new(group, &error); fail_unless(engine != NULL, NULL); fail_unless(error == NULL, NULL); return engine; }