void on_editgroupdiscoverbutton_clicked(GtkButton* button, gpointer user_data) { g_assert(user_data); MSyncEnv* env = (MSyncEnv*)user_data; OSyncError* error = NULL; //TODO: dont block gui thread! //g_thread_create((GThreadFunc)msync_group_syncronize2, group, FALSE, NULL); OSyncEngine *engine = osync_engine_new(env->curgroup->group, &error); if (!engine) { goto error; } /* Discover the objtypes for the members */ if(!osync_engine_discover_and_block(engine,env->curmember, &error)) goto error_free_engine; osync_engine_unref(engine); return; error_free_engine: osync_engine_unref(engine); error: msync_error_message(GTK_WINDOW(env->mainwindow), TRUE, "Error while discovering: %s\n", osync_error_print(&error)); osync_error_unref(&error); }
END_TEST START_TEST (filter_sync_custom) { char *testbed = setup_testbed("filter_sync_custom"); char *formatdir = g_strdup_printf("%s/formats", testbed); char *plugindir = g_strdup_printf("%s/plugins", testbed); OSyncError *error = NULL; OSyncGroup *group = osync_group_new(&error); fail_unless(group != NULL, NULL); fail_unless(error == NULL, NULL); osync_group_set_schemadir(group, testbed); osync_group_load(group, "configs/group", &error); fail_unless(error == NULL, osync_error_print(&error)); fail_unless(group != NULL, NULL); mark_point(); OSyncCustomFilter *custom_filter = osync_custom_filter_new("mockobjtype1", "mockformat1", "mockformat1_custom_filter", dummy_filter_hook, &error); fail_unless(custom_filter != NULL, NULL); OSyncFilter *filter = osync_filter_new_custom(custom_filter, NULL, OSYNC_FILTER_DENY, &error); fail_unless(filter != NULL, NULL); osync_group_add_filter(group, filter); osync_filter_set_config(filter, "test"); mark_point(); OSyncEngine *engine = osync_engine_new(group, &error); mark_point(); fail_unless(engine != NULL, NULL); osync_engine_set_plugindir(engine, plugindir); osync_engine_set_formatdir(engine, formatdir); osync_engine_set_schemadir(engine, testbed); fail_unless(osync_engine_initialize(engine, &error), NULL); synchronize_once(engine, NULL); osync_engine_finalize(engine, &error); fail_unless(osync_testing_diff("data1", "data2"), NULL); g_free(formatdir); g_free(plugindir); destroy_testbed(testbed); }
END_TEST #endif /* FIXME */ START_TEST(filter_destobjtype_delete) { /* Check if the destobjtype of the changes is being * set when the change type os DELETE */ char *testbed = setup_testbed("destobjtype_delete"); char *formatdir = g_strdup_printf("%s/formats", testbed); char *plugindir = g_strdup_printf("%s/plugins", testbed); OSyncError *error = NULL; OSyncGroup *group = osync_group_new(&error); fail_unless(group != NULL, NULL); fail_unless(error == NULL, NULL); osync_group_set_schemadir(group, testbed); osync_group_load(group, "configs/group", &error); fail_unless(error == NULL, osync_error_print(&error)); fail_unless(group != NULL, NULL); mark_point(); mark_point(); OSyncEngine *engine = osync_engine_new(group, &error); mark_point(); fail_unless(engine != NULL, NULL); osync_engine_set_plugindir(engine, plugindir); osync_engine_set_formatdir(engine, formatdir); osync_engine_set_schemadir(engine, testbed); fail_unless(osync_engine_initialize(engine, &error), NULL); synchronize_once(engine, NULL); mark_point(); /* Synchronize once, delete a file, and synchronize again */ fail_unless(!osync_testing_file_remove("data1/file"), NULL); synchronize_once(engine, NULL); mark_point(); osync_engine_finalize(engine, &error); g_free(formatdir); g_free(plugindir); destroy_testbed(testbed); }
/** @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; }
END_TEST /* filter flushing got dropped with OpenSync 0.30 API START_TEST (filter_flush) { char *testbed = setup_testbed("filter_setup"); OSyncError *error = NULL; OSyncGroup *group = osync_group_new(&error); fail_unless(group != NULL, NULL); fail_unless(error == NULL, NULL); osync_group_load(group, "configs/group", &error); fail_unless(error == NULL, osync_error_print(&error)); fail_unless(group != NULL, NULL); mark_point(); OSyncMember *leftmember = osync_group_nth_member(group, 0); OSyncMember *rightmember = osync_group_nth_member(group, 1); OSyncFilter *filter1 = osync_filter_new("mockobjtype1", OSYNC_FILTER_DENY, &error); OSyncFilter *filter2 = osync_filter_new("mockobjtype1", OSYNC_FILTER_DENY, &error); fail_unless(filter1 != NULL, NULL); fail_unless(filter2 != NULL, NULL); osync_group_add_filter(group, filter1); osync_group_add_filter(group, filter2); mark_point(); fail_unless(osync_group_num_filters(group) == 2, NULL); fail_unless(osync_group_nth_filter(group, 0) == filter1, NULL); fail_unless(osync_group_nth_filter(group, 1) == filter2, NULL); mark_point(); osync_group_flush_filters(group); fail_unless(osync_group_num_filters(group) == 0, NULL); destroy_testbed(testbed); } END_TEST */ START_TEST (filter_sync_deny_all) { char *testbed = setup_testbed("filter_sync_deny_all"); char *formatdir = g_strdup_printf("%s/formats", testbed); char *plugindir = g_strdup_printf("%s/plugins", testbed); OSyncError *error = NULL; OSyncGroup *group = osync_group_new(&error); fail_unless(group != NULL, NULL); fail_unless(error == NULL, NULL); osync_group_set_schemadir(group, testbed); osync_group_load(group, "configs/group", &error); fail_unless(error == NULL, osync_error_print(&error)); fail_unless(group != NULL, NULL); mark_point(); OSyncFilter *filter1 = osync_filter_new("mockobjtype1", OSYNC_FILTER_DENY, &error); OSyncFilter *filter2 = osync_filter_new("mockobjtype1", OSYNC_FILTER_DENY, &error); fail_unless(filter1 != NULL, NULL); fail_unless(filter2 != NULL, NULL); osync_group_add_filter(group, filter1); osync_group_add_filter(group, filter2); mark_point(); OSyncEngine *engine = osync_engine_new(group, &error); mark_point(); fail_unless(engine != NULL, NULL); osync_engine_set_plugindir(engine, plugindir); osync_engine_set_formatdir(engine, formatdir); osync_engine_set_schemadir(engine, testbed); fail_unless(osync_engine_initialize(engine, &error), osync_error_print(&error)); synchronize_once(engine, &error); osync_engine_finalize(engine, &error); fail_unless(osync_testing_file_exists("data1/testdata"), NULL); fail_unless(osync_testing_file_exists("data2/testdata2"), NULL); g_free(formatdir); g_free(plugindir); destroy_testbed(testbed); }
END_TEST /* TODO: Test filtering of different objtypes within one resource/database/path. Mixed objtypes in mock-sync (based on file-sync) currenlty not supported. Reimplement this when: data(wildcard objtype) <-> certain-objtype syncing is working again. Make this implementation independet of vformat plugin (feel free to rename vcard to mockobjtypeX). This filtering isn't about obfjromat filtering - it's about objtype filtering. */ /* FIXME */ #if 0 START_TEST (filter_sync_vcard_only) { char *testbed = setup_testbed("filter_sync_vcard_only"); char *formatdir = g_strdup_printf("%s/formats", testbed); char *plugindir = g_strdup_printf("%s/plugins", testbed); OSyncError *error = NULL; OSyncGroup *group = osync_group_new(&error); fail_unless(group != NULL, NULL); fail_unless(error == NULL, NULL); osync_group_load(group, "configs/group", &error); fail_unless(error == NULL, osync_error_print(&error)); fail_unless(group != NULL, NULL); mark_point(); /* TODO filtering isn't member sepcific anymore OSyncMember *rightmember = osync_group_nth_member(group, 1); osync_filter_add(group, NULL, rightmember, NULL, NULL, NULL, OSYNC_FILTER_DENY); osync_filter_add(group, NULL, rightmember, NULL, NULL, "contact", OSYNC_FILTER_ALLOW); */ OSyncFilter *filter1 = osync_filter_new("mockobjtype1", OSYNC_FILTER_DENY, &error); OSyncFilter *filter2 = osync_filter_new("mockobjtype1", OSYNC_FILTER_ALLOW, &error); fail_unless(filter1 != NULL, NULL); fail_unless(filter2 != NULL, NULL); osync_group_add_filter(group, filter1); osync_group_add_filter(group, filter2); mark_point(); OSyncEngine *engine = osync_engine_new(group, &error); mark_point(); fail_unless(engine != NULL, NULL); osync_engine_set_plugindir(engine, plugindir); osync_engine_set_formatdir(engine, formatdir); osync_engine_set_schemadir(engine, testbed); fail_unless(osync_engine_initialize(engine, &error), NULL); synchronize_once(engine, NULL); osync_engine_finalize(engine, &error); osync_engine_unref(engine); fail_unless(osync_testing_file_exists("data1/testdata"), NULL); fail_unless(osync_testing_file_exists("data1/testdata2"), NULL); fail_unless(osync_testing_file_exists("data1/testdata3"), NULL); fail_unless(osync_testing_file_exists("data1/vcard.vcf"), NULL); fail_unless(osync_testing_file_exists("data2/testdata3"), NULL); fail_unless(osync_testing_file_exists("data2/vcard.vcf"), NULL); g_free(formatdir); g_free(plugindir); destroy_testbed(testbed); }