Author: amitj
Date: Thu Sep 29 03:25:53 2016
New Revision: 1762733
URL: http://svn.apache.org/viewvc?rev=1762733&view=rev
Log:
OAK-4848: Improve oak-blob-cloud tests
Made tests parametrized on S3 implementation class
Use the same logic in all test to initialize S3DataStore
Rearranged packages for classes
Added:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
(contents, props changed)
- copied, changed from r1762635,
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/S3DataStoreUtils.java
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSSES3.java
(contents, props changed)
- copied, changed from r1762635,
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSWithSSES3.java
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSmallCache.java
(contents, props changed)
- copied, changed from r1762635,
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSWithSmallCache.java
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
(contents, props changed)
- copied, changed from r1762635,
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DataStore.java
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3Ds.java
(contents, props changed)
- copied, changed from r1762635,
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3Ds.java
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DsCacheOff.java
(contents, props changed)
- copied, changed from r1762635,
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DsCacheOff.java
Removed:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/S3DataStoreUtils.java
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSWithSSES3.java
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSWithSmallCache.java
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DataStore.java
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3Ds.java
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DsCacheOff.java
Modified:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSAsyncTouch.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/SharedDataStoreUtilsTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/SharedBlobStoreGCTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/MongoDataStoreBlobGCTest.java
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoS3DataStoreBlobGCTest.java
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/S3SharedBlobStoreGCTest.java
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/SharedS3DataStoreUtilsTest.java
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentS3DataStoreBlobGCIT.java
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentS3DataStoreBlobGCIT.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentDataStoreBlobGCIT.java
Modified:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSAsyncTouch.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSAsyncTouch.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSAsyncTouch.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSAsyncTouch.java
Thu Sep 29 03:25:53 2016
@@ -16,12 +16,20 @@
*/
package org.apache.jackrabbit.oak.blob.cloud.aws.s3;
+import java.util.List;
+
import javax.jcr.RepositoryException;
+import com.google.common.collect.Lists;
import org.apache.jackrabbit.core.data.CachingDataStore;
-import org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils;
+import org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils;
+import org.apache.jackrabbit.oak.blob.cloud.s3.TestS3Ds;
+import org.junit.runners.Parameterized;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
+import static
org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils.getFixtures;
+
/**
* Test {@link org.apache.jackrabbit.core.data.CachingDataStore} with
* {@link
org.apache.jackrabbit.core.data.CachingDataStore#setTouchAsync(boolean) set to
true.
@@ -34,12 +42,17 @@ public class TestS3DSAsyncTouch extends
protected static final Logger LOG =
LoggerFactory.getLogger(TestS3DSAsyncTouch.class);
+ @Parameterized.Parameters(name = "{index}: ({0})")
+ public static List<String> fixtures() {
+ return Lists.newArrayList(getFixtures().get(0));
+ }
+
@Override
protected CachingDataStore createDataStore() throws RepositoryException {
S3DataStore s3ds = new S3DataStore();
s3ds.setProperties(props);
- s3ds.setTouchAsync(true);
s3ds.setSecret("123456");
+ s3ds.setTouchAsync(true);
s3ds.setAsyncUploadLimit(0);
s3ds.init(dataStoreDir);
s3ds.updateModifiedDateOnAccess(System.currentTimeMillis() + 50 *
1000);
Copied:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
(from r1762635,
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/S3DataStoreUtils.java)
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java?p2=jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java&p1=jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/S3DataStoreUtils.java&r1=1762635&r2=1762733&rev=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/S3DataStoreUtils.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
Thu Sep 29 03:25:53 2016
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.blob.cloud;
+package org.apache.jackrabbit.oak.blob.cloud.s3;
import java.io.FileInputStream;
import java.io.InputStream;
@@ -33,6 +33,7 @@ import com.amazonaws.services.s3.model.S
import com.amazonaws.services.s3.transfer.TransferManager;
import com.google.common.base.Predicate;
import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Maps;
import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.core.data.Backend;
@@ -40,8 +41,6 @@ import org.apache.jackrabbit.core.data.D
import org.apache.jackrabbit.oak.blob.cloud.aws.s3.S3Backend;
import org.apache.jackrabbit.oak.blob.cloud.aws.s3.S3DataStore;
import org.apache.jackrabbit.oak.blob.cloud.aws.s3.SharedS3DataStore;
-import org.apache.jackrabbit.oak.blob.cloud.s3.S3Constants;
-import org.apache.jackrabbit.oak.blob.cloud.s3.Utils;
import org.apache.jackrabbit.oak.commons.PropertiesUtil;
import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreUtils;
import org.slf4j.Logger;
@@ -55,6 +54,10 @@ public class S3DataStoreUtils extends Da
private static final String DEFAULT_CONFIG_PATH =
"./src/test/resources/aws.properties";
+ public static List<String> getFixtures() {
+ return ImmutableList.of(SharedS3DataStore.class.getName());
+ }
+
public static boolean isS3DataStore() {
String dsName = System.getProperty(DS_CLASS_NAME);
boolean s3Class = (dsName != null) &&
(dsName.equals(S3DataStore.class.getName()) || dsName
@@ -113,13 +116,22 @@ public class S3DataStoreUtils extends Da
return props;
}
- public static DataStore getS3DataStore(String className, String homeDir)
throws Exception {
+ public static DataStore getS3DataStore(String className, Properties props,
String homeDir) throws Exception {
DataStore ds =
Class.forName(className).asSubclass(DataStore.class).newInstance();
- PropertiesUtil.populate(ds, Maps.fromProperties(getS3Config()), false);
+ PropertiesUtil.populate(ds, Maps.fromProperties(props), false);
+ // Set the props object
+ if (SharedS3DataStore.class.getName().equals(className)) {
+ ((SharedS3DataStore) ds).setProperties(props);
+ }
ds.init(homeDir);
+
return ds;
}
+ public static DataStore getS3DataStore(String className, String homeDir)
throws Exception {
+ return getS3DataStore(className, getS3Config(), homeDir);
+ }
+
/**
* S3 specific cleanup
*
@@ -137,7 +149,7 @@ public class S3DataStoreUtils extends Da
}
}
- private static void deleteBucket(String bucket, Date date) throws
Exception {
+ public static void deleteBucket(String bucket, Date date) throws Exception
{
log.info("cleaning bucket [" + bucket + "]");
Properties props = getS3Config();
AmazonS3Client s3service = Utils.openService(props);
Propchange:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSSES3.java
(from r1762635,
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSWithSSES3.java)
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSSES3.java?p2=jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSSES3.java&p1=jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSWithSSES3.java&r1=1762635&r2=1762733&rev=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSWithSSES3.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSSES3.java
Thu Sep 29 03:25:53 2016
@@ -15,17 +15,13 @@
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.blob.cloud.aws.s3;
+package org.apache.jackrabbit.oak.blob.cloud.s3;
import java.io.ByteArrayInputStream;
-import javax.jcr.RepositoryException;
-
-import org.apache.jackrabbit.core.data.CachingDataStore;
import org.apache.jackrabbit.core.data.DataRecord;
-import org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils;
-import org.apache.jackrabbit.oak.blob.cloud.s3.S3Constants;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,15 +41,11 @@ public class TestS3DSWithSSES3 extends T
protected static final Logger LOG =
LoggerFactory.getLogger(TestS3DSWithSSES3.class);
@Override
- protected CachingDataStore createDataStore() throws RepositoryException {
- props.setProperty(S3Constants.S3_ENCRYPTION,
- S3Constants.S3_ENCRYPTION_SSE_S3);
- S3DataStore s3ds = new S3DataStore();
- s3ds.setProperties(props);
- s3ds.setSecret("123456");
- s3ds.init(dataStoreDir);
- sleep(1000);
- return s3ds;
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ props.setProperty(S3Constants.S3_ENCRYPTION,
S3Constants.S3_ENCRYPTION_SSE_S3);
+ props.setProperty("cacheSize", "0");
}
/**
@@ -62,40 +54,33 @@ public class TestS3DSWithSSES3 extends T
@Test
public void testDataMigration() {
try {
- String bucket = props.getProperty(S3Constants.S3_BUCKET);
- S3DataStore s3ds = new S3DataStore();
- s3ds.setProperties(props);
- s3ds.setCacheSize(0);
- s3ds.init(dataStoreDir);
+ //manually close the setup ds and remove encryption
+ ds.close();
+ props.remove(S3Constants.S3_ENCRYPTION);
+ ds = createDataStore();
+
byte[] data = new byte[dataLength];
randomGen.nextBytes(data);
- DataRecord rec = s3ds.addRecord(new ByteArrayInputStream(data));
+ DataRecord rec = ds.addRecord(new ByteArrayInputStream(data));
Assert.assertEquals(data.length, rec.getLength());
assertRecord(data, rec);
- s3ds.close();
+ ds.close();
- // turn encryption now.
- props.setProperty(S3Constants.S3_BUCKET, bucket);
- props.setProperty(S3Constants.S3_ENCRYPTION,
- S3Constants.S3_ENCRYPTION_SSE_S3);
+ // turn encryption now anc recreate datastore instance
+ props.setProperty(S3Constants.S3_ENCRYPTION,
S3Constants.S3_ENCRYPTION_SSE_S3);
props.setProperty(S3Constants.S3_RENAME_KEYS, "true");
- s3ds = new S3DataStore();
- s3ds.setProperties(props);
- s3ds.setCacheSize(0);
- s3ds.init(dataStoreDir);
+ ds = createDataStore();
- rec = s3ds.getRecord(rec.getIdentifier());
+ rec = ds.getRecord(rec.getIdentifier());
Assert.assertEquals(data.length, rec.getLength());
assertRecord(data, rec);
randomGen.nextBytes(data);
- rec = s3ds.addRecord(new ByteArrayInputStream(data));
- s3ds.close();
-
+ ds.addRecord(new ByteArrayInputStream(data));
+ ds.close();
} catch (Exception e) {
LOG.error("error:", e);
fail(e.getMessage());
}
}
-
}
Propchange:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSSES3.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSmallCache.java
(from r1762635,
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSWithSmallCache.java)
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSmallCache.java?p2=jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSmallCache.java&p1=jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSWithSmallCache.java&r1=1762635&r2=1762733&rev=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DSWithSmallCache.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSmallCache.java
Thu Sep 29 03:25:53 2016
@@ -14,13 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.blob.cloud.aws.s3;
-
-import javax.jcr.RepositoryException;
+package org.apache.jackrabbit.oak.blob.cloud.s3;
import org.apache.jackrabbit.core.data.CachingDataStore;
import org.apache.jackrabbit.core.data.LocalCache;
-import org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils;
+import org.junit.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,15 +36,9 @@ public class TestS3DSWithSmallCache exte
protected static final Logger LOG =
LoggerFactory.getLogger(TestS3DSWithSmallCache.class);
@Override
- protected CachingDataStore createDataStore() throws RepositoryException {
- 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 s3ds;
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ props.setProperty("cacheSize", String.valueOf(dataLength * 10));
}
}
Propchange:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSmallCache.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
(from r1762635,
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DataStore.java)
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java?p2=jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java&p1=jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DataStore.java&r1=1762635&r2=1762733&rev=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DataStore.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
Thu Sep 29 03:25:53 2016
@@ -14,43 +14,88 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.blob.cloud.aws.s3;
+package org.apache.jackrabbit.oak.blob.cloud.s3;
import java.io.File;
-import java.io.IOException;
+import java.util.Date;
+import java.util.List;
import java.util.Properties;
import javax.jcr.RepositoryException;
-import org.apache.jackrabbit.oak.blob.cloud.s3.S3Constants;
+import com.google.common.base.Strings;
+import org.apache.jackrabbit.core.data.DataStore;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.TemporaryFolder;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static
org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils.getFixtures;
+import static
org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils.getS3DataStore;
/**
* Simple tests for S3DataStore.
*/
+@RunWith(Parameterized.class)
public class TestS3DataStore {
+ protected static final Logger LOG =
LoggerFactory.getLogger(TestS3Ds.class);
+
+ private Date startTime = null;
+
@Rule
public ExpectedException expectedEx = ExpectedException.none();
@Rule
public TemporaryFolder folder = new TemporaryFolder(new File("target"));
+ protected Properties props;
+
+ @Parameterized.Parameter
+ public String s3Class;
+
+ private File dataStoreDir;
+
+ private String bucket;
+
+ private DataStore ds;
+
+ @Parameterized.Parameters(name = "{index}: ({0})")
+ public static List<String> fixtures() {
+ return getFixtures();
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ dataStoreDir = folder.newFolder();
+ props = new Properties();
+ startTime = new Date();
+ }
+
+ @After
+ public void tearDown() {
+ try {
+ if (ds != null && !Strings.isNullOrEmpty(bucket)) {
+ S3DataStoreUtils.deleteBucket(bucket, startTime);
+ }
+ } catch (Exception ignore) {
+
+ }
+ }
+
@Test
- public void testAccessParamLeakOnError() throws RepositoryException,
IOException {
+ public void testAccessParamLeakOnError() throws Exception {
expectedEx.expect(RepositoryException.class);
expectedEx.expectMessage("Could not initialize S3 from
{s3Region=us-standard}");
- Properties props = new Properties();
props.put(S3Constants.ACCESS_KEY, "abcd");
props.put(S3Constants.SECRET_KEY, "123456");
props.put(S3Constants.S3_REGION, "us-standard");
-
- S3DataStore s3ds = new S3DataStore();
- s3ds.setProperties(props);
- s3ds.setSecret("123456");
- s3ds.init(folder.newFolder().getAbsolutePath());
+ ds = getS3DataStore(s3Class, props, dataStoreDir.getAbsolutePath());
}
}
Propchange:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3Ds.java
(from r1762635,
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3Ds.java)
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3Ds.java?p2=jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3Ds.java&p1=jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3Ds.java&r1=1762635&r2=1762733&rev=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3Ds.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3Ds.java
Thu Sep 29 03:25:53 2016
@@ -14,34 +14,41 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.blob.cloud.aws.s3;
+package org.apache.jackrabbit.oak.blob.cloud.s3;
import java.util.Date;
+import java.util.List;
import java.util.Properties;
import javax.jcr.RepositoryException;
-import org.apache.jackrabbit.core.data.CachingDataStore;
-import org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils;
-import org.apache.jackrabbit.oak.blob.cloud.s3.S3Constants;
+import org.apache.jackrabbit.core.data.DataStore;
+import org.apache.jackrabbit.oak.blob.cloud.aws.s3.S3DataStore;
import org.apache.jackrabbit.oak.plugins.blob.datastore.AbstractDataStoreTest;
-import org.junit.After;
+import org.junit.After;;
+import org.junit.Assume;
import org.junit.Before;
import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.mockito.internal.matchers.Equals;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static
org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils.getS3Config;
-import static
org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils.isS3Configured;
+import static
org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils.getFixtures;
+import static
org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils.getS3Config;
+import static
org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils.getS3DataStore;
+import static
org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils.isS3Configured;
import static org.junit.Assume.assumeTrue;
/**
- * Test {@link org.apache.jackrabbit.core.data.CachingDataStore} with
S3Backend and local cache on.
+ * Test {@link S3DataStore} with S3Backend and local cache on.
* It requires to pass aws config file via system property or system
properties by prefixing with 'ds.'.
* See details @ {@link S3DataStoreUtils}.
* For e.g. -Dconfig=/opt/cq/aws.properties. Sample aws properties located at
* src/test/resources/aws.properties
*/
+@RunWith(Parameterized.class)
public class TestS3Ds extends AbstractDataStoreTest {
protected static final Logger LOG =
LoggerFactory.getLogger(TestS3Ds.class);
@@ -50,6 +57,16 @@ public class TestS3Ds extends AbstractDa
protected Properties props;
+ protected String bucket;
+
+ @Parameterized.Parameter
+ public String s3Class;
+
+ @Parameterized.Parameters(name = "{index}: ({0})")
+ public static List<String> fixtures() {
+ return getFixtures();
+ }
+
@BeforeClass
public static void assumptions() {
assumeTrue(isS3Configured());
@@ -64,6 +81,7 @@ public class TestS3Ds extends AbstractDa
String.valueOf(randomGen.nextInt(9999)) + "-" +
String.valueOf(randomGen.nextInt(9999))
+ "-test";
props.setProperty(S3Constants.S3_BUCKET, bucket);
+ props.setProperty("secret", "123456");
super.setUp();
}
@@ -72,19 +90,33 @@ public class TestS3Ds extends AbstractDa
public void tearDown() {
try {
super.tearDown();
- S3DataStoreUtils.cleanup(ds, startTime);
+ S3DataStoreUtils.deleteBucket(bucket, startTime);
} catch (Exception ignore) {
}
}
- @Override
- protected CachingDataStore createDataStore() throws RepositoryException {
- S3DataStore s3ds = new S3DataStore();
- s3ds.setProperties(props);
- s3ds.setSecret("123456");
- s3ds.init(dataStoreDir);
+ protected DataStore createDataStore() throws RepositoryException {
+ DataStore s3ds = null;
+ try {
+ s3ds = getS3DataStore(s3Class, props, dataStoreDir);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
sleep(1000);
return s3ds;
}
+
+ /**----------Only run with
org.apache.jackrabbit.oak.blob.cloud.aws.s3.S3DataStore-----------**/
+ @Override
+ public void testUpdateLastModifiedOnAccess() {
+ Assume.assumeThat(s3Class, new Equals(fixtures().get(0)));
+ super.testUpdateLastModifiedOnAccess();
+ }
+
+ @Override
+ public void testDeleteAllOlderThan() {
+ Assume.assumeThat(s3Class, new Equals(fixtures().get(0)));
+ super.testDeleteAllOlderThan();
+ }
}
Propchange:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3Ds.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DsCacheOff.java
(from r1762635,
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DsCacheOff.java)
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DsCacheOff.java?p2=jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DsCacheOff.java&p1=jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DsCacheOff.java&r1=1762635&r2=1762733&rev=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DsCacheOff.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DsCacheOff.java
Thu Sep 29 03:25:53 2016
@@ -14,12 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.blob.cloud.aws.s3;
+package org.apache.jackrabbit.oak.blob.cloud.s3;
-import javax.jcr.RepositoryException;
-
-import org.apache.jackrabbit.core.data.CachingDataStore;
-import org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils;
+import org.junit.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,13 +34,9 @@ public class TestS3DsCacheOff extends Te
protected static final Logger LOG =
LoggerFactory.getLogger(TestS3DsCacheOff.class);
@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;
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ props.setProperty("cacheSize", "0");
}
}
Propchange:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DsCacheOff.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/SharedDataStoreUtilsTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/SharedDataStoreUtilsTest.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/SharedDataStoreUtilsTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/SharedDataStoreUtilsTest.java
Thu Sep 29 03:25:53 2016
@@ -21,8 +21,6 @@ package org.apache.jackrabbit.oak.plugin
import static com.google.common.collect.Sets.newHashSet;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
-import static
org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreUtils.getBlobStore;
-import static org.hamcrest.CoreMatchers.instanceOf;
import java.io.ByteArrayInputStream;
import java.io.File;
@@ -43,7 +41,6 @@ import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import junit.framework.Assert;
-import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.core.data.DataIdentifier;
import org.apache.jackrabbit.core.data.DataRecord;
@@ -53,9 +50,6 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.blob.datastore.SharedDataStoreUtils;
import
org.apache.jackrabbit.oak.plugins.blob.datastore.SharedDataStoreUtils.SharedStoreRecordType;
import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreUtils;
-import org.junit.After;
-import org.junit.Assume;
-import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -73,18 +67,14 @@ public class SharedDataStoreUtilsTest {
protected DataStoreBlobStore dataStore;
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- try {
- Assume.assumeThat(getBlobStore(),
instanceOf(SharedDataStore.class));
- } catch (Exception e) {
- Assume.assumeNoException(e);
- }
+ protected DataStoreBlobStore getBlobStore(File root) throws Exception {
+ return DataStoreUtils.getBlobStore(root);
}
@Test
public void test() throws Exception {
- dataStore = getBlobStore();
+ File rootFolder = folder.newFolder();
+ dataStore = getBlobStore(rootFolder);
String repoId1 = UUID.randomUUID().toString();
String repoId2 = UUID.randomUUID().toString();
@@ -163,7 +153,8 @@ public class SharedDataStoreUtilsTest {
@Test
public void testAddMetadata() throws Exception {
- dataStore = getBlobStore();
+ File rootFolder = folder.newFolder();
+ dataStore = getBlobStore(rootFolder);
String repoId = UUID.randomUUID().toString();
Set<String> refs = Sets.newHashSet("1_1", "1_2");
File f = folder.newFile();
@@ -189,8 +180,9 @@ public class SharedDataStoreUtilsTest {
@Test
public void testGetAllChunkIds() throws Exception {
- dataStore = getBlobStore();
- int number = 1010;
+ File rootFolder = folder.newFolder();
+ dataStore = getBlobStore(rootFolder);
+ int number = 10;
Set<String> added = newHashSet();
for (int i = 0; i < number; i++) {
String rec = dataStore.writeBlob(randomStream(i, 16516));
@@ -203,8 +195,9 @@ public class SharedDataStoreUtilsTest {
@Test
public void testGetAllRecords() throws Exception {
- dataStore = getBlobStore();
- int number = 1010;
+ File rootFolder = folder.newFolder();
+ dataStore = getBlobStore(rootFolder);
+ int number = 10;
Set<String> added = newHashSet();
for (int i = 0; i < number; i++) {
String rec = dataStore.addRecord(randomStream(i, 16516))
@@ -223,7 +216,8 @@ public class SharedDataStoreUtilsTest {
@Test
public void testStreamFromGetAllRecords() throws Exception {
- dataStore = getBlobStore();
+ File rootFolder = folder.newFolder();
+ dataStore = getBlobStore(rootFolder);
int number = 10;
Set<DataRecord> added = newHashSet();
for (int i = 0; i < number; i++) {
@@ -236,7 +230,8 @@ public class SharedDataStoreUtilsTest {
@Test
public void testGetRecordForId() throws Exception {
- dataStore = getBlobStore();
+ File rootFolder = folder.newFolder();
+ dataStore = getBlobStore(rootFolder);
int number = 10;
Set<DataRecord> added = newHashSet();
for (int i = 0; i < number; i++) {
@@ -276,10 +271,5 @@ public class SharedDataStoreUtilsTest {
r.nextBytes(data);
return new ByteArrayInputStream(data);
}
-
- @After
- public void close() throws IOException {
- FileUtils.cleanDirectory(new File(DataStoreUtils.getHomeDir()));
- }
}
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreTest.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreTest.java
Thu Sep 29 03:25:53 2016
@@ -171,6 +171,7 @@ public abstract class AbstractDataStoreT
+ (System.currentTimeMillis() - start) + "]ms");
} catch (Exception e) {
LOG.error("error:", e);
+ fail(e.getMessage());
}
}
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java
Thu Sep 29 03:25:53 2016
@@ -16,10 +16,6 @@
*/
package org.apache.jackrabbit.oak.plugins.document;
-import static
org.apache.jackrabbit.oak.plugins.blob.datastore.SharedDataStoreUtils.SharedStoreRecordType.REPOSITORY;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -35,6 +31,8 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
+import javax.annotation.Nullable;
+
import ch.qos.logback.classic.Level;
import com.google.common.base.Splitter;
import com.google.common.base.Stopwatch;
@@ -46,7 +44,6 @@ import com.google.common.io.Closeables;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import junit.framework.Assert;
-import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.jackrabbit.oak.api.Blob;
import org.apache.jackrabbit.oak.commons.FileIOUtils;
@@ -71,7 +68,10 @@ import org.junit.rules.TemporaryFolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.annotation.Nullable;
+import static
org.apache.jackrabbit.oak.plugins.blob.datastore.SharedDataStoreUtils
+ .SharedStoreRecordType.REPOSITORY;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
/**
* Tests for MongoMK GC
@@ -200,17 +200,17 @@ public class MongoBlobGCTest extends Abs
@Test
public void checkMark() throws Exception {
+ String rootFolder = folder.newFolder().getAbsolutePath();
LogCustomizer customLogs = LogCustomizer
.forLogger(MarkSweepGarbageCollector.class.getName())
.enable(Level.TRACE)
.filter(Level.TRACE)
.create();
- DataStoreState state = setUp(true, 1000);
+ DataStoreState state = setUp(true, 10);
log.info("{} blobs available : {}", state.blobsPresent.size(),
state.blobsPresent);
customLogs.starting();
ThreadPoolExecutor executor = (ThreadPoolExecutor)
Executors.newFixedThreadPool(10);
- String rootFolder = folder.newFolder().getAbsolutePath();
MarkSweepGarbageCollector gcObj = init(0, executor, rootFolder);
gcObj.collectGarbage(true);
customLogs.finished();
@@ -334,9 +334,10 @@ public class MongoBlobGCTest extends Abs
new ByteArrayInputStream(new byte[0]),
REPOSITORY.getNameFromId(repoId));
}
- TestGarbageCollector gc = new TestGarbageCollector(
- new DocumentBlobReferenceRetriever(store),
- (GarbageCollectableBlobStore) store.getBlobStore(), executor,
"./target", 5, 5000, repoId);
+ TestGarbageCollector gc =
+ new TestGarbageCollector(new DocumentBlobReferenceRetriever(store),
+ (GarbageCollectableBlobStore) store.getBlobStore(), executor,
+ folder.newFolder().getAbsolutePath(), 5, 5000, repoId);
gc.collectGarbage(false);
Set<String> existingAfterGC = iterate();
log.info("{} Blobs existing after gc {}", existingAfterGC.size(),
existingAfterGC);
@@ -347,6 +348,7 @@ public class MongoBlobGCTest extends Abs
@Test
public void checkGcPathLogging() throws Exception {
+ String rootFolder = folder.newFolder().getAbsolutePath();
LogCustomizer customLogs = LogCustomizer
.forLogger(MarkSweepGarbageCollector.class.getName())
.enable(Level.TRACE)
@@ -356,7 +358,6 @@ public class MongoBlobGCTest extends Abs
setUp(false);
customLogs.starting();
ThreadPoolExecutor executor = (ThreadPoolExecutor)
Executors.newFixedThreadPool(10);
- String rootFolder = folder.newFolder().getAbsolutePath();
MarkSweepGarbageCollector gcObj = init(0, executor, rootFolder);
gcObj.collectGarbage(true);
customLogs.finished();
@@ -366,6 +367,7 @@ public class MongoBlobGCTest extends Abs
@Test
public void checkConsistencyPathLogging() throws Exception {
+ String rootFolder = folder.newFolder().getAbsolutePath();
LogCustomizer customLogs = LogCustomizer
.forLogger(MarkSweepGarbageCollector.class.getName())
.enable(Level.TRACE)
@@ -375,7 +377,6 @@ public class MongoBlobGCTest extends Abs
setUp(false);
customLogs.starting();
ThreadPoolExecutor executor = (ThreadPoolExecutor)
Executors.newFixedThreadPool(10);
- String rootFolder = folder.newFolder().getAbsolutePath();
MarkSweepGarbageCollector gcObj = init(86400, executor, rootFolder);
gcObj.checkConsistency();
customLogs.finished();
@@ -443,7 +444,7 @@ public class MongoBlobGCTest extends Abs
REPOSITORY.getNameFromId(repoId));
}
if (Strings.isNullOrEmpty(root)) {
- root = "./target";
+ root = folder.newFolder().getAbsolutePath();
}
MarkSweepGarbageCollector gc = new MarkSweepGarbageCollector(
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/SharedBlobStoreGCTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/SharedBlobStoreGCTest.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/SharedBlobStoreGCTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/SharedBlobStoreGCTest.java
Thu Sep 29 03:25:53 2016
@@ -58,7 +58,9 @@ import org.apache.jackrabbit.oak.spi.sta
import org.apache.jackrabbit.oak.stats.Clock;
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -68,6 +70,9 @@ import org.slf4j.LoggerFactory;
public class SharedBlobStoreGCTest {
private static final Logger log =
LoggerFactory.getLogger(SharedBlobStoreGCTest.class);
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder(new File("target"));
+
protected Cluster cluster1;
protected Cluster cluster2;
private Clock clock;
@@ -80,7 +85,8 @@ public class SharedBlobStoreGCTest {
clock.waitUntil(Revision.getCurrentTimestamp());
DataStoreUtils.time = clock.getTime();
- BlobStore blobeStore1 = DataStoreUtils.getBlobStore();
+ File rootFolder = folder.newFolder();
+ BlobStore blobeStore1 = getBlobStore(rootFolder);
DocumentNodeStore ds1 = new DocumentMK.Builder()
.setAsyncDelay(0)
.setDocumentStore(new MemoryDocumentStore())
@@ -92,7 +98,7 @@ public class SharedBlobStoreGCTest {
((SharedDataStore) blobeStore1).addMetadataRecord(new
ByteArrayInputStream(new byte[0]),
SharedStoreRecordType.REPOSITORY.getNameFromId(repoId1));
- BlobStore blobeStore2 = DataStoreUtils.getBlobStore();
+ BlobStore blobeStore2 = getBlobStore(rootFolder);
DocumentNodeStore ds2 = new DocumentMK.Builder()
.setAsyncDelay(0)
.setDocumentStore(new MemoryDocumentStore())
@@ -218,12 +224,15 @@ public class SharedBlobStoreGCTest {
@After
public void tearDown() throws Exception {
- FileUtils.cleanDirectory((new
File(DataStoreUtils.getHomeDir())).getParentFile());
DataStoreUtils.time = -1;
cluster1.getDocumentNodeStore().dispose();
cluster2.getDocumentNodeStore().dispose();
}
+ protected DataStoreBlobStore getBlobStore(File root) throws Exception {
+ return DataStoreUtils.getBlobStore(root);
+ }
+
public class Cluster {
private DocumentNodeStore ds;
private int seed;
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/MongoDataStoreBlobGCTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/MongoDataStoreBlobGCTest.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/MongoDataStoreBlobGCTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/blob/ds/MongoDataStoreBlobGCTest.java
Thu Sep 29 03:25:53 2016
@@ -16,10 +16,8 @@
*/
package org.apache.jackrabbit.oak.plugins.document.blob.ds;
-import java.io.File;
import java.util.Date;
-import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreUtils;
import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
@@ -53,7 +51,7 @@ public class MongoDataStoreBlobGCTest ex
startDate = new Date();
mongoConnection = connectionFactory.getConnection();
MongoUtils.dropCollections(mongoConnection.getDB());
- blobStore = DataStoreUtils.getBlobStore();
+ blobStore = DataStoreUtils.getBlobStore(folder.newFolder());
mk = new
DocumentMK.Builder().clock(getTestClock()).setMongoDB(mongoConnection.getDB())
.setBlobStore(blobStore).open();
}
@@ -61,7 +59,6 @@ public class MongoDataStoreBlobGCTest ex
@After
@Override
public void tearDownConnection() throws Exception {
- FileUtils.deleteDirectory(new File(DataStoreUtils.getHomeDir()));
mk.dispose();
MongoUtils.dropCollections(connectionFactory.getConnection().getDB());
}
Modified:
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoS3DataStoreBlobGCTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoS3DataStoreBlobGCTest.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoS3DataStoreBlobGCTest.java
(original)
+++
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoS3DataStoreBlobGCTest.java
Thu Sep 29 03:25:53 2016
@@ -18,26 +18,64 @@
*/
package org.apache.jackrabbit.oak.plugins.document;
-import org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils;
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.jackrabbit.oak.blob.cloud.s3.S3Constants;
+import org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils;
+import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
import
org.apache.jackrabbit.oak.plugins.document.blob.ds.MongoDataStoreBlobGCTest;
import org.junit.After;
+import org.junit.Before;
import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
import static org.junit.Assume.assumeTrue;
/**
* Tests DataStoreGC with Mongo and S3
*/
+@RunWith(Parameterized.class)
public class MongoS3DataStoreBlobGCTest extends MongoDataStoreBlobGCTest {
+
@BeforeClass
public static void assumptions() {
- assumeTrue(S3DataStoreUtils.isS3DataStore());
+ assumeTrue(S3DataStoreUtils.isS3Configured());
+ }
+
+ @Parameterized.Parameter
+ public String s3Class;
+
+ @Parameterized.Parameters(name = "{index}: ({0})")
+ public static List<String> fixtures() {
+ return S3DataStoreUtils.getFixtures();
+ }
+
+ protected String bucket;
+
+ @Before
+ @Override
+ public void setUpConnection() throws Exception {
+ Properties props = S3DataStoreUtils.getS3Config();
+ startDate = new Date();
+ mongoConnection = connectionFactory.getConnection();
+ MongoUtils.dropCollections(mongoConnection.getDB());
+ File root = folder.newFolder();
+ bucket = root.getName();
+ props.setProperty(S3Constants.S3_BUCKET, bucket);
+ blobStore = new DataStoreBlobStore(
+ S3DataStoreUtils.getS3DataStore(s3Class, props,
root.getAbsolutePath()));
+ mk = new
DocumentMK.Builder().clock(getTestClock()).setMongoDB(mongoConnection.getDB())
+ .setBlobStore(blobStore).open();
}
@After
@Override
public void tearDownConnection() throws Exception {
- S3DataStoreUtils.cleanup(blobStore.getDataStore(), startDate);
+ S3DataStoreUtils.deleteBucket(bucket, startDate);
super.tearDownConnection();
}
}
Modified:
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/S3SharedBlobStoreGCTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/S3SharedBlobStoreGCTest.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/S3SharedBlobStoreGCTest.java
(original)
+++
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/S3SharedBlobStoreGCTest.java
Thu Sep 29 03:25:53 2016
@@ -18,28 +18,57 @@
*/
package org.apache.jackrabbit.oak.plugins.document;
-import org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils;
+import java.io.File;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.jackrabbit.oak.blob.cloud.s3.S3Constants;
+import org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils;
+import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
import org.junit.After;
import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
import static org.junit.Assume.assumeTrue;
/**
* Shared BlobStoreGCTest for S3.
*/
+@RunWith(Parameterized.class)
public class S3SharedBlobStoreGCTest extends SharedBlobStoreGCTest {
+
+ @Parameterized.Parameter
+ public String s3Class;
+
+ protected String bucket;
+
+ @Parameterized.Parameters(name = "{index}: ({0})")
+ public static List<String> fixtures() {
+ return S3DataStoreUtils.getFixtures();
+ }
+
@BeforeClass
public static void assumptions() {
- assumeTrue(S3DataStoreUtils.isS3DataStore());
+ assumeTrue(S3DataStoreUtils.isS3Configured());
}
@After
public void tearDown() throws Exception {
- S3DataStoreUtils.cleanup(cluster1.getDataStore(), cluster1.getDate());
+ S3DataStoreUtils.deleteBucket(bucket, cluster1.getDate());
super.tearDown();
}
@Override
+ protected DataStoreBlobStore getBlobStore(File rootFolder) throws
Exception {
+ Properties props = S3DataStoreUtils.getS3Config();
+ bucket = rootFolder.getName();
+ props.setProperty(S3Constants.S3_BUCKET, bucket);
+ return new DataStoreBlobStore(
+ S3DataStoreUtils.getS3DataStore(s3Class, props,
rootFolder.getAbsolutePath()));
+ }
+
+ @Override
protected void sleep() throws InterruptedException {
if (S3DataStoreUtils.isS3DataStore()) {
Thread.sleep(1000);
Modified:
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/SharedS3DataStoreUtilsTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/SharedS3DataStoreUtilsTest.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/SharedS3DataStoreUtilsTest.java
(original)
+++
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/document/SharedS3DataStoreUtilsTest.java
Thu Sep 29 03:25:53 2016
@@ -18,35 +18,61 @@
*/
package org.apache.jackrabbit.oak.plugins.document;
+import java.io.File;
import java.io.IOException;
import java.util.Date;
+import java.util.List;
+import java.util.Properties;
-import org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils;
+import org.apache.jackrabbit.oak.blob.cloud.s3.S3Constants;
+import org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils;
import org.apache.jackrabbit.oak.plugins.blob.SharedDataStoreUtilsTest;
+import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
import org.junit.After;
import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils.cleanup;
+import static
org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils.deleteBucket;
import static org.junit.Assume.assumeTrue;
/**
* SharedDataStoreUtilsTest for S3.
*/
+@RunWith(Parameterized.class)
public class SharedS3DataStoreUtilsTest extends SharedDataStoreUtilsTest {
private static final Logger log =
LoggerFactory.getLogger(SharedS3DataStoreUtilsTest.class);
+ @Parameterized.Parameter
+ public String s3Class;
+
+ protected String bucket;
+
+ @Parameterized.Parameters(name = "{index}: ({0})")
+ public static List<String> fixtures() {
+ return S3DataStoreUtils.getFixtures();
+ }
+
@BeforeClass
public static void assumptions() {
- assumeTrue(S3DataStoreUtils.isS3DataStore());
+ assumeTrue(S3DataStoreUtils.isS3Configured());
+ }
+
+ @Override
+ protected DataStoreBlobStore getBlobStore(File rootFolder) throws
Exception {
+ Properties props = S3DataStoreUtils.getS3Config();
+ bucket = rootFolder.getName();
+ props.setProperty(S3Constants.S3_BUCKET, bucket);
+ return new DataStoreBlobStore(
+ S3DataStoreUtils.getS3DataStore(s3Class, props,
rootFolder.getAbsolutePath()));
}
@After
public void close() throws IOException {
- super.close();
try {
- cleanup(dataStore.getDataStore(), new Date());
+ deleteBucket(bucket, new Date());
} catch (Exception e) {
log.error("Error closing data store", e);
}
Modified:
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentS3DataStoreBlobGCIT.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentS3DataStoreBlobGCIT.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentS3DataStoreBlobGCIT.java
(original)
+++
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentS3DataStoreBlobGCIT.java
Thu Sep 29 03:25:53 2016
@@ -19,9 +19,17 @@
package org.apache.jackrabbit.oak.plugins.segment;
-import org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils;
+import java.io.File;
+import java.util.List;
+import java.util.Properties;
+
+import com.google.common.collect.Lists;
+import org.apache.jackrabbit.oak.blob.cloud.s3.S3Constants;
+import org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils;
+import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
import org.junit.After;
import org.junit.BeforeClass;
+import org.junit.runners.Parameterized;
import static
org.apache.jackrabbit.oak.commons.FixturesHelper.Fixture.SEGMENT_MK;
import static org.apache.jackrabbit.oak.commons.FixturesHelper.getFixtures;
@@ -31,17 +39,38 @@ import static org.junit.Assume.assumeTru
* Tests for SegmentNodeStore on S3DataStore GC
*/
public class SegmentS3DataStoreBlobGCIT extends SegmentDataStoreBlobGCIT {
+ @Parameterized.Parameter(0)
+ public boolean usePersistedMap;
- public SegmentS3DataStoreBlobGCIT(boolean usePersistedMap) {
- super(usePersistedMap);
+ @Parameterized.Parameter(1)
+ public String s3Class;
+
+ protected String bucket;
+
+ @Parameterized.Parameters(name = "{index}: ({0}, {1})")
+ public static List<Object[]> fixtures1() {
+ List<String> classes = S3DataStoreUtils.getFixtures();
+ List<Object[]> params = Lists.newArrayList();
+ for (String cl : classes) {
+ params.add(new Object[] {true, cl});
+ params.add(new Object[] {false, cl});
+ }
+ return params;
}
@BeforeClass
public static void assumptions() {
assumeTrue(getFixtures().contains(SEGMENT_MK));
- assumeTrue(S3DataStoreUtils.isS3DataStore());
+ assumeTrue(S3DataStoreUtils.isS3Configured());
}
+ protected DataStoreBlobStore getBlobStore(File rootFolder) throws
Exception {
+ Properties props = S3DataStoreUtils.getS3Config();
+ bucket = rootFolder.getName();
+ props.setProperty(S3Constants.S3_BUCKET, bucket);
+ return new DataStoreBlobStore(
+ S3DataStoreUtils.getS3DataStore(s3Class, props,
rootFolder.getAbsolutePath()));
+ }
@After
public void close() throws Exception {
Modified:
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentS3DataStoreBlobGCIT.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentS3DataStoreBlobGCIT.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentS3DataStoreBlobGCIT.java
(original)
+++
jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentS3DataStoreBlobGCIT.java
Thu Sep 29 03:25:53 2016
@@ -19,9 +19,17 @@
package org.apache.jackrabbit.oak.segment;
-import org.apache.jackrabbit.oak.blob.cloud.S3DataStoreUtils;
+import java.io.File;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.jackrabbit.oak.blob.cloud.s3.S3Constants;
+import org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils;
+import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
import org.junit.After;
import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
import static
org.apache.jackrabbit.oak.commons.FixturesHelper.Fixture.SEGMENT_TAR;
import static org.apache.jackrabbit.oak.commons.FixturesHelper.getFixtures;
@@ -30,19 +38,36 @@ import static org.junit.Assume.assumeTru
/**
* Tests for SegmentNodeStore on S3DataStore GC
*/
+@RunWith(Parameterized.class)
public class SegmentS3DataStoreBlobGCIT extends SegmentDataStoreBlobGCIT {
+ @Parameterized.Parameter
+ public String s3Class;
+
+ protected String bucket;
+
+ @Parameterized.Parameters(name = "{index}: ({0})")
+ public static List<String> fixtures() {
+ return S3DataStoreUtils.getFixtures();
+ }
@BeforeClass
public static void assumptions() {
assumeTrue(getFixtures().contains(SEGMENT_TAR));
- assumeTrue(S3DataStoreUtils.isS3DataStore());
+ assumeTrue(S3DataStoreUtils.isS3Configured());
}
+ protected DataStoreBlobStore getBlobStore(File rootFolder) throws
Exception {
+ Properties props = S3DataStoreUtils.getS3Config();
+ bucket = rootFolder.getName();
+ props.setProperty(S3Constants.S3_BUCKET, bucket);
+ return new DataStoreBlobStore(
+ S3DataStoreUtils.getS3DataStore(s3Class, props,
rootFolder.getAbsolutePath()));
+ }
@After
public void close() throws Exception {
super.close();
- S3DataStoreUtils.cleanup(blobStore.getDataStore(), startDate);
+ S3DataStoreUtils.deleteBucket(bucket, startDate);
}
}
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java
(original)
+++
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentDataStoreBlobGCIT.java
Thu Sep 29 03:25:53 2016
@@ -119,9 +119,13 @@ public class SegmentDataStoreBlobGCIT {
return setUp(10);
}
+ protected DataStoreBlobStore getBlobStore(File folder) throws Exception {
+ return DataStoreUtils.getBlobStore(folder);
+ }
+
public DataStoreState setUp(int count) throws Exception {
if (blobStore == null) {
- blobStore = DataStoreUtils.getBlobStore(folder.newFolder());
+ blobStore = getBlobStore(folder.newFolder());
}
nodeStore = getNodeStore(blobStore);
startDate = new Date();
Modified:
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentDataStoreBlobGCIT.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentDataStoreBlobGCIT.java?rev=1762733&r1=1762732&r2=1762733&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentDataStoreBlobGCIT.java
(original)
+++
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentDataStoreBlobGCIT.java
Thu Sep 29 03:25:53 2016
@@ -90,7 +90,8 @@ import org.slf4j.LoggerFactory;
public class SegmentDataStoreBlobGCIT {
private static final Logger log =
LoggerFactory.getLogger(SegmentDataStoreBlobGCIT.class);
- private final boolean usePersistedMap;
+ @Parameterized.Parameter
+ public boolean usePersistedMap;
SegmentNodeStore nodeStore;
FileStore store;
@@ -110,8 +111,8 @@ public class SegmentDataStoreBlobGCIT {
return ImmutableList.of(new Boolean[] {true}, new Boolean[] {false});
}
- public SegmentDataStoreBlobGCIT(boolean usePersistedMap) {
- this.usePersistedMap = usePersistedMap;
+ protected DataStoreBlobStore getBlobStore(File rootFolder) throws
Exception {
+ return DataStoreUtils.getBlobStore(rootFolder);
}
protected SegmentNodeStore getNodeStore(BlobStore blobStore) throws
Exception {
@@ -145,7 +146,7 @@ public class SegmentDataStoreBlobGCIT {
public DataStoreState setUp(int count) throws Exception {
if (blobStore == null) {
- blobStore = DataStoreUtils.getBlobStore(folder.newFolder());
+ blobStore = getBlobStore(folder.newFolder());
}
nodeStore = getNodeStore(blobStore);
startDate = new Date();
@@ -275,7 +276,7 @@ public class SegmentDataStoreBlobGCIT {
.filter(Level.TRACE)
.create();
- DataStoreState state = setUp(2000);
+ DataStoreState state = setUp(5);
log.info("{} blobs available : {}", state.blobsPresent.size(),
state.blobsPresent);
customLogs.starting();
ThreadPoolExecutor executor = (ThreadPoolExecutor)
Executors.newFixedThreadPool(10);