static void _round_open_close (void) { sqlx_repository_t *repo = NULL; GError *err; err = sqlx_repository_init("/tmp", NULL, &repo); g_assert_no_error (err); g_assert_true (sqlx_repository_running (repo)); err = sqlx_repository_configure_type(repo, type, SCHEMA); g_assert_no_error (err); sqlx_repository_set_locator (repo, _locator, NULL); for (int i=0; i<5 ;i++) { struct sqlx_sqlite3_s *sq3 = NULL; struct sqlx_name_s n = { .base = name, .type = type, .ns = nsname, }; err = sqlx_repository_open_and_lock(repo, &n, SQLX_OPEN_LOCAL, &sq3, NULL); g_assert_no_error (err); g_assert_nonnull (sq3); err = sqlx_repository_unlock_and_close(sq3); g_assert_no_error (err); } sqlx_repository_clean(repo); }
static void _round_init (void) { sqlx_repository_t *repo = NULL; GError *err; err = sqlx_repository_init("/tmp", NULL, &repo); g_assert_no_error (err); for (int i=0; i<5 ;i++) sqlx_repository_set_locator (repo, _locator, NULL); for (int i=0; i<5 ;i++) g_assert_true (sqlx_repository_running (repo)); for (int i=0; i<5 ;i++) { err = sqlx_repository_configure_type(repo, type, SCHEMA); g_assert_no_error (err); } sqlx_repository_clean(repo); }
static gboolean _configure_backend(struct sqlx_service_s *ss) { struct sqlx_repo_config_s repository_config = {0}; repository_config.flags = 0; repository_config.flags |= ss->flag_delete_on ? SQLX_REPO_DELETEON : 0; repository_config.flags |= ss->flag_cached_bases ? 0 : SQLX_REPO_NOCACHE; repository_config.flags |= ss->flag_autocreate ? SQLX_REPO_AUTOCREATE : 0; repository_config.sync_solo = ss->sync_mode_solo; repository_config.sync_repli = ss->sync_mode_repli; repository_config.page_size = SQLX_DEFAULT_PAGE_SIZE; if (ss->cfg_page_size >= 512) repository_config.page_size = ss->cfg_page_size; GError *err = sqlx_repository_init(ss->volume, &repository_config, &ss->repository); if (err) { GRID_ERROR("SQLX repository init failure : (%d) %s", err->code, err->message); g_clear_error(&err); return FALSE; } err = sqlx_repository_configure_type(ss->repository, ss->service_config->srvtype, ss->service_config->schema); if (err) { GRID_ERROR("SQLX schema init failure : (%d) %s", err->code, err->message); g_clear_error(&err); return FALSE; } sqlx_repository_configure_open_timeout (ss->repository, ss->open_timeout * G_TIME_SPAN_MILLISECOND); sqlx_repository_configure_hash (ss->repository, ss->service_config->repo_hash_width, ss->service_config->repo_hash_depth); GRID_TRACE("SQLX repository initiated"); return TRUE; }
static struct meta1_backend_s * _meta1_init(void) { struct sqlx_repo_config_s cfg; struct meta1_backend_s *m1 = NULL; struct sqlx_repository_s *repo = NULL; GError *err; memset(&cfg, 0, sizeof(cfg)); err = sqlx_repository_init(basedir, &cfg, &repo); m1 = meta1_backend_init(ns, repo, glp, NULL); assert_noerror(err); g_assert(m1 != NULL); err = meta1_prefixes_manage_all(meta1_backend_get_prefixes(m1), local_url); assert_noerror(err); assert_noerror(err); return m1; }