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(