OSyncMappingTable *mappingtable_load(const char *path, const char *objtype, unsigned int num_mappings) { OSyncError *error = NULL; OSyncMappingTable *table = NULL; OSyncArchive *archive = NULL; osync_trace(TRACE_ENTRY, "%s(%s, %s, %i)", __func__, path, objtype, num_mappings); table = osync_mapping_table_new(&error); fail_unless(table != NULL, NULL); fail_unless(error == NULL, NULL); archive = osync_archive_new(path, &error); fail_unless(archive != NULL, NULL); fail_unless(error == NULL, NULL); fail_unless(osync_mapping_table_load(table, archive, objtype, &error), NULL); fail_unless(error == NULL, NULL); osync_archive_unref(archive); fail_unless(osync_mapping_table_num_mappings(table) == num_mappings, NULL); osync_trace(TRACE_EXIT, "%s: %p", __func__, table); return table; }
END_TEST START_TEST (archive_save_change) { char *testbed = setup_testbed("merger"); OSyncError *error = NULL; OSyncArchive *archive = osync_archive_new("archive.db", &error); fail_unless(archive != NULL, NULL); fail_unless(error == NULL, NULL); OSyncList *ids; OSyncList *uids; OSyncList *mappingids; OSyncList *memberids; osync_archive_load_changes(archive, "contact", &ids, &uids, &mappingids, &memberids, &error); long long int id = osync_archive_save_change(archive, 0, "uid", "contact", 1, 1, &error); fail_unless(id != 0, NULL); fail_unless(error == NULL, NULL); osync_archive_unref(archive); destroy_testbed(testbed); }
END_TEST START_TEST (archive_save_data) { char *testbed = setup_testbed("merger"); OSyncError *error = NULL; OSyncArchive *archive = osync_archive_new("archive.db", &error); fail_unless(archive != NULL, NULL); fail_unless(error == NULL, NULL); OSyncList *ids; OSyncList *uids; OSyncList *mappingids; OSyncList *memberids; osync_archive_load_changes(archive, "contact", &ids, &uids, &mappingids, &memberids, &error); long long int id = osync_archive_save_change(archive, 0, "uid", "contact", 1, 1, &error); fail_unless(id != 0, NULL); fail_unless(error == NULL, NULL); const char *testdata = "testdata"; unsigned int testsize = strlen(testdata); fail_unless(osync_archive_save_data(archive, 1, "contact", testdata, testsize, &error) == TRUE, NULL); fail_unless(error == NULL, NULL); osync_archive_unref(archive); destroy_testbed(testbed); }
static void dump_map_objtype(OSyncGroupEnv *env, const char *objtype, const char *groupname) { printf("Dumping of mappings got temporarliy disabled\n"); /* FIXME: Temporarily disabled - OSyncArchive got removed from 0.40 API draft */ #if 0 OSyncError *error = NULL; OSyncGroup *group = osync_group_env_find_group(env, groupname); char *path = g_strdup_printf("%s/archive.db", osync_group_get_configdir(group)); OSyncArchive *archive = osync_archive_new(path, &error); OSyncList *ids = NULL; OSyncList *uids = NULL; OSyncList *mappingids = NULL; OSyncList *memberids = NULL; OSyncList *d , *u, *m, *i; if (!archive) goto error; g_free(path); if (!osync_archive_load_changes(archive, objtype, &ids, &uids, &mappingids, &memberids, &error)) goto error; d = ids; u = uids; m = mappingids; i = memberids; for (; u; u = u->next) { long long int id = (long long int)GPOINTER_TO_INT(d->data); char *uid = u->data; long long int memberid = (long long int)GPOINTER_TO_INT(i->data); long long int mappingid = (long long int)GPOINTER_TO_INT(m->data); printf("ID: %lli UID: %s MEMBER: %lli MAPPINGID: %lli\n", id, uid, memberid, mappingid); m = m->next; d = d->next; i = i->next; } osync_list_free(ids); osync_list_free(uids); osync_list_free(mappingids); osync_list_free(memberids); osync_archive_unref(archive); return; error: printf("ERROR: %s", osync_error_print(&error)); osync_error_unref(&error); #endif }