Author: reschke
Date: Fri Feb 6 13:34:46 2015
New Revision: 1657804
URL: http://svn.apache.org/r1657804
Log:
OAK-1266 - support RDB table name prefixes in oak-run
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
jackrabbit/oak/trunk/oak-run/README.md
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java?rev=1657804&r1=1657803&r2=1657804&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
Fri Feb 6 13:34:46 2015
@@ -50,6 +50,7 @@ import org.apache.jackrabbit.oak.plugins
import
org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache;
import org.apache.jackrabbit.oak.plugins.document.rdb.RDBBlobStore;
import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore;
+import org.apache.jackrabbit.oak.plugins.document.rdb.RDBOptions;
import org.apache.jackrabbit.oak.plugins.document.util.StringValue;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
@@ -570,7 +571,21 @@ public class DocumentMK implements Micro
}
return this;
}
-
+
+ /**
+ * Sets a {@link DataSource} to use for the RDB document and blob
+ * stores, including {@link RDBOptions}.
+ *
+ * @return this
+ */
+ public Builder setRDBConnection(DataSource ds, RDBOptions options) {
+ this.documentStore = new RDBDocumentStore(ds, this, options);
+ if(this.blobStore == null) {
+ this.blobStore = new RDBBlobStore(ds, options);
+ }
+ return this;
+ }
+
/**
* Sets the persistent cache option.
*
Modified: jackrabbit/oak/trunk/oak-run/README.md
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/README.md?rev=1657804&r1=1657803&r2=1657804&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/README.md (original)
+++ jackrabbit/oak/trunk/oak-run/README.md Fri Feb 6 13:34:46 2015
@@ -259,6 +259,7 @@ Depending on the fixture the following o
--rdbjdbcuri - JDBC URL for RDB persistence
--rdbjdbcuser - JDBC username (defaults to "")
--rdbjdbcpasswd - JDBC password (defaults to "")
+ --rdbjdbctableprefix - for RDB persistence: prefix for table names
(defaults to "")
Examples:
@@ -297,6 +298,7 @@ The following benchmark options (with de
--rdbjdbcuri - JDBC URL for RDB persistence (defaults to local
file-based H2)
--rdbjdbcuser - JDBC username (defaults to "")
--rdbjdbcpasswd - JDBC password (defaults to "")
+ --rdbjdbctableprefix - for RDB persistence: prefix for table names
(defaults to "")
These options are passed to the test cases and repository fixtures
that need them. For example the Wikipedia dump option is needed by the
@@ -354,7 +356,9 @@ Finally the benchmark runner supports th
| Oak-RDB | Oak with the DocumentMK/RDB persistence |
(Note that for Oak-RDB, the required JDBC drivers either need to be embedded
-into oak-run, or be specified separately in the class path.)
+into oak-run, or be specified separately in the class path. Furthermode,
+dropDBAfterTest is interpreted to drop the *tables*, not the database
+iself, if and only if they have been auto-created)
Once started, the benchmark runner will execute each listed test case
against all the listed repository fixtures. After starting up the
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java?rev=1657804&r1=1657803&r2=1657804&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
(original)
+++
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
Fri Feb 6 13:34:46 2015
@@ -60,6 +60,8 @@ public class BenchmarkRunner {
.withOptionalArg().defaultsTo("");
OptionSpec<String> rdbjdbcpasswd = parser.accepts("rdbjdbcpasswd",
"RDB JDBC password")
.withOptionalArg().defaultsTo("");
+ OptionSpec<String> rdbjdbctableprefix =
parser.accepts("rdbjdbctableprefix", "RDB JDBC table prefix")
+ .withOptionalArg().defaultsTo("");
OptionSpec<Boolean> mmap = parser.accepts("mmap", "TarMK memory
mapping")
.withOptionalArg().ofType(Boolean.class)
.defaultsTo("64".equals(System.getProperty("sun.arch.data.model")));
@@ -142,10 +144,9 @@ public class BenchmarkRunner {
base.value(options), 256, cacheSize,
mmap.value(options)),
OakRepositoryFixture.getTarWithBlobStore(
base.value(options), 256, cacheSize,
mmap.value(options)),
- OakRepositoryFixture.getRDB(rdbjdbcuri.value(options),
- rdbjdbcuser.value(options),
rdbjdbcpasswd.value(options),
- dropDBAfterTest.value(options), cacheSize * MB)
- };
+ OakRepositoryFixture.getRDB(rdbjdbcuri.value(options),
rdbjdbcuser.value(options),
+ rdbjdbcpasswd.value(options),
rdbjdbctableprefix.value(options),
+ dropDBAfterTest.value(options), cacheSize * MB) };
Benchmark[] allBenchmarks = new Benchmark[] {
new OrderedIndexQueryOrderedIndexTest(),
new OrderedIndexQueryStandardIndexTest(),
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java?rev=1657804&r1=1657803&r2=1657804&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
(original)
+++
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
Fri Feb 6 13:34:46 2015
@@ -28,6 +28,7 @@ import org.apache.jackrabbit.oak.kernel.
import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
import org.apache.jackrabbit.oak.plugins.document.rdb.RDBBlobStore;
import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDataSourceFactory;
+import org.apache.jackrabbit.oak.plugins.document.rdb.RDBOptions;
import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
@@ -226,15 +227,19 @@ public abstract class OakFixture {
}
public static OakFixture getRDB(final String name, final String jdbcuri,
final String jdbcuser, final String jdbcpasswd,
- final boolean dropDBAfterTest, final long
cacheSize) {
+ final String tablePrefix, final boolean
dropDBAfterTest, final long cacheSize) {
return new OakFixture(name) {
private DocumentMK[] kernels;
private BlobStore blobStore;
+ private RDBOptions getOptions(boolean dropDBAFterTest, String
tablePrefix) {
+ return new
RDBOptions().dropTablesOnClose(dropDBAfterTest).tablePrefix(tablePrefix);
+ }
+
private BlobStore getBlobStore() {
try {
DataSource ds = RDBDataSourceFactory.forJdbcUrl(jdbcuri,
jdbcuser, jdbcpasswd);
- blobStore = new RDBBlobStore(ds);
+ blobStore = new RDBBlobStore(ds,
getOptions(dropDBAfterTest, tablePrefix));
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -245,7 +250,8 @@ public abstract class OakFixture {
@Override
public MicroKernel getMicroKernel() {
DataSource ds = RDBDataSourceFactory.forJdbcUrl(jdbcuri,
jdbcuser, jdbcpasswd);
- DocumentMK.Builder mkBuilder = new
DocumentMK.Builder().setRDBConnection(ds).memoryCacheSize(cacheSize)
+ DocumentMK.Builder mkBuilder = new DocumentMK.Builder()
+ .setRDBConnection(ds, getOptions(dropDBAfterTest,
tablePrefix)).memoryCacheSize(cacheSize)
.setLogging(false);
BlobStore blobStore = getBlobStore();
if (blobStore != null) {
@@ -257,7 +263,8 @@ public abstract class OakFixture {
@Override
public Oak getOak(int clusterId) throws Exception {
DataSource ds = RDBDataSourceFactory.forJdbcUrl(jdbcuri,
jdbcuser, jdbcpasswd);
- DocumentMK.Builder mkBuilder = new
DocumentMK.Builder().setRDBConnection(ds).memoryCacheSize(cacheSize)
+ DocumentMK.Builder mkBuilder = new DocumentMK.Builder()
+ .setRDBConnection(ds, getOptions(dropDBAfterTest,
tablePrefix)).memoryCacheSize(cacheSize)
.setClusterId(clusterId).setLogging(false);
BlobStore blobStore = getBlobStore();
if (blobStore != null) {
@@ -274,7 +281,8 @@ public abstract class OakFixture {
for (int i = 0; i < cluster.length; i++) {
BlobStore blobStore = getBlobStore();
DataSource ds = RDBDataSourceFactory.forJdbcUrl(jdbcuri,
jdbcuser, jdbcpasswd);
- DocumentMK.Builder mkBuilder = new
DocumentMK.Builder().setRDBConnection(ds).memoryCacheSize(cacheSize)
+ DocumentMK.Builder mkBuilder = new DocumentMK.Builder()
+ .setRDBConnection(ds, getOptions(dropDBAfterTest,
tablePrefix)).memoryCacheSize(cacheSize)
.setClusterId(i).setLogging(false);
if (blobStore != null) {
mkBuilder.setBlobStore(blobStore);
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java?rev=1657804&r1=1657803&r2=1657804&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java
(original)
+++
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java
Fri Feb 6 13:34:46 2015
@@ -59,8 +59,10 @@ public class OakRepositoryFixture implem
cacheSize, useFileDataStore, base, fdsCacheInMB));
}
- public static RepositoryFixture getRDB(String jdbcuri, String jdbcuser,
String jdbcpasswd, boolean dropDBAfterTest, long cacheSize) {
- return new OakRepositoryFixture(OakFixture.getRDB(OakFixture.OAK_RDB,
jdbcuri, jdbcuser, jdbcpasswd, dropDBAfterTest, cacheSize));
+ public static RepositoryFixture getRDB(String jdbcuri, String jdbcuser,
String jdbcpasswd, String jdbctableprefix,
+ boolean dropDBAfterTest, long cacheSize) {
+ return new OakRepositoryFixture(OakFixture.getRDB(OakFixture.OAK_RDB,
jdbcuri, jdbcuser, jdbcpasswd, jdbctableprefix,
+ dropDBAfterTest, cacheSize));
}
public static RepositoryFixture getTar(File base, int maxFileSizeMB, int
cacheSizeMB, boolean memoryMapping) {
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java?rev=1657804&r1=1657803&r2=1657804&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java
(original)
+++
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java
Fri Feb 6 13:34:46 2015
@@ -963,6 +963,8 @@ public class Main {
OptionSpec<String> rdbjdbcuri = parser.accepts("rdbjdbcuri", "RDB JDBC
URI").withOptionalArg().defaultsTo("");
OptionSpec<String> rdbjdbcuser = parser.accepts("rdbjdbcuser", "RDB
JDBC user").withOptionalArg().defaultsTo("");
OptionSpec<String> rdbjdbcpasswd = parser.accepts("rdbjdbcpasswd",
"RDB JDBC password").withOptionalArg().defaultsTo("");
+ OptionSpec<String> rdbjdbctableprefix =
parser.accepts("rdbjdbctableprefix", "RDB JDBC table prefix")
+ .withOptionalArg().defaultsTo("");
OptionSpec<String> nonOption = parser.nonOptions();
OptionSpec<?> help = parser.acceptsAll(asList("h", "?", "help"), "show
help").forHelp();
@@ -1012,7 +1014,7 @@ public class Main {
oakFixture = OakFixture.getTar(OakFixture.OAK_TAR, baseFile, 256,
cacheSize, mmap.value(options), false);
} else if (fix.equals(OakFixture.OAK_RDB)) {
oakFixture = OakFixture.getRDB(OakFixture.OAK_RDB,
rdbjdbcuri.value(options), rdbjdbcuser.value(options),
- rdbjdbcpasswd.value(options), false, cacheSize);
+ rdbjdbcpasswd.value(options),
rdbjdbctableprefix.value(options), false, cacheSize);
} else {
throw new IllegalArgumentException("Unsupported repository setup "
+ fix);
}