diff --git a/build.gradle b/build.gradle
index 83d76da..3d099d6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ plugins {
id 'net.saliman.cobertura' version '4.0.0'
id 'distribution'
id 'com.github.johnrengelman.shadow' version '6.1.0'
- id 'com.github.jk1.dependency-license-report' version '1.17'
+ id 'com.github.jk1.dependency-license-report' version '1.19'
id 'signing'
id 'maven'
id 'org.ajoberstar.git-publish' version '3.0.1'
@@ -37,9 +37,9 @@ repositories {
}
dependencies {
- implementation 'com.emc.ecs:object-client:3.4.2'
- implementation 'com.emc.ecs:smart-client-ecs:3.0.0'
- implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.18.0'
+ implementation 'com.emc.ecs:object-client:3.4.4'
+ implementation 'com.emc.ecs:smart-client-ecs:3.0.1'
+ implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.19.0'
implementation 'commons-cli:commons-cli:1.5.0'
testImplementation 'junit:junit:4.13.2'
}
diff --git a/src/main/resources/log4j.xml b/src/main/resources/log4j2.xml
similarity index 70%
rename from src/main/resources/log4j.xml
rename to src/main/resources/log4j2.xml
index 976853e..d41f121 100644
--- a/src/main/resources/log4j.xml
+++ b/src/main/resources/log4j2.xml
@@ -4,23 +4,20 @@
-
-
-
-
-
+
+
-
+
-
+
diff --git a/src/test/java/com/emc/ecs/tool/TestBucketWipe.java b/src/test/java/com/emc/ecs/tool/TestBucketWipe.java
index 7502dc5..183b0e5 100644
--- a/src/test/java/com/emc/ecs/tool/TestBucketWipe.java
+++ b/src/test/java/com/emc/ecs/tool/TestBucketWipe.java
@@ -35,6 +35,7 @@
import java.io.File;
import java.io.FileWriter;
import java.net.URI;
+import java.util.Arrays;
public class TestBucketWipe {
private static final Logger log = LoggerFactory.getLogger(TestBucketWipe.class);
@@ -122,12 +123,13 @@ void deleteBucket(S3Client client, String bucketName) {
@Test
public void testUrlEncoding() {
S3Client client = new S3JerseyClient(getS3Config());
- String bucketName = "test-bucket-wipe";
+ String bucketName = "test-bucket-wipe-encoding";
String[] keys = {
"foo!@#$%^&*()-_=+",
- "bar\\u00a1\\u00bfbar",
+ "bar\u00a1\u00bfbar",
"查找的unicode",
- "baz\\u0007bim"
+ "baz\u0007bim",
+ "spaces test"
};
// create bucket and keys
@@ -161,10 +163,69 @@ public void testUrlEncoding() {
}
}
+ @Test
+ public void testVersions() {
+ S3Client client = new S3JerseyClient(getS3Config());
+ String bucketName = "test-bucket-wipe-versions";
+ String[] keys = {
+ "foo!@#$%^&*()-_=+",
+ "bar\u00a1\u00bfbar",
+ "查找的unicode",
+ "baz\u0007bim",
+ "spaces test"
+ };
+
+ // create bucket and keys
+ createBucketAndKeys(client, bucketName, keys);
+
+ // enable versioning
+ client.setBucketVersioning(bucketName, new VersioningConfiguration().withStatus(VersioningConfiguration.Status.Enabled));
+
+ // delete some keys (even indexes)
+ int counter = 0;
+ for (String key : keys) {
+ if (counter++ % 2 == 0) client.deleteObject(bucketName, key);
+ }
+ // overwrite all keys
+ Arrays.stream(keys).forEach(key -> client.putObject(bucketName, key, "foo", "text/plain"));
+ // delete some other keys (odd indexes)
+ counter = 0;
+ for (String key : keys) {
+ if (counter++ % 2 == 1) client.deleteObject(bucketName, key);
+ }
+
+ try {
+ // delete the bucket with bucket-wipe
+ BucketWipe bucketWipe = new BucketWipe().withEndpoint(endpoint).withSmartClient(false)
+ .withAccessKey(accessKey).withSecretKey(secretKey);
+ bucketWipe.withBucket(bucketName).run();
+
+ if (bucketWipe.getResult().getErrors().size() > 0) {
+ for (String error : bucketWipe.getResult().getErrors()) {
+ System.err.println(error);
+ }
+ }
+
+ Assert.assertEquals(keys.length * 3, bucketWipe.getResult().getDeletedObjects());
+ Assert.assertEquals(0, bucketWipe.getResult().getErrors().size());
+
+ try {
+ client.listObjects(bucketName);
+ Assert.fail("bucket still exists");
+ } catch (S3Exception e) {
+ if (e.getHttpCode() != 404) log.error("unexpected error listing bucket", e);
+ Assert.assertEquals(e.getHttpCode(), 404);
+ }
+ } finally {
+ // clean up bucket and keys if necessary
+ deleteBucket(client, bucketName);
+ }
+ }
+
@Test
public void testWithSourceList() throws Exception {
S3Client client = new S3JerseyClient(getS3Config());
- String bucketName = "test-bucket-wipe";
+ String bucketName = "test-bucket-wipe-list";
String[] keys = {
"key-1",
"key-2",
@@ -220,7 +281,7 @@ public void testWithSourceList() throws Exception {
public void testKeepBucket() {
// create bucket
S3Client client = new S3JerseyClient(getS3Config());
- String bucketName = "test-bucket-wipe";
+ String bucketName = "test-bucket-wipe-keep";
String[] keys = {
"key-1",
"key-2",
@@ -263,7 +324,7 @@ public void testKeepBucket() {
@Test
public void testDeleteMpu() {
S3Client client = new S3JerseyClient(getS3Config());
- String bucketName = "test-bucket-wipe";
+ String bucketName = "test-bucket-wipe-mpu";
String[] keys = {
"key-1",
"key-2",
diff --git a/src/test/resources/log4j.xml b/src/test/resources/log4j.xml
deleted file mode 100644
index a7268e9..0000000
--- a/src/test/resources/log4j.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/test/resources/log4j2.xml b/src/test/resources/log4j2.xml
new file mode 100644
index 0000000..8a245e5
--- /dev/null
+++ b/src/test/resources/log4j2.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file