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