HDDS-743. S3 multi delete request should return XML header in quiet mode. Contributed by Elek Marton.
This commit is contained in:
parent
a58048e8d5
commit
3655e573e2
|
@ -223,7 +223,7 @@ public class BucketEndpoint extends EndpointBase {
|
||||||
*/
|
*/
|
||||||
@POST
|
@POST
|
||||||
@Produces(MediaType.APPLICATION_XML)
|
@Produces(MediaType.APPLICATION_XML)
|
||||||
public Response multiDelete(@PathParam("bucket") String bucketName,
|
public MultiDeleteResponse multiDelete(@PathParam("bucket") String bucketName,
|
||||||
@QueryParam("delete") String delete,
|
@QueryParam("delete") String delete,
|
||||||
MultiDeleteRequest request) throws OS3Exception, IOException {
|
MultiDeleteRequest request) throws OS3Exception, IOException {
|
||||||
OzoneBucket bucket = getBucket(bucketName);
|
OzoneBucket bucket = getBucket(bucketName);
|
||||||
|
@ -251,11 +251,6 @@ public class BucketEndpoint extends EndpointBase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ResponseBuilder response = Response.ok();
|
return result;
|
||||||
if (!request.isQuiet() || result.getErrors().size() > 0) {
|
|
||||||
response = response.entity(result);
|
|
||||||
}
|
|
||||||
return response.build();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,16 +46,7 @@ public class TestObjectMultiDelete {
|
||||||
public void delete() throws IOException, OS3Exception, JAXBException {
|
public void delete() throws IOException, OS3Exception, JAXBException {
|
||||||
//GIVEN
|
//GIVEN
|
||||||
OzoneClient client = new OzoneClientStub();
|
OzoneClient client = new OzoneClientStub();
|
||||||
client.getObjectStore().createS3Bucket("bilbo", "b1");
|
OzoneBucket bucket = initTestData(client);
|
||||||
|
|
||||||
String volumeName = client.getObjectStore().getOzoneVolumeName("b1");
|
|
||||||
|
|
||||||
OzoneBucket bucket =
|
|
||||||
client.getObjectStore().getVolume(volumeName).getBucket("b1");
|
|
||||||
|
|
||||||
bucket.createKey("key1", 0).close();
|
|
||||||
bucket.createKey("key2", 0).close();
|
|
||||||
bucket.createKey("key3", 0).close();
|
|
||||||
|
|
||||||
BucketEndpoint rest = new BucketEndpoint();
|
BucketEndpoint rest = new BucketEndpoint();
|
||||||
rest.setClient(client);
|
rest.setClient(client);
|
||||||
|
@ -66,11 +57,9 @@ public class TestObjectMultiDelete {
|
||||||
mdr.getObjects().add(new DeleteObject("key4"));
|
mdr.getObjects().add(new DeleteObject("key4"));
|
||||||
|
|
||||||
//WHEN
|
//WHEN
|
||||||
Response response = rest.multiDelete("b1", "", mdr);
|
MultiDeleteResponse response = rest.multiDelete("b1", "", mdr);
|
||||||
|
|
||||||
//THEN
|
//THEN
|
||||||
MultiDeleteResponse mdresponse = (MultiDeleteResponse) response.getEntity();
|
|
||||||
|
|
||||||
Set<String> keysAtTheEnd = Sets.newHashSet(bucket.listKeys("")).stream()
|
Set<String> keysAtTheEnd = Sets.newHashSet(bucket.listKeys("")).stream()
|
||||||
.map(OzoneKey::getName)
|
.map(OzoneKey::getName)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
@ -80,7 +69,49 @@ public class TestObjectMultiDelete {
|
||||||
|
|
||||||
//THEN
|
//THEN
|
||||||
Assert.assertEquals(expectedResult, keysAtTheEnd);
|
Assert.assertEquals(expectedResult, keysAtTheEnd);
|
||||||
Assert.assertEquals(3, mdresponse.getDeletedObjects().size());
|
Assert.assertEquals(3, response.getDeletedObjects().size());
|
||||||
Assert.assertEquals(0, mdresponse.getErrors().size());
|
Assert.assertEquals(0, response.getErrors().size());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void deleteQuiet() throws IOException, OS3Exception, JAXBException {
|
||||||
|
//GIVEN
|
||||||
|
OzoneClient client = new OzoneClientStub();
|
||||||
|
OzoneBucket bucket = initTestData(client);
|
||||||
|
|
||||||
|
BucketEndpoint rest = new BucketEndpoint();
|
||||||
|
rest.setClient(client);
|
||||||
|
|
||||||
|
MultiDeleteRequest mdr = new MultiDeleteRequest();
|
||||||
|
mdr.setQuiet(true);
|
||||||
|
mdr.getObjects().add(new DeleteObject("key1"));
|
||||||
|
mdr.getObjects().add(new DeleteObject("key2"));
|
||||||
|
mdr.getObjects().add(new DeleteObject("key4"));
|
||||||
|
|
||||||
|
//WHEN
|
||||||
|
MultiDeleteResponse response = rest.multiDelete("b1", "", mdr);
|
||||||
|
|
||||||
|
//THEN
|
||||||
|
Set<String> keysAtTheEnd = Sets.newHashSet(bucket.listKeys("")).stream()
|
||||||
|
.map(OzoneKey::getName)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
//THEN
|
||||||
|
Assert.assertEquals(0, response.getDeletedObjects().size());
|
||||||
|
Assert.assertEquals(0, response.getErrors().size());
|
||||||
|
}
|
||||||
|
|
||||||
|
private OzoneBucket initTestData(OzoneClient client) throws IOException {
|
||||||
|
client.getObjectStore().createS3Bucket("bilbo", "b1");
|
||||||
|
|
||||||
|
String volumeName = client.getObjectStore().getOzoneVolumeName("b1");
|
||||||
|
|
||||||
|
OzoneBucket bucket =
|
||||||
|
client.getObjectStore().getVolume(volumeName).getBucket("b1");
|
||||||
|
|
||||||
|
bucket.createKey("key1", 0).close();
|
||||||
|
bucket.createKey("key2", 0).close();
|
||||||
|
bucket.createKey("key3", 0).close();
|
||||||
|
return bucket;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue