Author: reschke
Date: Thu Dec 10 16:47:41 2015
New Revision: 1719111
URL: http://svn.apache.org/viewvc?rev=1719111&view=rev
Log:
OAK-3764: RDB/NodeStoreFixture fails to track DataSource instances
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java?rev=1719111&r1=1719110&r2=1719111&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
Thu Dec 10 16:47:41 2015
@@ -21,12 +21,12 @@ package org.apache.jackrabbit.oak.jcr;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
+import java.util.Map;
import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
import javax.sql.DataSource;
-import com.mongodb.DB;
-
import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDataSourceFactory;
@@ -38,6 +38,8 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import com.mongodb.DB;
+
/**
* NodeStore fixture for parametrized tests.
*/
@@ -49,7 +51,7 @@ public abstract class NodeStoreFixture {
public static final NodeStoreFixture DOCUMENT_RDB = new NodeStoreFixture()
{
- private DataSource ds;
+ private Map<NodeStore, DataSource> dataSources = new
ConcurrentHashMap<NodeStore, DataSource>();
private String jdbcUrl;
private String fname = (new File("target")).isDirectory() ? "target/"
: "";
@@ -59,14 +61,15 @@ public abstract class NodeStoreFixture {
@Override
public NodeStore createNodeStore() {
- String prefix = "T" + UUID.randomUUID().toString().replace("-",
"");
+ String prefix = "T" + UUID.randomUUID().toString().replace("-",
"");
RDBOptions options = new
RDBOptions().tablePrefix(prefix).dropTablesOnClose(true);
this.jdbcUrl = pUrl.replace("{fname}", fname);
- this.ds = RDBDataSourceFactory.forJdbcUrl(jdbcUrl, pUser, pPasswd);
- return new DocumentMK.Builder().
- setPersistentCache("target/persistentCache,time").
- setRDBConnection(this.ds, options).
- getNodeStore();
+ DataSource ds = RDBDataSourceFactory.forJdbcUrl(jdbcUrl, pUser,
pPasswd);
+
+ NodeStore result = new
DocumentMK.Builder().setPersistentCache("target/persistentCache,time")
+ .setRDBConnection(ds, options).getNodeStore();
+ this.dataSources.put(result, ds);
+ return result;
}
@Override
@@ -79,9 +82,10 @@ public abstract class NodeStoreFixture {
if (nodeStore instanceof DocumentNodeStore) {
((DocumentNodeStore) nodeStore).dispose();
}
- if (this.ds instanceof Closeable) {
+ DataSource ds = this.dataSources.remove(nodeStore);
+ if (ds instanceof Closeable) {
try {
- ((Closeable)this.ds).close();
+ ((Closeable)ds).close();
} catch (IOException ex) {
throw new RuntimeException(ex);
}