[libgda: 1/4] CI: Fixing PostgreSQL service
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda: 1/4] CI: Fixing PostgreSQL service
- Date: Sun, 23 Dec 2018 15:04:30 +0000 (UTC)
commit 8be564377a961794c8766f2730b2650de55e43ef
Author: Pavlo Solntsev <p sun fun gmail com>
Date: Mon Dec 17 19:09:46 2018 -0600
CI: Fixing PostgreSQL service
* CI file was modified to remove DB definition
* Fixing access of potentially NULL object with a function that doesn't
accept this.
.gitlab-ci.yml | 13 +++++----
providers/postgres/gda-postgres-ddl.c | 27 +++++------------
tests/ddl/check-ddl-creator-postgresql.c | 50 ++++++++++++++++++--------------
tests/test-cnc-utils.c | 42 ++++++++++-----------------
4 files changed, 59 insertions(+), 73 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f40a6b46e..37478c89b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,15 +5,14 @@
image: ubuntu:devel
services:
- - postgres:latest
+ - postgres
stages:
- - build
+ - build
variables:
- POSTGRES_DB: test
POSTGRES_USER: test
- POSTGRES_PASSWORD: "test1"
+ POSTGRES_PASSWORD: test1
DEPENDENCIES: gcc gettext gtk-doc-tools make autoconf
meson ninja-build
libgtk-3-dev libxml2-dev gnome-common
@@ -41,8 +40,8 @@ variables:
postgresql-client-common
GIT_SUBMODULE_STRATEGY: normal
- POSTGRESQL_DBCREATE_PARAMS: "DB_NAME=test;HOST=postgres;USERNAME=test;PASSWORD=test1"
- POSTGRESQL_CNC_PARAMS: "DB_NAME=test;HOST=postgres;USERNAME=test;PASSWORD=test1"
+ POSTGRESQL_DBCREATE_PARAMS: "HOST=postgres;PORT=5432;ADM_LOGIN=test;ADM_PASSWORD='test1'"
+ POSTGRESQL_CNC_PARAMS: "HOST=postgres;USERNAME=test;PASSWORD='test1'"
before_script:
- apt update && apt -y install $DEPENDENCIES
@@ -72,6 +71,8 @@ autotools_build:
meson_build:
stage: build
script:
+ - export PGPASSWORD=$POSTGRES_PASSWORD
+ - psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "SELECT 'OK' AS status;"
- meson _build --prefix=/usr -Denable-ci-environment=true
- cd _build
- ninja
diff --git a/providers/postgres/gda-postgres-ddl.c b/providers/postgres/gda-postgres-ddl.c
index 2307ac763..b2f0bbd11 100644
--- a/providers/postgres/gda-postgres-ddl.c
+++ b/providers/postgres/gda-postgres-ddl.c
@@ -87,18 +87,13 @@ gda_postgres_render_DROP_DB (GdaServerProvider *provider, GdaConnection *cnc,
{
GString *string;
gchar *sql = NULL;
- gchar *tmp;
+ GValue *value = NULL;
string = g_string_new ("DROP DATABASE ");
- tmp = gda_connection_operation_get_sql_identifier_at (cnc, op, "/DB_DESC_P/DB_NAME", error);
- if (!tmp) {
- g_string_free (string, TRUE);
- return NULL;
- }
-
- g_string_append (string, tmp);
- g_free (tmp);
+ value = gda_server_operation_get_value_at (op, "/DB_DESC_P/DB_NAME");
+ if (value && G_VALUE_HOLDS (value, G_TYPE_STRING) && g_value_get_string(value))
+ g_string_append (string, g_value_get_string (value));
sql = string->str;
g_string_free (string, FALSE);
@@ -428,20 +423,14 @@ gda_postgres_render_DROP_TABLE (GdaServerProvider *provider, GdaConnection *cn
GString *string;
const GValue *value;
gchar *sql = NULL;
- gchar *tmp;
- string = g_string_new ("DROP TABLE ");
+ string = g_string_new ("DROP TABLE IF EXISTS ");
- tmp = gda_connection_operation_get_sql_identifier_at (cnc, op,
- "/TABLE_DESC_P/TABLE_NAME", error);
- if (!tmp) {
- g_string_free (string, TRUE);
- return NULL;
+ value = gda_server_operation_get_value_at (op, "/TABLE_DESC_P/TABLE_NAME");
+ if (value && G_VALUE_HOLDS (value, G_TYPE_STRING)) {
+ g_string_append (string, g_value_get_string (value));
}
- g_string_append (string, tmp);
- g_free (tmp);
-
value = gda_server_operation_get_value_at (op, "/TABLE_DESC_P/REFERENCED_ACTION");
if (value && G_VALUE_HOLDS (value, G_TYPE_STRING)) {
g_string_append_c (string, ' ');
diff --git a/tests/ddl/check-ddl-creator-postgresql.c b/tests/ddl/check-ddl-creator-postgresql.c
index 57ccadb0b..202fde344 100644
--- a/tests/ddl/check-ddl-creator-postgresql.c
+++ b/tests/ddl/check-ddl-creator-postgresql.c
@@ -33,7 +33,9 @@ typedef struct {
-static void create_users_table (CheckDdlObject *self) {
+static void
+create_users_table (CheckDdlObject *self)
+{
GError *error = NULL;
gboolean res = FALSE;
GdaDdlTable *table = NULL;
@@ -101,7 +103,9 @@ static void create_users_table (CheckDdlObject *self) {
g_assert_true (res);
}
-static void create_companies_table (CheckDdlObject *self) {
+static void
+create_companies_table (CheckDdlObject *self)
+{
GError *error = NULL;
gboolean res = FALSE;
GdaDdlTable *table = NULL;
@@ -170,7 +174,8 @@ static void create_companies_table (CheckDdlObject *self) {
}
-static void create_countries_table (CheckDdlObject *self) {
+static void create_countries_table (CheckDdlObject *self)
+{
GError *error = NULL;
gboolean res = FALSE;
GdaDdlTable *table = NULL;
@@ -247,23 +252,26 @@ test_ddl_creator_start (CheckDdlObject *self,
self->cnc = NULL;
self->started_db = FALSE;
self->cont = FALSE;
-
-#ifdef CI_ENVIRONMENT
- const gchar *cnc_string = "DB_NAME=test;HOST=postgres;USERNAME=test;PASSWORD=test1";
-#else
- const gchar *cnc_string = "DB_NAME=test;HOST=localhost;USERNAME=test;PASSWORD=test1";
-#endif
-
- self->cnc = gda_connection_new_from_string("Postgresql",
- cnc_string,
- NULL,
- GDA_CONNECTION_OPTIONS_NONE,
- NULL);
- if (self->cnc == NULL) {
- g_print ("Postgres test not run, please setup a database 'test', owned by 'test' role with password
'test1' at localhost\n");
- g_print ("Test Skip.\n");
- return;
- }
+ const gchar *cnc_string = NULL;
+
+ cnc_string = g_getenv ("POSTGRES_CNC_PARAMS");
+
+ if (cnc_string)
+ {
+ self->cnc = gda_connection_new_from_string("Postgresql",
+ cnc_string,
+ NULL,
+ GDA_CONNECTION_OPTIONS_NONE,
+ NULL);
+ }
+ else
+ {
+ g_print ("Postgres test not run\n");
+ g_print ("Please set the variable POSTGRES_CNC_PARAMS with an appropriate user, host, and database\n");
+ g_print ("Test Skip.\n");
+ return;
+ }
+ }
g_assert_nonnull (self->cnc);
@@ -283,7 +291,7 @@ test_ddl_creator_start (CheckDdlObject *self,
static void
test_ddl_creator_finish (CheckDdlObject *self,
- gconstpointer user_data)
+ gconstpointer user_data)
{
if (self->cnc != NULL) {
gda_connection_close(self->cnc,NULL);
diff --git a/tests/test-cnc-utils.c b/tests/test-cnc-utils.c
index 3bd2b1d56..a6b9c4828 100644
--- a/tests/test-cnc-utils.c
+++ b/tests/test-cnc-utils.c
@@ -133,38 +133,24 @@ test_cnc_open_connection (const gchar *provider, const gchar *dbname, GError **e
data.requested_db_name ? data.requested_db_name : dbname);
g_print ("Open connection string: %s\n", data.string->str);
- gchar *auth_string = NULL;
- GSList *current = gda_set_get_holders (prov_info->auth_params);
- while (current) {
- GdaHolder *holder = (GdaHolder *) current->data;
-
- const gchar *id = gda_holder_get_id (holder);
- const gchar *env = NULL;
- if (g_strrstr (id, "USER") != NULL) {
- str = g_strdup_printf ("%s_USER", upname);
- env = getenv (str);
- g_free (str);
- } else if (g_strrstr (id, "PASS") != NULL) {
- str = g_strdup_printf ("%s_PASS", upname);
- env = getenv (str);
- g_free (str);
- }
+ GString *auth_string = g_string_new ("");
- if (env) {
- str = g_strdup_printf ("%s=%s;", id, env);
+ const gchar *qlvalue = gda_quark_list_find (cnc_quark_list,"USERNAME");
- gchar *tmp = auth_string;
- auth_string = g_strconcat (auth_string, str, NULL);
- g_free (str);
- g_free (tmp);
- }
+ if (qlvalue)
+ g_string_append_printf (auth_string,"USERNAME=%s;",qlvalue);
+
+ qlvalue = gda_quark_list_find (cnc_quark_list,"PASSWORD");
- current = g_slist_next (current);
- }
+ if (qlvalue)
+ g_string_append_printf (auth_string,"PASSWORD=%s;",qlvalue);
+
+ g_message ("Connection string: %s\n",data.string->str);
+ g_message ("Auth string: %s\n",auth_string->str);
- cnc = gda_connection_open_from_string (prov_info->id, data.string->str, auth_string,
+ cnc = gda_connection_open_from_string (prov_info->id, data.string->str, auth_string->str,
GDA_CONNECTION_OPTIONS_NONE, error);
- g_free (auth_string);
+ g_string_free (auth_string,TRUE);
g_string_free (data.string, TRUE);
}
@@ -226,6 +212,7 @@ test_cnc_setup_connection (const gchar *provider, const gchar *dbname, GError **
str = g_strdup_printf ("%s_DBCREATE_PARAMS", upname);
db_params = getenv (str);
g_free (str);
+ g_message ("Creating database - step\n");
if (db_params) {
GdaServerOperation *op;
@@ -242,6 +229,7 @@ test_cnc_setup_connection (const gchar *provider, const gchar *dbname, GError **
db_created = TRUE;
}
+ g_message ("Opening connection\n");
/* open connection to database */
cnc = test_cnc_open_connection (provider, dbname, error);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]