You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ja...@apache.org on 2013/08/26 17:26:55 UTC

[6/8] git commit: Converted test in kiwi-triplestore to use the KiWiDatabaseRunner

Converted test in kiwi-triplestore to use the KiWiDatabaseRunner


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

Branch: refs/heads/develop
Commit: 45d130d503898e10a2649334f68d94f688811f98
Parents: bd477fe
Author: Jakob Frank <ja...@apache.org>
Authored: Mon Aug 26 17:07:01 2013 +0200
Committer: Jakob Frank <ja...@apache.org>
Committed: Mon Aug 26 17:07:01 2013 +0200

----------------------------------------------------------------------
 .../marmotta/kiwi/test/H2ConcurrencyTest.java   | 51 ++----------------
 .../kiwi/test/MySQLConcurrencyTest.java         | 53 +++----------------
 .../kiwi/test/PostgreSQLConcurrencyTest.java    | 55 +++-----------------
 .../marmotta/kiwi/test/RepositoryTest.java      | 31 ++---------
 .../kiwi/test/junit/KiWiDatabaseRunner.java     | 31 ++++++++++-
 5 files changed, 51 insertions(+), 170 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/45d130d5/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/H2ConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/H2ConcurrencyTest.java b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/H2ConcurrencyTest.java
index 3d02b1c..2b2f966 100644
--- a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/H2ConcurrencyTest.java
+++ b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/H2ConcurrencyTest.java
@@ -6,10 +6,10 @@ import java.sql.SQLException;
 import java.util.Random;
 
 import org.apache.marmotta.kiwi.config.KiWiConfiguration;
-import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.sail.KiWiStore;
 import org.apache.marmotta.kiwi.test.helper.DBConnectionChecker;
