Index: jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3Ds.java =================================================================== --- jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3Ds.java (revision 1671014) +++ jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3Ds.java (working copy) @@ -52,40 +52,45 @@ protected Properties props; + protected String config; + public TestS3Ds() throws IOException { - config = System.getProperty(CONFIG); - memoryBackend = false; - noCache = false; - props = Utils.readConfig(config); - } + System.setProperty( + TestCaseBase.CONFIG, + "C:/src/apache/jackrabbit-encryp-changes/jackrabbit/jackrabbit-aws-ext/src/test/resources/aws.properties"); + config = System.getProperty(CONFIG); + props = Utils.readConfig(System.getProperty(CONFIG)); + } + @Override protected void setUp() throws Exception { startTime = new Date(); super.setUp(); String bucket = String.valueOf(randomGen.nextInt(9999)) + "-" - + String.valueOf(randomGen.nextInt(9999)) + "-test"; - props.setProperty(S3Constants.S3_BUCKET, bucket ); + + String.valueOf(randomGen.nextInt(9999)) + "-test"; + props.setProperty(S3Constants.S3_BUCKET, bucket); // delete bucket if exists deleteBucket(bucket); } - protected void tearDown() { + + @Override + protected void tearDown() { try { deleteBucket(); super.tearDown(); - } catch ( Exception ignore ) { - + } catch (Exception ignore) { + } } - + + @Override protected CachingDataStore createDataStore() throws RepositoryException { - ds = new S3TestDataStore(props); - ds.setConfig(config); - if (noCache) { - ds.setCacheSize(0); - } - ds.init(dataStoreDir); + S3DataStore s3ds = new S3DataStore(); + s3ds.setProperties(props); + s3ds.setSecret("123456"); + s3ds.init(dataStoreDir); sleep(1000); - return ds; + return s3ds; } /** @@ -95,11 +100,11 @@ * Cleaning of bucket after test run. */ public void deleteBucket() throws Exception { - Backend backend = ds.getBackend(); - String bucket = ((S3Backend)backend).getBucket(); + Backend backend = ((S3DataStore) ds).getBackend(); + String bucket = ((S3Backend) backend).getBucket(); deleteBucket(bucket); } - + public void deleteBucket(String bucket) throws Exception { LOG.info("deleting bucket [" + bucket + "]"); Properties props = Utils.readConfig(config); Index: jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3DSAsyncTouch.java =================================================================== --- jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3DSAsyncTouch.java (revision 1671014) +++ jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3DSAsyncTouch.java (working copy) @@ -26,27 +26,28 @@ /** * Test {@link CachingDataStore} with - * {@link CachingDataStore#setTouchAsync(boolean) set to true. It requires - * to pass aws config file via system property. For e.g. + * {@link CachingDataStore#setTouchAsync(boolean) set to true. It requires to + * pass aws config file via system property. For e.g. * -Dconfig=/opt/cq/aws.properties. Sample aws properties located at * src/test/resources/aws.properties */ public class TestS3DSAsyncTouch extends TestS3Ds { - protected static final Logger LOG = LoggerFactory.getLogger(TestS3DSAsyncTouch.class); + protected static final Logger LOG = LoggerFactory.getLogger(TestS3DSAsyncTouch.class); + public TestS3DSAsyncTouch() throws IOException { - config = System.getProperty(CONFIG); - memoryBackend = false; - noCache = false; + } - + + @Override protected CachingDataStore createDataStore() throws RepositoryException { - ds = new S3TestDataStore(props); - ds.setConfig(config); - ds.init(dataStoreDir); - ds.setTouchAsync(true); - ds.updateModifiedDateOnAccess(System.currentTimeMillis()+ 50* 1000); + S3DataStore s3ds = new S3DataStore(); + s3ds.setProperties(props); + s3ds.setTouchAsync(true); + s3ds.setSecret("123456"); + s3ds.init(dataStoreDir); + s3ds.updateModifiedDateOnAccess(System.currentTimeMillis() + 50 * 1000); sleep(1000); - return ds; + return s3ds; } } Index: jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3DsCacheOff.java =================================================================== --- jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3DsCacheOff.java (revision 1671014) +++ jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3DsCacheOff.java (working copy) @@ -18,6 +18,8 @@ import java.io.IOException; +import javax.jcr.RepositoryException; + import org.apache.jackrabbit.core.data.CachingDataStore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,8 +35,16 @@ protected static final Logger LOG = LoggerFactory.getLogger(TestS3DsCacheOff.class); public TestS3DsCacheOff() throws IOException { - config = System.getProperty(CONFIG); - memoryBackend = false; - noCache = true; } + + @Override + protected CachingDataStore createDataStore() throws RepositoryException { + S3DataStore s3ds = new S3DataStore(); + s3ds.setProperties(props); + s3ds.setCacheSize(0); + s3ds.setSecret("123456"); + s3ds.init(dataStoreDir); + sleep(1000); + return s3ds; + } } Index: jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3DSWithSmallCache.java =================================================================== --- jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3DSWithSmallCache.java (revision 1671014) +++ jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3DSWithSmallCache.java (working copy) @@ -34,21 +34,20 @@ public class TestS3DSWithSmallCache extends TestS3Ds { protected static final Logger LOG = LoggerFactory.getLogger(TestS3DSWithSmallCache.class); - + public TestS3DSWithSmallCache() throws IOException { - config = System.getProperty(CONFIG); - memoryBackend = false; - noCache = false; } - + + @Override protected CachingDataStore createDataStore() throws RepositoryException { - ds = new S3TestDataStore(props); - ds.setConfig(config); - ds.setCacheSize(dataLength * 10); - ds.setCachePurgeTrigFactor(0.5d); - ds.setCachePurgeResizeFactor(0.4d); - ds.init(dataStoreDir); + S3DataStore s3ds = new S3DataStore(); + s3ds.setProperties(props); + s3ds.setCacheSize(dataLength * 10); + s3ds.setCachePurgeTrigFactor(0.5d); + s3ds.setCachePurgeResizeFactor(0.4d); + s3ds.setSecret("123456"); + s3ds.init(dataStoreDir); sleep(1000); - return ds; + return s3ds; } } Index: jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3DSWithSSES3.java =================================================================== --- jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3DSWithSSES3.java (revision 1671014) +++ jackrabbit-aws-ext/src/test/java/org/apache/jackrabbit/aws/ext/ds/TestS3DSWithSSES3.java (working copy) @@ -36,19 +36,18 @@ protected static final Logger LOG = LoggerFactory.getLogger(TestS3DSWithSSES3.class); public TestS3DSWithSSES3() throws IOException { - config = System.getProperty(CONFIG); - memoryBackend = false; - noCache = true; } + @Override protected CachingDataStore createDataStore() throws RepositoryException { props.setProperty(S3Constants.S3_ENCRYPTION, S3Constants.S3_ENCRYPTION_SSE_S3); - ds = new S3TestDataStore(props); - ds.setConfig(config); - ds.init(dataStoreDir); + S3DataStore s3ds = new S3DataStore(); + s3ds.setProperties(props); + s3ds.setSecret("123456"); + s3ds.init(dataStoreDir); sleep(1000); - return ds; + return s3ds; } /** @@ -57,16 +56,16 @@ public void testDataMigration() { try { String bucket = props.getProperty(S3Constants.S3_BUCKET); - ds = new S3TestDataStore(props); - ds.setConfig(config); - ds.setCacheSize(0); - ds.init(dataStoreDir); + S3DataStore s3ds = new S3DataStore(); + s3ds.setProperties(props); + s3ds.setCacheSize(0); + s3ds.init(dataStoreDir); byte[] data = new byte[dataLength]; randomGen.nextBytes(data); - DataRecord rec = ds.addRecord(new ByteArrayInputStream(data)); + DataRecord rec = s3ds.addRecord(new ByteArrayInputStream(data)); assertEquals(data.length, rec.getLength()); assertRecord(data, rec); - ds.close(); + s3ds.close(); // turn encryption now. props.setProperty(S3Constants.S3_BUCKET, bucket); @@ -73,18 +72,18 @@ props.setProperty(S3Constants.S3_ENCRYPTION, S3Constants.S3_ENCRYPTION_SSE_S3); props.setProperty(S3Constants.S3_RENAME_KEYS, "true"); - ds = new S3TestDataStore(props); - ds.setConfig(config); - ds.setCacheSize(0); - ds.init(dataStoreDir); + s3ds = new S3DataStore(); + s3ds.setProperties(props); + s3ds.setCacheSize(0); + s3ds.init(dataStoreDir); - rec = ds.getRecord(rec.getIdentifier()); + rec = s3ds.getRecord(rec.getIdentifier()); assertEquals(data.length, rec.getLength()); assertRecord(data, rec); randomGen.nextBytes(data); - rec = ds.addRecord(new ByteArrayInputStream(data)); - ds.close(); + rec = s3ds.addRecord(new ByteArrayInputStream(data)); + s3ds.close(); } catch (Exception e) { LOG.error("error:", e); Index: jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/InMemoryBackend.java =================================================================== --- jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/InMemoryBackend.java (revision 1671041) +++ jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/InMemoryBackend.java (working copy) @@ -27,6 +27,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Map; +import java.util.Properties; import java.util.Set; /** @@ -39,6 +40,8 @@ private HashMap timeMap = new HashMap(); private CachingDataStore store; + + private Properties properties; @Override public void init(CachingDataStore store, String homeDir, String config) @@ -177,6 +180,16 @@ callback.onSuccess(new AsyncUploadResult(identifier, file)); } } + + /** + * Properties used to configure the backend. If provided explicitly before + * init is invoked then these take precedence + * + * @param properties to configure S3Backend + */ + public void setProperties(Properties properties) { + this.properties = properties; + } /** * Log a message if logging is enabled. Index: jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/InMemoryDataStore.java =================================================================== --- jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/InMemoryDataStore.java (revision 1671014) +++ jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/InMemoryDataStore.java (working copy) @@ -16,6 +16,8 @@ */ package org.apache.jackrabbit.core.data; +import java.util.Properties; + import org.apache.jackrabbit.core.data.Backend; import org.apache.jackrabbit.core.data.CachingDataStore; @@ -23,10 +25,16 @@ * A caching data store that uses the in-memory backend. */ public class InMemoryDataStore extends CachingDataStore { + + private Properties properties; @Override protected Backend createBackend() { - return new InMemoryBackend(); + InMemoryBackend backend = new InMemoryBackend(); + if (properties != null) { + backend.setProperties(properties); + } + return backend; } @Override @@ -33,4 +41,11 @@ protected String getMarkerFile() { return "mem.init.done"; } + + /** + * Properties required to configure the S3Backend + */ + public void setProperties(Properties properties) { + this.properties = properties; + } } Index: jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCaseBase.java =================================================================== --- jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCaseBase.java (revision 1671014) +++ jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestCaseBase.java (working copy) @@ -57,22 +57,6 @@ public static final String CONFIG = "config"; /** - * File path of aws properties. - */ - protected String config; - - /** - * Parameter to use in-memory backend. - */ - protected boolean memoryBackend = true; - - /** - * Parameter to use local cache. If true local cache {@link LocalCache} is - * not used. - */ - protected boolean noCache; - - /** * length of record to be added */ protected int dataLength = 123456; @@ -82,7 +66,7 @@ */ protected String dataStoreDir; - protected CachingDataStore ds; + protected DataStore ds; /** * Random number generator to populate data @@ -287,15 +271,7 @@ } - protected CachingDataStore createDataStore() throws RepositoryException { - ds = new InMemoryDataStore(); - ds.setConfig(config); - if (noCache) { - ds.setCacheSize(0); - } - ds.init(dataStoreDir); - return ds; - } + protected abstract DataStore createDataStore() throws RepositoryException ; /** * Test {@link DataStore#addRecord(InputStream)} and assert length of added @@ -344,7 +320,7 @@ random.nextBytes(data3); DataRecord rec3 = ds.addRecord(new ByteArrayInputStream(data3)); - ds.deleteRecord(rec2.getIdentifier()); + ((MultiDataStoreAware)ds).deleteRecord(rec2.getIdentifier()); assertNull("rec2 should be null", ds.getRecordIfStored(rec2.getIdentifier())); @@ -409,7 +385,7 @@ ds.updateModifiedDateOnAccess(updateTime); // sleep to workaround System.currentTimeMillis granularity. - sleep(100); + sleep(3000); data = new byte[dataLength]; random.nextBytes(data); DataRecord rec3 = ds.addRecord(new ByteArrayInputStream(data)); @@ -420,15 +396,12 @@ rec1 = ds.getRecord(rec1.getIdentifier()); - assertEquals("rec1 touched", true, - ds.getLastModified(rec1.getIdentifier()) > updateTime); + assertEquals("rec1 touched", true, rec1.getLastModified() > updateTime); LOG.debug("rec2 timestamp=" + rec2.getLastModified()); assertEquals("rec2 not touched", true, - ds.getLastModified(rec2.getIdentifier()) < updateTime); - assertEquals("rec3 touched", true, - ds.getLastModified(rec3.getIdentifier()) > updateTime); - assertEquals("rec4 touched", true, - ds.getLastModified(rec4.getIdentifier()) > updateTime); + rec2.getLastModified() < updateTime); + assertEquals("rec3 touched", true, rec3.getLastModified() > updateTime); + assertEquals("rec4 touched", true, rec4.getLastModified() > updateTime); ds.close(); } @@ -454,7 +427,7 @@ ds.updateModifiedDateOnAccess(updateTime); // sleep to workaround System.currentTimeMillis granularity. - sleep(100); + sleep(3000); data = new byte[dataLength]; random.nextBytes(data); DataRecord rec3 = ds.addRecord(new ByteArrayInputStream(data)); @@ -480,12 +453,9 @@ } assertEquals("touched records found", 0, list.size()); - assertEquals("rec1 touched", true, - ds.getLastModified(rec1.getIdentifier()) > updateTime); - assertEquals("rec3 touched", true, - ds.getLastModified(rec3.getIdentifier()) > updateTime); - assertEquals("rec4 touched", true, - ds.getLastModified(rec4.getIdentifier()) > updateTime); + assertEquals("rec1 touched", true, rec1.getLastModified() > updateTime); + assertEquals("rec3 touched", true, rec3.getLastModified() > updateTime); + assertEquals("rec4 touched", true, rec4.getLastModified() > updateTime); ds.close(); } @@ -493,9 +463,8 @@ * Test if record can be accessed via * {@link DataStore#getRecordFromReference(String)} */ - public void doReferenceTest() throws Exception { + protected void doReferenceTest() throws Exception { ds = createDataStore(); - ds.setSecret("12345"); byte[] data = new byte[dataLength]; randomGen.nextBytes(data); String reference; Index: jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestFileDataStore.java =================================================================== --- jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestFileDataStore.java (revision 0) +++ jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestFileDataStore.java (working copy) @@ -0,0 +1,59 @@ +/* + * 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.core.data; + +import java.io.File; + +import javax.jcr.RepositoryException; + +import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Test cases to test {@link FileDataStore} + */ +public class TestFileDataStore extends TestCaseBase { + + protected static final Logger LOG = LoggerFactory.getLogger(TestFileDataStore.class); + + String path; + + @Override + protected DataStore createDataStore() throws RepositoryException { + FileDataStore fds = new FileDataStore(); + path = dataStoreDir + "/repository/datastore"; + fds.setPath(path); + fds.init(dataStoreDir); + return fds; + } + + @Override + protected void tearDown() { + File f = new File(path); + try { + for (int i = 0; i < 4 && f.exists(); i++) { + FileUtils.deleteQuietly(f); + Thread.sleep(2000); + } + } catch (Exception ignore) { + + } + } + +} Property changes on: jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestFileDataStore.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestInMemDs.java =================================================================== --- jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestInMemDs.java (revision 1671014) +++ jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestInMemDs.java (working copy) @@ -16,6 +16,8 @@ */ package org.apache.jackrabbit.core.data; +import javax.jcr.RepositoryException; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,10 +28,14 @@ protected static final Logger LOG = LoggerFactory.getLogger(TestInMemDs.class); - public TestInMemDs() { - config = null; - memoryBackend = true; - noCache = false; + + protected DataStore createDataStore() throws RepositoryException { + InMemoryDataStore inMemDS = new InMemoryDataStore(); + inMemDS.setProperties(null); + inMemDS.init(dataStoreDir); + inMemDS.setSecret("12345"); + return inMemDS; } + } Index: jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestInMemDsCacheOff.java =================================================================== --- jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestInMemDsCacheOff.java (revision 1671014) +++ jackrabbit-data/src/test/java/org/apache/jackrabbit/core/data/TestInMemDsCacheOff.java (working copy) @@ -16,6 +16,8 @@ */ package org.apache.jackrabbit.core.data; +import javax.jcr.RepositoryException; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,13 +24,17 @@ /** * Test {@link CachingDataStore} with InMemoryBackend and local cache off. */ + public class TestInMemDsCacheOff extends TestCaseBase { protected static final Logger LOG = LoggerFactory.getLogger(TestInMemDsCacheOff.class); - - public TestInMemDsCacheOff() { - config = null; - memoryBackend = true; - noCache = true; + @Override + protected DataStore createDataStore() throws RepositoryException { + InMemoryDataStore inMemDS = new InMemoryDataStore(); + inMemDS.setProperties(null); + inMemDS.init(dataStoreDir); + inMemDS.setSecret("12345"); + inMemDS.setCacheSize(0); + return inMemDS; } }