You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ma...@apache.org on 2018/10/15 17:59:07 UTC
svn commit: r1843932 - in
/jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3:
TestS3DataStore.java TestS3Ds.java
Author: mattryan
Date: Mon Oct 15 17:59:07 2018
New Revision: 1843932
URL: http://svn.apache.org/viewvc?rev=1843932&view=rev
Log:
OAK-7807: Fix S3 bucket cleanup in tests.
Two approaches used to accomplish this:
- Backdate the test start date by one minute to account for drift between test system and S3
- Remember all created buckets and verify deletion at the end of the test suite
Modified:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3Ds.java
Modified: jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/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?rev=1843932&r1=1843931&r2=1843932&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java (original)
+++ jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java Mon Oct 15 17:59:07 2018
@@ -16,6 +16,19 @@
*/
package org.apache.jackrabbit.oak.blob.cloud.s3;
+import static org.apache.commons.codec.binary.Hex.encodeHexString;
+import static org.apache.commons.io.FileUtils.copyInputStreamToFile;
+import static org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils.getFixtures;
+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.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreUtils.randomStream;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.junit.Assume.assumeTrue;
+
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
@@ -35,6 +48,7 @@ import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.time.DateUtils;
import org.apache.jackrabbit.core.data.DataRecord;
import org.apache.jackrabbit.core.data.DataStore;
import org.junit.After;
@@ -48,19 +62,6 @@ import org.junit.runners.Parameterized;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.apache.commons.codec.binary.Hex.encodeHexString;
-import static org.apache.commons.io.FileUtils.copyInputStreamToFile;
-import static org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils.getFixtures;
-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.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreUtils.randomStream;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.junit.Assume.assumeTrue;
-
/**
* Simple tests for S3DataStore.
*/
@@ -93,7 +94,9 @@ public class TestS3DataStore {
@Before
public void setUp() throws Exception {
- startTime = new Date();
+ // Backdate by 1 minute, to allow for time drift when deleting
+ // resources created by the test.
+ startTime = DateUtils.addMinutes(new Date(), -1);
dataStoreDir = folder.newFolder();
props = new Properties();
Modified: jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/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?rev=1843932&r1=1843931&r2=1843932&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3Ds.java (original)
+++ jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3Ds.java Mon Oct 15 17:59:07 2018
@@ -16,30 +16,31 @@
*/
package org.apache.jackrabbit.oak.blob.cloud.s3;
+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;
+
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.jcr.RepositoryException;
+import com.google.common.collect.Lists;
+import org.apache.commons.lang3.time.DateUtils;
import org.apache.jackrabbit.core.data.DataStore;
import org.apache.jackrabbit.oak.plugins.blob.datastore.AbstractDataStoreTest;
import org.junit.After;
-import org.junit.Assume;
+import org.junit.AfterClass;
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.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 S3DataStore} with S3Backend and local cache on.
* It requires to pass aws config file via system property or system properties by prefixing with 'ds.'.
@@ -52,7 +53,8 @@ public class TestS3Ds extends AbstractDa
protected static final Logger LOG = LoggerFactory.getLogger(TestS3Ds.class);
- private Date startTime = null;
+ private static Date overallStartTime = getBackdatedDate();
+ private Date thisTestStartTime = null;
protected Properties props;
@@ -66,19 +68,27 @@ public class TestS3Ds extends AbstractDa
return getFixtures();
}
+ public static Date getBackdatedDate() {
+ // Use a backdated date to accommodate time drift when deleting created resources.
+ return DateUtils.addMinutes(new Date(), -1);
+ }
+
@BeforeClass
public static void assumptions() {
assumeTrue(isS3Configured());
}
+ private static List<String> createdBucketNames = Lists.newArrayList();
+
@Override
@Before
public void setUp() throws Exception {
props = getS3Config();
- startTime = new Date();
+ thisTestStartTime = getBackdatedDate();
bucket =
String.valueOf(randomGen.nextInt(9999)) + "-" + String.valueOf(randomGen.nextInt(9999))
- + "-test";
+ + "-s3ds-unittest-autogenerated";
+ createdBucketNames.add(bucket);
props.setProperty(S3Constants.S3_BUCKET, bucket);
props.setProperty("secret", "123456");
super.setUp();
@@ -89,9 +99,22 @@ public class TestS3Ds extends AbstractDa
public void tearDown() {
try {
super.tearDown();
- S3DataStoreUtils.deleteBucket(bucket, startTime);
- } catch (Exception ignore) {
+ }
+ catch (Exception ignore) { }
+
+ try {
+ S3DataStoreUtils.deleteBucket(bucket, thisTestStartTime);
+ }
+ catch (Exception ignore) { }
+ }
+ @AfterClass
+ public static void verifyAllBucketsDeleted() {
+ for (String bucket : createdBucketNames) {
+ try {
+ S3DataStoreUtils.deleteBucket(bucket, overallStartTime);
+ }
+ catch (Exception ignore) { }
}
}