+import org.apache.marmotta.kiwi.test.junit.KiWiDatabaseRunner;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.openrdf.repository.RepositoryException;
@@ -20,63 +20,22 @@ import org.slf4j.LoggerFactory;
 /**
  * This test starts many triplestore operations in parallel to check if concurrent operations will break things,
  *
- * It will try running over all available databases. Except for in-memory databases like H2 or Derby, database URLs must be passed as
- * system property, or otherwise the test is skipped for this database. Available system properties:
- * <ul>
- *     <li>PostgreSQL:
- *     <ul>
- *         <li>postgresql.url, e.g. jdbc:postgresql://localhost:5433/kiwitest?prepareThreshold=3</li>
- *         <li>postgresql.user (default: lmf)</li>
- *         <li>postgresql.pass (default: lmf)</li>
- *     </ul>
- *     </li>
- *     <li>MySQL:
- *     <ul>
- *         <li>mysql.url, e.g. jdbc:mysql://localhost:3306/kiwitest?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull</li>
- *         <li>mysql.user (default: lmf)</li>
- *         <li>mysql.pass (default: lmf)</li>
- *     </ul>
- *     </li>
- *     <li>H2:
- *     <ul>
- *         <li>h2.url, e.g. jdbc:h2:mem;MVCC=true;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=10</li>
- *         <li>h2.user (default: lmf)</li>
- *         <li>h2.pass (default: lmf)</li>
- *     </ul>
- *     </li>
- * </ul>
- * <p/>
- * Author: Sebastian Schaffert
-
- *
  * @author Sebastian Schaffert (sschaffert@apache.org)
  */
 public class H2ConcurrencyTest extends ConcurrencyTestBase {
 
-    private static KiWiDialect dialect;
-
-    private static String jdbcUrl;
-
-    private static String jdbcUser;
-
-    private static String jdbcPass;
-
     private static KiWiStore store;
 
     @BeforeClass
     public static void setup() throws RepositoryException {
         logger = LoggerFactory.getLogger(H2ConcurrencyTest.class);
 
-        jdbcPass = System.getProperty("h2.pass","lmf");
-        jdbcUrl = System.getProperty("h2.url");
-        jdbcUser = System.getProperty("h2.user","lmf");
+        KiWiConfiguration h2Config = KiWiDatabaseRunner.createKiWiConfig("H2", new H2Dialect());
+        DBConnectionChecker.checkDatabaseAvailability(h2Config);
+        
         rnd = new Random();
 
-        dialect = new H2Dialect();
-
-        DBConnectionChecker.checkDatabaseAvailability(jdbcUrl, jdbcUser, jdbcPass, dialect);
-
-        store = new KiWiStore(new KiWiConfiguration("test",jdbcUrl,jdbcUser,jdbcPass,dialect, "http://localhost/context/default", "http://localhost/context/inferred" ));
+        store = new KiWiStore(h2Config);
         repository = new SailRepository(store);
         repository.initialize();
     }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/45d130d5/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/MySQLConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/MySQLConcurrencyTest.java b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/MySQLConcurrencyTest.java
index 98f69d6..ddcdf46 100644
--- a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/MySQLConcurrencyTest.java
+++ b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/MySQLConcurrencyTest.java
@@ -6,10 +6,10 @@ import java.sql.SQLException;
 import java.util.Random;
 
 import org.apache.marmotta.kiwi.config.KiWiConfiguration;
-import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.sail.KiWiStore;
 import org.apache.marmotta.kiwi.test.helper.DBConnectionChecker;
+import org.apache.marmotta.kiwi.test.junit.KiWiDatabaseRunner;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.openrdf.repository.RepositoryException;
@@ -20,63 +20,22 @@ import org.slf4j.LoggerFactory;
 /**
  * This test starts many triplestore operations in parallel to check if concurrent operations will break things,
  *
- * It will try running over all available databases. Except for in-memory databases like H2 or Derby, database URLs must be passed as
- * system property, or otherwise the test is skipped for this database. Available system properties:
- * <ul>
- *     <li>PostgreSQL:
- *     <ul>
- *         <li>postgresql.url, e.g. jdbc:postgresql://localhost:5433/kiwitest?prepareThreshold=3</li>
- *         <li>postgresql.user (default: lmf)</li>
- *         <li>postgresql.pass (default: lmf)</li>
- *     </ul>
- *     </li>
- *     <li>MySQL:
- *     <ul>
- *         <li>mysql.url, e.g. jdbc:mysql://localhost:3306/kiwitest?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull</li>
- *         <li>mysql.user (default: lmf)</li>
- *         <li>mysql.pass (default: lmf)</li>
- *     </ul>
- *     </li>
- *     <li>H2:
- *     <ul>
- *         <li>h2.url, e.g. jdbc:h2:mem;MVCC=true;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=10</li>
- *         <li>h2.user (default: lmf)</li>
- *         <li>h2.pass (default: lmf)</li>
- *     </ul>
- *     </li>
- * </ul>
- * <p/>
- * Author: Sebastian Schaffert
-
- *
  * @author Sebastian Schaffert (sschaffert@apache.org)
  */
 public class MySQLConcurrencyTest extends ConcurrencyTestBase {
 
-    private static KiWiDialect dialect;
-
-    private static String jdbcUrl;
-
-    private static String jdbcUser;
-
-    private static String jdbcPass;
-
     private static KiWiStore store;
 
     @BeforeClass
     public static void setup() throws RepositoryException {
-        logger = LoggerFactory.getLogger(MySQLConcurrencyTest.class);
+        logger = LoggerFactory.getLogger(H2ConcurrencyTest.class);
 
-        jdbcPass = System.getProperty("mysql.pass","lmf");
-        jdbcUrl = System.getProperty("mysql.url");
-        jdbcUser = System.getProperty("mysql.user","lmf");
+        KiWiConfiguration mysqlConfig = KiWiDatabaseRunner.createKiWiConfig("MySQL", new MySQLDialect());
+        DBConnectionChecker.checkDatabaseAvailability(mysqlConfig);
+        
         rnd = new Random();
 
-        dialect = new MySQLDialect();
-
-        DBConnectionChecker.checkDatabaseAvailability(jdbcUrl, jdbcUser, jdbcPass, dialect);
-
-        store = new KiWiStore(new KiWiConfiguration("test",jdbcUrl,jdbcUser,jdbcPass,dialect, "http://localhost/context/default", "http://localhost/context/inferred" ));
+        store = new KiWiStore(mysqlConfig);
         repository = new SailRepository(store);
         repository.initialize();
     }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/45d130d5/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PostgreSQLConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PostgreSQLConcurrencyTest.java b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PostgreSQLConcurrencyTest.java
index ddd9b2d..8d5fb94 100644
--- a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PostgreSQLConcurrencyTest.java
+++ b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PostgreSQLConcurrencyTest.java
@@ -1,82 +1,41 @@
 package org.apache.marmotta.kiwi.test;
 
+import static org.junit.Assert.assertTrue;
+
 import java.sql.SQLException;
 import java.util.Random;
 
 import org.apache.marmotta.kiwi.config.KiWiConfiguration;
-import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
 import org.apache.marmotta.kiwi.sail.KiWiStore;
 import org.apache.marmotta.kiwi.test.helper.DBConnectionChecker;
+import org.apache.marmotta.kiwi.test.junit.KiWiDatabaseRunner;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
-
 import org.openrdf.repository.RepositoryException;
 import org.openrdf.repository.sail.SailRepository;
 import org.openrdf.sail.SailException;
-
 import org.slf4j.LoggerFactory;
 
-import static org.junit.Assert.assertTrue;
-
 /**
  * This test starts many triplestore operations in parallel to check if concurrent operations will break things,
  *
- * It will try running over all available databases. Except for in-memory databases like H2 or Derby, database URLs must be passed as
- * system property, or otherwise the test is skipped for this database. Available system properties:
- * <ul>
- *     <li>PostgreSQL:
- *     <ul>
- *         <li>postgresql.url, e.g. jdbc:postgresql://localhost:5433/kiwitest?prepareThreshold=3</li>
- *         <li>postgresql.user (default: lmf)</li>
- *         <li>postgresql.pass (default: lmf)</li>
- *     </ul>
- *     </li>
- *     <li>MySQL:
- *     <ul>
- *         <li>mysql.url, e.g. jdbc:mysql://localhost:3306/kiwitest?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull</li>
- *         <li>mysql.user (default: lmf)</li>
- *         <li>mysql.pass (default: lmf)</li>
- *     </ul>
- *     </li>
- *     <li>H2:
- *     <ul>
- *         <li>h2.url, e.g. jdbc:h2:mem;MVCC=true;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=10</li>
- *         <li>h2.user (default: lmf)</li>
- *         <li>h2.pass (default: lmf)</li>
- *     </ul>
- *     </li>
- * </ul>
- * <p/>
- *
  * @author Sebastian Schaffert (sschaffert@apache.org)
  */
 public class PostgreSQLConcurrencyTest extends ConcurrencyTestBase {
 
-    private static KiWiDialect dialect;
-
-    private static String jdbcUrl;
-
-    private static String jdbcUser;
-
-    private static String jdbcPass;
-
     private static KiWiStore store;
 
     @BeforeClass
     public static void setup() throws RepositoryException {
         logger = LoggerFactory.getLogger(PostgreSQLConcurrencyTest.class);
 
-        jdbcPass = System.getProperty("postgresql.pass","lmf");
-        jdbcUrl = System.getProperty("postgresql.url");
-        jdbcUser = System.getProperty("postgresql.user","lmf");
+        KiWiConfiguration psql = KiWiDatabaseRunner.createKiWiConfig("PostgreSQL", new PostgreSQLDialect());
+        DBConnectionChecker.checkDatabaseAvailability(psql);
+        
         rnd = new Random();
 
-        dialect = new PostgreSQLDialect();
-
-        DBConnectionChecker.checkDatabaseAvailability(jdbcUrl, jdbcUser, jdbcPass, dialect);
-
-        store = new KiWiStore(new KiWiConfiguration("test",jdbcUrl,jdbcUser,jdbcPass,dialect, "http://localhost/context/default", "http://localhost/context/inferred" ));
+        store = new KiWiStore(psql);
         repository = new SailRepository(store);
         repository.initialize();
     }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/45d130d5/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/RepositoryTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/RepositoryTest.java b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/RepositoryTest.java
index 4d2e291..f8817b7 100644
--- a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/RepositoryTest.java
+++ b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/RepositoryTest.java
@@ -65,34 +65,9 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 
 /**
- * Test the Sesame repository functionality backed by the KiWi triple store. It will try running over all
- * available databases. Except for in-memory databases like H2 or Derby, database URLs must be passed as
- * system property, or otherwise the test is skipped for this database. Available system properties:
- * <ul>
- *     <li>PostgreSQL:
- *     <ul>
- *         <li>postgresql.url, e.g. jdbc:postgresql://localhost:5433/kiwitest?prepareThreshold=3</li>
- *         <li>postgresql.user (default: lmf)</li>
- *         <li>postgresql.pass (default: lmf)</li>
- *     </ul>
- *     </li>
- *     <li>MySQL:
- *     <ul>
- *         <li>mysql.url, e.g. jdbc:mysql://localhost:3306/kiwitest?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull</li>
- *         <li>mysql.user (default: lmf)</li>
- *         <li>mysql.pass (default: lmf)</li>
- *     </ul>
- *     </li>
- *     <li>H2:
- *     <ul>
- *         <li>h2.url, e.g. jdbc:h2:mem;MVCC=true;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=10</li>
- *         <li>h2.user (default: lmf)</li>
- *         <li>h2.pass (default: lmf)</li>
- *     </ul>
- *     </li>
- * </ul>
- * <p/>
- * Author: Sebastian Schaffert
+ * Test the Sesame repository functionality backed by the KiWi triple store. 
+ * 
+ * @author Sebastian Schaffert (sschaffert@apache.org)
  */
 @RunWith(KiWiDatabaseRunner.class)
 public class RepositoryTest {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/45d130d5/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 4f15c38..e7f6571 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
@@ -81,16 +81,42 @@ import org.slf4j.LoggerFactory;
  */
 public class KiWiDatabaseRunner extends Suite {
 
+    /**
+     * Assign the {@link KiWiConfiguration} to all member fields with {@link KiWiConfig}-Annotation.
+     * If this annotation is used, the class must only have the default constructor.
+     */
     @Retention(RetentionPolicy.RUNTIME)
     @Target(ElementType.FIELD)
     public static @interface KiWiConfig {     
     }
     
+    /**
+     * Only execute with {@link KiWiConfiguration}s for these {@link KiWiDialect}s.
+     */
+    @Retention(RetentionPolicy.RUNTIME)
+    @Target(ElementType.TYPE)
+    public static @interface ForDialects {
+        Class<? extends KiWiDialect>[] dialect();
+    }
+    
     private final ArrayList<Runner> runners = new ArrayList<Runner>();
     
+    private final List<Class<? extends KiWiDialect>> forDialects;
+    
     public KiWiDatabaseRunner(Class<?> klass) throws Throwable {
         super(klass, Collections.<Runner>emptyList());
         
+        ForDialects d = klass.getAnnotation(ForDialects.class);
+        if (d != null) {
+            ArrayList<Class<? extends KiWiDialect>> forDialects = new ArrayList<>();
+            for (Class<? extends KiWiDialect> dialect : d.dialect()) {
+                forDialects.add(dialect);
+            }
+            this.forDialects = Collections.unmodifiableList(forDialects);
+        } else {
+            forDialects = null;
+        }
+        
         createRunners();
     }
 
@@ -107,11 +133,14 @@ public class KiWiDatabaseRunner extends Suite {
     }
 
     private void createKiWiConfig(String database, KiWiDialect dialect, List<KiWiConfiguration> configs) {
+        if (forDialects != null && !forDialects.contains(dialect.getClass())) {
+            return;
+        }
         KiWiConfiguration c = createKiWiConfig(database, dialect);
         if (c!=null) configs.add(c);
     }
     
-    private KiWiConfiguration createKiWiConfig(String database, KiWiDialect dialect) {
+    public static KiWiConfiguration createKiWiConfig(String database, KiWiDialect dialect) {
         final KiWiConfiguration config;
         if(System.getProperty(database.toLowerCase()+".url") != null) {
             config = new KiWiConfiguration(