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);
         }


Reply via email to