int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); midgard_init(); /* FIXME, it should be fixed with API... */ MidgardSchema *schema = g_object_new(MIDGARD_TYPE_SCHEMA, NULL); midgard_schema_init(schema, NULL); midgard_schema_read_dir(schema, NULL); MidgardConfig *config = NULL; guint loghandler = g_log_set_handler("midgard-core", G_LOG_LEVEL_MASK, midgard_error_default_log, NULL); mgd_global = midgard_test_connection_open_user_config(CONFIG_CONFIG_NAME, &config); //midgard_connection_set_loglevel(mgd_global, "debug", NULL); MidgardWorkspace *mw = NULL; g_test_add("/midgard_workspace/new", MidgardWorkspaceTest, mw, midgard_test_workspace_setup, midgard_test_workspace_new, midgard_test_workspace_teardown_foo); g_test_add("/midgard_workspace/create", MidgardWorkspaceTest, mw, midgard_test_workspace_setup, midgard_test_workspace_create, midgard_test_workspace_teardown_foo); g_test_add("/midgard_workspace/update", MidgardWorkspaceTest, mw, midgard_test_workspace_setup, midgard_test_workspace_update, midgard_test_workspace_teardown_foo); g_test_add("/midgard_workspace/purge", MidgardWorkspaceTest, mw, midgard_test_workspace_setup, midgard_test_workspace_purge, midgard_test_workspace_teardown_foo); g_test_add("/midgard_workspace/exists", MidgardWorkspaceTest, mw, midgard_test_workspace_setup, midgard_test_workspace_exists, midgard_test_workspace_teardown_foo); g_test_add("/midgard_workspace/get_by_path", MidgardWorkspaceTest, mw, midgard_test_workspace_setup, midgard_test_workspace_get_by_path, midgard_test_workspace_teardown_foo); g_test_add("/midgard_workspace/get_path", MidgardWorkspaceTest, mw, midgard_test_workspace_setup, midgard_test_workspace_get_path, midgard_test_workspace_teardown_foo); g_test_add("/midgard_workspace/list_workspace_names", MidgardWorkspaceTest, mw, midgard_test_workspace_setup, midgard_test_workspace_list_workspace_names, midgard_test_workspace_teardown_foo); g_test_add("/midgard_workspace/get_workspace_by_name", MidgardWorkspaceTest, mw, midgard_test_workspace_setup, midgard_test_workspace_get_workspace_by_name, midgard_test_workspace_teardown_foo); g_test_add("/midgard_workspace/list_children", MidgardWorkspaceTest, mw, midgard_test_workspace_setup, midgard_test_workspace_list_children, midgard_test_workspace_teardown_foo); g_test_add("/midgard_workspace/get_context", MidgardWorkspaceTest, mw, midgard_test_workspace_setup, midgard_test_workspace_get_context, midgard_test_workspace_teardown_foo); g_test_add("/midgard_workspace/is_in_context", MidgardWorkspaceTest, mw, midgard_test_workspace_setup, midgard_test_workspace_is_in_context, midgard_test_workspace_teardown_foo); /* Finalize */ ///_MGD_TEST_UNREF_GOBJECT(user) //_MGD_TEST_UNREF_SCHEMA //_MGD_TEST_UNREF_MIDGARD return g_test_run(); }
int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); midgard_init(); /* FIXME, it should be fixed with API... */ MidgardSchema *schema = g_object_new(MIDGARD_TYPE_SCHEMA, NULL); midgard_schema_init(schema, NULL); midgard_schema_read_dir(schema, NULL); MidgardConfig *config = NULL; guint loghandler = g_log_set_handler("midgard-core", G_LOG_LEVEL_MASK, midgard_error_default_log, NULL); mgd_global = midgard_test_connection_open_user_config(CONFIG_CONFIG_NAME, &config); midgard_connection_set_loglevel(mgd_global, "debug", NULL); MidgardWorkspace *mw = NULL; g_test_add("/midgard_object/workspace/create", MidgardObjectWorkspaceTest, mw, midgard_test_object_workspace_setup, midgard_test_object_workspace_create, midgard_test_object_workspace_teardown_foo); g_test_add("/midgard_object/workspace/select_created", MidgardObjectWorkspaceTest, mw, midgard_test_object_workspace_setup, midgard_test_object_workspace_select_created, midgard_test_object_workspace_teardown_foo); g_test_add("/midgard_object/workspace_context/select_created", MidgardObjectWorkspaceTest, mw, midgard_test_object_workspace_setup, midgard_test_object_workspace_context_select_created, midgard_test_object_workspace_teardown_foo); g_test_add("/midgard_object/workspace/update", MidgardObjectWorkspaceTest, mw, midgard_test_object_workspace_setup, midgard_test_object_workspace_update, midgard_test_object_workspace_teardown_foo); g_test_add("/midgard_object/workspace_context/update", MidgardObjectWorkspaceTest, mw, midgard_test_object_workspace_setup, midgard_test_object_workspace_context_update, midgard_test_object_workspace_teardown_foo); g_test_add("/midgard_object/workspace/select_updated", MidgardObjectWorkspaceTest, mw, midgard_test_object_workspace_setup, midgard_test_object_workspace_select_updated, midgard_test_object_workspace_teardown_foo); g_test_add("/midgard_object/workspace/delete", MidgardObjectWorkspaceTest, mw, midgard_test_object_workspace_setup, midgard_test_object_workspace_delete, midgard_test_object_workspace_teardown_foo); /* Finalize */ ///_MGD_TEST_UNREF_GOBJECT(user) //_MGD_TEST_UNREF_SCHEMA //_MGD_TEST_UNREF_MIDGARD return g_test_run(); }
gboolean __midgard_connection_open( MidgardConnection *mgd, GHashTable **hashtable, gboolean init_schema) { g_return_val_if_fail(mgd != NULL, FALSE); MIDGARD_ERRNO_SET (mgd, MGD_ERR_OK); gchar *host, *dbname, *dbuser, *dbpass, *loglevel, *tmpstr; guint port = 0; gchar *auth = NULL; MidgardConfig *config = mgd->priv->config; host = config->host; dbname = config->database; dbuser = config->dbuser; dbpass = config->dbpass; loglevel = config->loglevel; port = config->dbport; gboolean enable_threads = config->gdathreads; /* Get 30% performance boost for non threaded applications */ if(!enable_threads) g_setenv("LIBGDA_NO_THREADS", "yes", TRUE); /* Initialize libgda */ gda_init (); midgard_connection_set_loglevel(mgd, loglevel, NULL); if(config->priv->dbtype == MIDGARD_DB_TYPE_SQLITE) { gchar *path = NULL; gchar *dbdir = config->dbdir; if (!dbdir || *dbdir == '\0') { const gchar *sqlite_dir[] = {"data", NULL}; path = midgard_core_config_build_path(sqlite_dir, NULL, TRUE); } else { path = g_strdup(dbdir); } tmpstr = g_strconcat("DB_DIR=", path, ";", "DB_NAME=", dbname, NULL); g_free(path); } else if (config->priv->dbtype == MIDGARD_DB_TYPE_ORACLE) { GString *cnc = g_string_sized_new(100); cnc_add_part(cnc, "TNSNAME", dbname, MGD_MYSQL_HOST); cnc_add_part(cnc, "HOST", host, MGD_MYSQL_HOST); cnc_add_part(cnc, "DB_NAME", dbname, MGD_MYSQL_DATABASE); tmpstr = g_string_free(cnc, FALSE); cnc = g_string_sized_new(100); cnc_add_part(cnc, "USERNAME", dbuser, MGD_MYSQL_USERNAME); cnc_add_part(cnc, "PASSWORD", dbpass, MGD_MYSQL_PASSWORD); auth = g_string_free(cnc, FALSE); } else { GString *cnc = g_string_sized_new(100); cnc_add_part(cnc, "HOST", host, MGD_MYSQL_HOST); if (port > 0) { GString *_strp = g_string_new(""); g_string_append_printf (_strp, "%d", port); cnc_add_part (cnc, "PORT", _strp->str, ""); g_string_free (_strp, TRUE); } cnc_add_part(cnc, "DB_NAME", dbname, MGD_MYSQL_DATABASE); tmpstr = g_string_free(cnc, FALSE); GString *auth_str = g_string_sized_new(100); cnc_add_part(auth_str, "USERNAME", dbuser, MGD_MYSQL_USERNAME); cnc_add_part(auth_str, "PASSWORD", dbpass, MGD_MYSQL_PASSWORD); auth = g_string_free(auth_str, FALSE); } GError *error = NULL; GdaConnection *connection = gda_connection_open_from_string( config->dbtype, tmpstr, auth, GDA_CONNECTION_OPTIONS_NONE, &error); g_free(auth); if(connection == NULL) { MIDGARD_ERRNO_SET_STRING (mgd, MGD_ERR_NOT_CONNECTED, " Database [%s]. %s", tmpstr, error->message); g_free(tmpstr); return FALSE; } g_free(tmpstr); mgd->priv->parser = gda_connection_create_parser (connection); if (!mgd->priv->parser) mgd->priv->parser = gda_sql_parser_new(); g_assert (mgd->priv->parser != NULL); mgd->priv->connection = connection; midgard_core_connection_connect_error_callback (mgd); if(init_schema) { if(!g_type_from_name("midgard_quota")) { MidgardSchema *schema = g_object_new(MIDGARD_TYPE_SCHEMA, NULL); gchar *path = g_build_path(G_DIR_SEPARATOR_S, config->sharedir, "MidgardObjects.xml", NULL); midgard_schema_init(schema, (const gchar *)path); g_free(path); midgard_schema_read_dir(schema, config->sharedir); mgd->priv->schema = schema; } } //midgard_connection_set_loglevel(mgd, loglevel, NULL); /* Loads available authentication types */ midgard_core_connection_initialize_auth_types(mgd); g_signal_emit (mgd, MIDGARD_CONNECTION_GET_CLASS (mgd)->signal_id_connected, 0); return TRUE; }