You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by wi...@apache.org on 2015/09/11 14:05:02 UTC

[16/22] marmotta git commit: MARMOTTA-584: added a new check if the postgis extension is available before testing

MARMOTTA-584: added a new check if the postgis extension is available before testing


Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/d2333889
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/d2333889
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/d2333889

Branch: refs/heads/MARMOTTA-584
Commit: d233388945cae8b9bcf9f6b7306867b03f61acc3
Parents: bf53221
Author: Sergio Fernández <wi...@apache.org>
Authored: Fri Sep 11 12:41:52 2015 +0200
Committer: Sergio Fernández <wi...@apache.org>
Committed: Fri Sep 11 12:41:52 2015 +0200

----------------------------------------------------------------------
 .../geosparql/GeoSPARQLFunctionsTest.java       | 91 ++++++++++++++------
 .../apache/marmotta/kiwi/sail/KiWiStore.java    |  1 -
 .../kiwi/test/junit/KiWiDatabaseRunner.java     |  2 -
 3 files changed, 67 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/d2333889/libraries/kiwi/kiwi-geosparql/src/test/java/org/apache/marmotta/kiwi/sparql/geosparql/GeoSPARQLFunctionsTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-geosparql/src/test/java/org/apache/marmotta/kiwi/sparql/geosparql/GeoSPARQLFunctionsTest.java b/libraries/kiwi/kiwi-geosparql/src/test/java/org/apache/marmotta/kiwi/sparql/geosparql/GeoSPARQLFunctionsTest.java
index c5c24e5..ac6eb55 100644
--- a/libraries/kiwi/kiwi-geosparql/src/test/java/org/apache/marmotta/kiwi/sparql/geosparql/GeoSPARQLFunctionsTest.java
+++ b/libraries/kiwi/kiwi-geosparql/src/test/java/org/apache/marmotta/kiwi/sparql/geosparql/GeoSPARQLFunctionsTest.java
@@ -19,14 +19,18 @@ package org.apache.marmotta.kiwi.sparql.geosparql;
 import info.aduna.iteration.Iterations;
 import org.apache.commons.io.IOUtils;
 import org.apache.marmotta.kiwi.config.KiWiConfiguration;
+import org.apache.marmotta.kiwi.persistence.KiWiPersistence;
+import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
 import org.apache.marmotta.kiwi.sail.KiWiStore;
 import org.apache.marmotta.kiwi.sparql.sail.KiWiSparqlSail;
+import org.apache.marmotta.kiwi.test.helper.DBConnectionChecker;
+import org.apache.marmotta.kiwi.test.junit.KiWiDatabaseRunner;
 import org.junit.*;
-import org.junit.internal.AssumptionViolatedException;
-import org.junit.rules.TestWatcher;
-import org.junit.runner.Description;
 import org.junit.runner.RunWith;
-import org.openrdf.query.*;
+import org.openrdf.query.BindingSet;
+import org.openrdf.query.QueryLanguage;
+import org.openrdf.query.TupleQuery;
+import org.openrdf.query.TupleQueryResult;
 import org.openrdf.repository.Repository;
 import org.openrdf.repository.RepositoryConnection;
 import org.openrdf.repository.RepositoryException;
@@ -35,12 +39,13 @@ import org.openrdf.rio.RDFFormat;
 import org.openrdf.rio.RDFParseException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
 import java.io.IOException;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.List;
