Added: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/DocumentMKDataStoreWriteTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/DocumentMKDataStoreWriteTest.java?rev=1566623&view=auto ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/DocumentMKDataStoreWriteTest.java (added) +++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/DocumentMKDataStoreWriteTest.java Mon Feb 10 13:45:26 2014 @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jackrabbit.oak.plugins.document.blob.ds; + +import java.io.File; + +import org.apache.commons.io.FileUtils; +import org.apache.jackrabbit.oak.plugins.document.DocumentMK; +import org.apache.jackrabbit.oak.plugins.document.MongoUtils; +import org.apache.jackrabbit.oak.plugins.document.blob.DocumentMKWriteTest; +import org.junit.After; +import org.junit.Assume; +import org.junit.Before; +import org.junit.BeforeClass; + +/** + * Tests for {@code DocumentMK#write(java.io.InputStream)} using + * {@link DataStore} + */ +public class DocumentMKDataStoreWriteTest extends DocumentMKWriteTest { + @BeforeClass + public static void setUpBeforeClass() throws Exception { + try { + Assume.assumeNotNull(DataStoreUtils.getBlobStore()); + } catch (Exception e) { + Assume.assumeNoException(e); + } + } + + @Override + @Before + public void setUpConnection() throws Exception { + mongoConnection = MongoUtils.getConnection(); + MongoUtils.dropCollections(mongoConnection.getDB()); + mk = new DocumentMK.Builder().setMongoDB(mongoConnection.getDB()) + .setBlobStore(DataStoreUtils.getBlobStore()).open(); + } + + @Override + @After + public void tearDownConnection() throws Exception { + FileUtils.deleteDirectory(new File(DataStoreUtils.PATH)); + mk.dispose(); + // the db might already be closed + mongoConnection.close(); + mongoConnection = MongoUtils.getConnection(); + MongoUtils.dropCollections(mongoConnection.getDB()); + mongoConnection.close(); + } +} \ No newline at end of file
Added: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/MongoDataStoreBlobStoreTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/MongoDataStoreBlobStoreTest.java?rev=1566623&view=auto ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/MongoDataStoreBlobStoreTest.java (added) +++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/MongoDataStoreBlobStoreTest.java Mon Feb 10 13:45:26 2014 @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jackrabbit.oak.plugins.document.blob.ds; + +import java.io.File; + +import org.apache.commons.io.FileUtils; +import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore; +import org.apache.jackrabbit.oak.plugins.document.blob.AbstractBlobStoreTest; +import org.junit.After; +import org.junit.Assume; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests the {@link DataStoreBlobStore} implementation. + */ +public class MongoDataStoreBlobStoreTest extends AbstractBlobStoreTest { + @BeforeClass + public static void setUpBeforeClass() throws Exception { + try { + Assume.assumeNotNull(DataStoreUtils.getBlobStore()); + } catch (Exception e) { + Assume.assumeNoException(e); + } + } + + @Before + @Override + public void setUp() throws Exception { + store = DataStoreUtils.getBlobStore(); + } + + @Override + @Test + public void testCombinedIdentifier() throws Exception { + } + + @Override + @Test + public void testGarbageCollection() throws Exception { + } + + @After + @Override + public void tearDown() throws Exception { + FileUtils.deleteDirectory(new File(DataStoreUtils.PATH)); + super.tearDown(); + } +} \ No newline at end of file Added: jackrabbit/oak/trunk/oak-core/src/test/resources/aws.properties URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/resources/aws.properties?rev=1566623&view=auto ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/test/resources/aws.properties (added) +++ jackrabbit/oak/trunk/oak-core/src/test/resources/aws.properties Mon Feb 10 13:45:26 2014 @@ -0,0 +1,38 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# AWS account ID +accessKey= +# AWS secret key +secretKey= +# AWS bucket name +s3Bucket=oakblobstore +# AWS bucket region +# Mapping of S3 regions to their constants +# US Standard us-standard +# US West us-west-2 +# US West (Northern California) us-west-1 +# EU (Ireland) EU +# Asia Pacific (Singapore) ap-southeast-1 +# Asia Pacific (Sydney) ap-southeast-2 +# Asia Pacific (Tokyo) ap-northeast-1 +# South America (Sao Paulo) sa-east-1 +s3Region=us-standard +connectionTimeout=120000 +socketTimeout=120000 +maxConnections=10 +maxErrorRetry=10 Modified: jackrabbit/oak/trunk/oak-it/mk/pom.xml URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/mk/pom.xml?rev=1566623&r1=1566622&r2=1566623&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-it/mk/pom.xml (original) +++ jackrabbit/oak/trunk/oak-it/mk/pom.xml Mon Feb 10 13:45:26 2014 @@ -108,6 +108,18 @@ <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </dependency> + <dependency> + <groupId>org.apache.jackrabbit</groupId> + <artifactId>jackrabbit-data</artifactId> + <version>${jackrabbit.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.jackrabbit</groupId> + <artifactId>jackrabbit-aws-ext</artifactId> + <version>${jackrabbit.version}</version> + <scope>test</scope> + </dependency> </dependencies> </project> Modified: jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/BaseMongoMicroKernelFixture.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/BaseMongoMicroKernelFixture.java?rev=1566623&r1=1566622&r2=1566623&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/BaseMongoMicroKernelFixture.java (original) +++ jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/BaseMongoMicroKernelFixture.java Mon Feb 10 13:45:26 2014 @@ -39,7 +39,7 @@ public abstract class BaseMongoMicroKern private MongoConnection mongoConnection = null; - private MongoConnection getMongoConnection() throws Exception { + protected MongoConnection getMongoConnection() throws Exception { if (mongoConnection == null) { mongoConnection = new MongoConnection(HOST, PORT, DB); } @@ -93,7 +93,7 @@ public abstract class BaseMongoMicroKern protected abstract BlobStore getBlobStore(DB db); - private static void dropCollections(DB db) { + protected void dropCollections(DB db) { db.getCollection(MongoBlobStore.COLLECTION_BLOBS).drop(); db.getCollection(Collection.NODES.toString()).drop(); } Added: jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/MongoCloudBlobMicroKernelFixture.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/MongoCloudBlobMicroKernelFixture.java?rev=1566623&view=auto ============================================================================== --- jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/MongoCloudBlobMicroKernelFixture.java (added) +++ jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/MongoCloudBlobMicroKernelFixture.java Mon Feb 10 13:45:26 2014 @@ -0,0 +1,78 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jackrabbit.mk.test; + +import org.apache.jackrabbit.mk.api.MicroKernel; +import org.apache.jackrabbit.mk.blobs.BlobStore; +import org.apache.jackrabbit.oak.plugins.blob.BlobStoreConfiguration; +import org.apache.jackrabbit.oak.plugins.blob.cloud.CloudBlobStore; +import org.apache.jackrabbit.oak.plugins.blob.cloud.CloudBlobStoreBuilder; +import org.apache.jackrabbit.oak.plugins.document.Collection; +import org.apache.jackrabbit.oak.plugins.document.DocumentMK; +import org.apache.jackrabbit.oak.plugins.document.mongo.MongoBlobStore; +import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection; + +import com.mongodb.DB; + +/** + * The Class MongoCloudBlobMicroKernelFixture. + */ +public class MongoCloudBlobMicroKernelFixture extends BaseMongoMicroKernelFixture { + + /** The blob store. */ + private BlobStore blobStore; + + /** + * Open connection. + * + * @throws Exception + */ + protected void openConnection() throws Exception { + if (blobStore == null) { + blobStore = + CloudBlobStoreBuilder + .newInstance() + .build( + BlobStoreConfiguration.newInstance().loadFromSystemProps()).get(); + } + } + + @Override + protected BlobStore getBlobStore(com.mongodb.DB db) { + return blobStore; + } + + @Override + public void setUpCluster(MicroKernel[] cluster) throws Exception { + MongoConnection connection = getMongoConnection(); + openConnection(); + DB db = connection.getDB(); + dropCollections(db); + + for (int i = 0; i < cluster.length; i++) { + cluster[i] = new DocumentMK.Builder(). + setMongoDB(db).setBlobStore(blobStore).setClusterId(i).open(); + } + } + + @Override + protected void dropCollections(DB db) { + db.getCollection(MongoBlobStore.COLLECTION_BLOBS).drop(); + db.getCollection(Collection.NODES.toString()).drop(); + ((CloudBlobStore) blobStore).deleteBucket(); + } +} Added: jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/MongoDataStoreBlobMicroKernelFixture.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/MongoDataStoreBlobMicroKernelFixture.java?rev=1566623&view=auto ============================================================================== --- jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/MongoDataStoreBlobMicroKernelFixture.java (added) +++ jackrabbit/oak/trunk/oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/MongoDataStoreBlobMicroKernelFixture.java Mon Feb 10 13:45:26 2014 @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jackrabbit.mk.test; + +import org.apache.jackrabbit.core.data.DataStoreException; +import org.apache.jackrabbit.mk.api.MicroKernel; +import org.apache.jackrabbit.mk.blobs.BlobStore; +import org.apache.jackrabbit.oak.plugins.blob.BlobStoreConfiguration; +import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore; +import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStoreBuilder; +import org.apache.jackrabbit.oak.plugins.document.Collection; +import org.apache.jackrabbit.oak.plugins.document.DocumentMK; +import org.apache.jackrabbit.oak.plugins.document.mongo.MongoBlobStore; +import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection; + +import com.mongodb.DB; + +/** + * The Class MongoCloudBlobMicroKernelFixture. + */ +public class MongoDataStoreBlobMicroKernelFixture extends BaseMongoMicroKernelFixture { + + /** The blob store. */ + private BlobStore blobStore; + + /** + * Open connection. + * + * @throws Exception + */ + protected void openConnection() throws Exception { + if (blobStore == null) { + blobStore = + DataStoreBlobStoreBuilder + .newInstance() + .build( + BlobStoreConfiguration.newInstance().loadFromSystemProps()).get(); + } + } + + @Override + protected BlobStore getBlobStore(com.mongodb.DB db) { + return blobStore; + } + + @Override + public void setUpCluster(MicroKernel[] cluster) throws Exception { + MongoConnection connection = getMongoConnection(); + openConnection(); + DB db = connection.getDB(); + dropCollections(db); + + for (int i = 0; i < cluster.length; i++) { + cluster[i] = new DocumentMK.Builder(). + setMongoDB(db).setBlobStore(blobStore).setClusterId(i).open(); + } + } + + @Override + protected void dropCollections(DB db) { + db.getCollection(MongoBlobStore.COLLECTION_BLOBS).drop(); + db.getCollection(Collection.NODES.toString()).drop(); + try { + ((DataStoreBlobStore) blobStore).clearInUse(); + ((DataStoreBlobStore) blobStore).getDataStore() + .deleteAllOlderThan(System.currentTimeMillis() + 1000000); + } catch (DataStoreException e) { + } + } +} Modified: jackrabbit/oak/trunk/oak-parent/pom.xml URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-parent/pom.xml?rev=1566623&r1=1566622&r2=1566623&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-parent/pom.xml (original) +++ jackrabbit/oak/trunk/oak-parent/pom.xml Mon Feb 10 13:45:26 2014 @@ -333,6 +333,12 @@ <artifactId>logback-classic</artifactId> <version>${logback.version}</version> </dependency> + <dependency> + <groupId>org.apache.jclouds.provider</groupId> + <artifactId>aws-s3</artifactId> + <version>1.7.0</version> + </dependency> + </dependencies> </dependencyManagement> Modified: jackrabbit/oak/trunk/oak-run/pom.xml URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/pom.xml?rev=1566623&r1=1566622&r2=1566623&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-run/pom.xml (original) +++ jackrabbit/oak/trunk/oak-run/pom.xml Mon Feb 10 13:45:26 2014 @@ -154,6 +154,16 @@ <version>${jackrabbit.version}</version> </dependency> <dependency> + <groupId>org.apache.jackrabbit</groupId> + <artifactId>jackrabbit-data</artifactId> + <version>${jackrabbit.version}</version> + </dependency> + <dependency> + <groupId>org.apache.jackrabbit</groupId> + <artifactId>jackrabbit-aws-ext</artifactId> + <version>${jackrabbit.version}</version> + </dependency> + <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-math</artifactId> <version>2.0</version> @@ -172,7 +182,10 @@ <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </dependency> - + <dependency> + <groupId>org.apache.jclouds.provider</groupId> + <artifactId>aws-s3</artifactId> + </dependency> <!-- Test dependencies --> <dependency> <groupId>junit</groupId> 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=1566623&r1=1566622&r2=1566623&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 Mon Feb 10 13:45:26 2014 @@ -23,13 +23,18 @@ import javax.jcr.Repository; import org.apache.commons.io.FileUtils; import org.apache.jackrabbit.api.JackrabbitRepository; import org.apache.jackrabbit.mk.api.MicroKernel; +import org.apache.jackrabbit.mk.blobs.BlobStore; import org.apache.jackrabbit.mk.core.MicroKernelImpl; -import org.apache.jackrabbit.oak.plugins.document.DocumentMK; -import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore; -import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection; import org.apache.jackrabbit.oak.Oak; import org.apache.jackrabbit.oak.jcr.Jcr; import org.apache.jackrabbit.oak.kernel.KernelNodeStore; +import org.apache.jackrabbit.oak.plugins.blob.BlobStoreConfiguration; +import org.apache.jackrabbit.oak.plugins.blob.BlobStoreHelper; +import org.apache.jackrabbit.oak.plugins.blob.cloud.CloudBlobStore; +import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore; +import org.apache.jackrabbit.oak.plugins.document.DocumentMK; +import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore; +import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection; import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore; import org.apache.jackrabbit.oak.plugins.segment.SegmentStore; import org.apache.jackrabbit.oak.plugins.segment.file.FileStore; @@ -84,9 +89,25 @@ public abstract class OakRepositoryFixtu public static RepositoryFixture getMongo( final String host, final int port, final String database, final boolean dropDBAfterTest, final long cacheSize) { + return new OakRepositoryFixture("Oak-Mongo") { private String dbName = database != null ? database : unique; private DocumentMK[] kernels; + private BlobStore blobStore; + + private BlobStore getBlobStore() { + BlobStoreConfiguration config = + BlobStoreConfiguration.newInstance().loadFromSystemProps(); + try { + blobStore = + BlobStoreHelper.create(config).orNull(); + } catch (Exception e) { + throw new RuntimeException(e); + } + + return blobStore; + } + @Override protected Repository[] internalSetUpCluster(int n) throws Exception { Repository[] cluster = new Repository[n]; @@ -94,14 +115,20 @@ public abstract class OakRepositoryFixtu for (int i = 0; i < cluster.length; i++) { MongoConnection mongo = new MongoConnection(host, port, dbName); - kernels[i] = new DocumentMK.Builder(). + BlobStore blobStore = getBlobStore(); + DocumentMK.Builder mkBuilder = new DocumentMK.Builder(). setMongoDB(mongo.getDB()). - setClusterId(i).setLogging(false).open(); + setClusterId(i).setLogging(false); + if (blobStore != null) { + mkBuilder.setBlobStore(blobStore); + } + kernels[i] = mkBuilder.open(); Oak oak = new Oak(new KernelNodeStore(kernels[i], cacheSize)); cluster[i] = new Jcr(oak).createRepository(); } return cluster; } + @Override public void tearDownCluster() { super.tearDownCluster(); @@ -114,6 +141,13 @@ public abstract class OakRepositoryFixtu new MongoConnection(host, port, dbName); mongo.getDB().dropDatabase(); mongo.close(); + if (blobStore instanceof CloudBlobStore) { + ((CloudBlobStore) blobStore).deleteBucket(); + } else if (blobStore instanceof DataStoreBlobStore) { + ((DataStoreBlobStore) blobStore).clearInUse(); + ((DataStoreBlobStore) blobStore).deleteAllOlderThan( + System.currentTimeMillis() + 10000000); + } } catch (Exception e) { throw new RuntimeException(e); } @@ -125,9 +159,25 @@ public abstract class OakRepositoryFixtu public static RepositoryFixture getMongoNS( final String host, final int port, final String database, final boolean dropDBAfterTest, final long cacheSize) { + return new OakRepositoryFixture("Oak-MongoNS") { private String dbName = database != null ? database : unique; private DocumentNodeStore[] stores; + private BlobStore blobStore; + + private BlobStore getBlobStore() { + BlobStoreConfiguration config = + BlobStoreConfiguration.newInstance().loadFromSystemProps(); + try { + blobStore = + BlobStoreHelper.create(config).orNull(); + } catch (Exception e) { + throw new RuntimeException(e); + } + + return blobStore; + } + @Override protected Repository[] internalSetUpCluster(int n) throws Exception { Repository[] cluster = new Repository[n]; @@ -135,15 +185,22 @@ public abstract class OakRepositoryFixtu for (int i = 0; i < cluster.length; i++) { MongoConnection mongo = new MongoConnection(host, port, dbName); - stores[i] = new DocumentMK.Builder(). + BlobStore blobStore = getBlobStore(); + DocumentMK.Builder mkBuilder = + new DocumentMK.Builder(). setMongoDB(mongo.getDB()). memoryCacheSize(cacheSize). - setClusterId(i).setLogging(false).getNodeStore(); + setClusterId(i).setLogging(false); + if (blobStore != null) { + mkBuilder.setBlobStore(blobStore); + } + stores[i] = mkBuilder.getNodeStore(); Oak oak = new Oak(stores[i]); cluster[i] = new Jcr(oak).createRepository(); } return cluster; } + @Override public void tearDownCluster() { super.tearDownCluster(); @@ -156,6 +213,13 @@ public abstract class OakRepositoryFixtu new MongoConnection(host, port, dbName); mongo.getDB().dropDatabase(); mongo.close(); + if (blobStore instanceof CloudBlobStore) { + ((CloudBlobStore) blobStore).deleteBucket(); + } else if (blobStore instanceof DataStoreBlobStore) { + ((DataStoreBlobStore) blobStore).clearInUse(); + ((DataStoreBlobStore) blobStore).deleteAllOlderThan( + System.currentTimeMillis() + 10000000); + } } catch (Exception e) { throw new RuntimeException(e); }