-import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.test.helper.DBConnectionChecker;
-import org.apache.marmotta.kiwi.test.junit.KiWiDatabaseRunner;
 
 /**
  * Test suite for all the functions of GeoSPARQL implemented.
@@ -74,10 +79,10 @@ public class GeoSPARQLFunctionsTest {
 
     @Before
     public void initDatabase() throws RepositoryException, IOException, RDFParseException {
-        if (!PostgreSQLDialect.class.equals(this.dbConfig.getDialect().getClass())) {
-            log.warn("PostgreSQL not available! (using {})", this.dbConfig.getDialect().getClass().getSimpleName());
-            Assume.assumeTrue(false);
-        }
+        Assume.assumeTrue(String.format("PostgreSQL not available! (using %s)", this.dbConfig.getDialect().getClass().getSimpleName()),
+                PostgreSQLDialect.class.equals(this.dbConfig.getDialect().getClass()));
+
+        Assume.assumeTrue("PostGIS not available!", checkPostGIS(dbConfig));
 
         store = new KiWiStore(dbConfig);
         store.setDropTablesOnShutdown(true);
@@ -91,15 +96,61 @@ public class GeoSPARQLFunctionsTest {
         RepositoryConnection conn = repository.getConnection();
         try {
             conn.begin();
-            conn.add(this.getClass().getResourceAsStream("/demo_data_spain_provinces.rdf"), "http://localhost/test/", RDFFormat.RDFXML);
-            conn.add(this.getClass().getResourceAsStream("/demo_data_spain_towns.rdf"), "http://localhost/test/", RDFFormat.RDFXML);
-            conn.add(this.getClass().getResourceAsStream("/demo_data_spain_rivers.rdf"), "http://localhost/test/", RDFFormat.RDFXML);
+            conn.add(this.getClass().getResourceAsStream("/demo_data_spain_provinces.rdf"), "http://localhost/test/geosparql", RDFFormat.RDFXML);
+            conn.add(this.getClass().getResourceAsStream("/demo_data_spain_towns.rdf"), "http://localhost/test/geosparql", RDFFormat.RDFXML);
+            conn.add(this.getClass().getResourceAsStream("/demo_data_spain_rivers.rdf"), "http://localhost/test/geosparql", RDFFormat.RDFXML);
             conn.commit();
         } finally {
             conn.close();
         }
     }
 
+    /**
+     * Performs a basic test to see if PostGIS extension is
+     * actually available to use
+     *
+     * @return
+     */
+    private boolean checkPostGIS(KiWiConfiguration config) {
+        final KiWiPersistence persistence = new KiWiPersistence(config);
+        try {
+            persistence.initialise();
+
+            final Connection conn = persistence.getJDBCConnection();
+            if (conn != null) {
+                try {
+                    //try(PreparedStatement stmt = conn.prepareStatement("CREATE EXTENSION IF NOT EXISTS postgis;")) {
+                    //    stmt.executeQuery();
+                    //}
+
+                    try (PreparedStatement stmt = conn.prepareStatement("SELECT PostGIS_full_version();")) {
+                        ResultSet result = stmt.executeQuery();
+                        if (result.next()) {
+                            log.info("Using PostGIS {}...", result.getString("postgis_full_version"));
+                        }
+                    }
+
+                    //try(PreparedStatement stmt = conn.prepareStatement("DROP EXTENSION IF NOT EXISTS postgis;")) {
+                    //    stmt.executeQuery();
+                    //}
+
+                    return true;
+                } catch (SQLException e) {
+                    log.warn("Checking PostGIS extension has failed: {}", e.getMessage());
+                    return false;
+                }
+            } else {
+                log.warn("Impossible to get a JDBC connection");
+                return false;
+            }
+        } catch (Exception e) {
+            log.warn("Impossible to get a JDBC connection: {}", e.getMessage());
+            return false;
+        } finally {
+            persistence.shutdown();
+        }
+    }
+
     @After
     public void dropDatabase() throws RepositoryException, SQLException {
         if (store != null && store.isInitialized()) {
@@ -109,15 +160,6 @@ public class GeoSPARQLFunctionsTest {
         }
     }
 
-    @Rule
-    public TestWatcher watchman = new TestWatcher() {
-        @Override
-        protected void skipped(AssumptionViolatedException e, Description description) {
-            super.skipped(e, description);
-            log.warn("{} skipped because a precondition failed", description.getMethodName());
-        }
-    };
-
     @Test
     public void testSfContains() throws Exception {
         testQueryBoolean("sfContains.sparql", "contains");
@@ -319,7 +361,7 @@ public class GeoSPARQLFunctionsTest {
     }
 
     private void testQueryGeometry(String filename) throws Exception {
-        String queryString = IOUtils.toString(this.getClass().getResourceAsStream(filename), "UTF-8");
+        String queryString = IOUtils.toString(this.getClass().getResourceAsStream("/" + filename), "UTF-8");
 
         RepositoryConnection conn = repository.getConnection();
         try {
@@ -342,4 +384,5 @@ public class GeoSPARQLFunctionsTest {
             conn.close();
         }
     }
+
 }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/d2333889/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
index ae2bf6c..2ac179e 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
@@ -38,7 +38,6 @@ import java.sql.SQLException;
  */
 public class KiWiStore extends NotifyingSailBase {
 
-
     /**
      * The repository-wide value factory, using the valueFactoryConnection above. Will be initialised when
      * getValueFactory() is called for the first time.

http://git-wip-us.apache.org/repos/asf/marmotta/blob/d2333889/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/junit/KiWiDatabaseRunner.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/junit/KiWiDatabaseRunner.java b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/junit/KiWiDatabaseRunner.java
index 1f01f3d..6308852 100644
--- a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/junit/KiWiDatabaseRunner.java
+++ b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/junit/KiWiDatabaseRunner.java
@@ -241,8 +241,6 @@ public class KiWiDatabaseRunner extends Suite {
             return method.getName();
         }
 
-
-        
         @Override
         protected void validateConstructor(List<Throwable> errors) {
             validateOnlyOneConstructor(errors);