Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -820,129 +820,6 @@ public void deleteJobCompletedNotification() throws IOException {
assertThat(response, is(notNullValue()));
}

@Test
public void initiateMultipartUpload() throws IOException {
try {
final InitiateMultiPartUploadResponse multiPartUploadResponse = client.initiateMultiPartUpload(
new InitiateMultiPartUploadRequest(BUCKET_NAME, "beowulf"));

assertThat(multiPartUploadResponse.getInitiateMultipartUploadResult(), is(notNullValue()));
} catch (final FailedRequestException e) {

assertThat(getCacheBytesAvailable(), lessThan(5000000000000L));
assertThat(e.getStatusCode(), is(400));

} finally {
cancelAllJobsForBucket(client, BUCKET_NAME);
deleteAllContents(client, BUCKET_NAME);
}
}

@Test
public void abortMultipartUpload() throws IOException {
String uploadID = null;
try {
try {
final InitiateMultiPartUploadResponse multiPartUploadResponse = client.initiateMultiPartUpload(
new InitiateMultiPartUploadRequest(BUCKET_NAME, "beowulf"));
uploadID = multiPartUploadResponse.getInitiateMultipartUploadResult().getUploadId();
} catch (final FailedRequestException e) {
assertThat(getCacheBytesAvailable(), lessThan(5000000000000L));
assertThat(e.getStatusCode(), is(400));
}

final UUID uuid;
if (uploadID != null) {
uuid = UUID.fromString(uploadID);
} else {
uuid = UUID.randomUUID();
}

final AbortMultiPartUploadResponse abortResponse = client.abortMultiPartUpload(
new AbortMultiPartUploadRequest(BUCKET_NAME, "beowulf", uuid));

assertThat(abortResponse, is(notNullValue()));

} catch (final FailedRequestException e) {

assertThat(e.getStatusCode(), is(404));

} finally {
deleteAllContents(client, BUCKET_NAME);
}
}

@Test //TODO expand positive test if test target >5 TB cache is available
public void listMultiPartUploadParts() throws IOException {
try {
final ListMultiPartUploadPartsResponse response = client.listMultiPartUploadParts(
new ListMultiPartUploadPartsRequest(BUCKET_NAME, "beowulf", UUID.randomUUID()));

assertThat(response.getListPartsResult(), is(notNullValue()));
assertTrue(response.getListPartsResult().getParts().isEmpty());

} finally {
deleteAllContents(client, BUCKET_NAME);
}
}

@Test //TODO expand positive test if test target >5 TB cache is available
public void completeMultiPartUpload() throws IOException {
try {
client.completeMultiPartUpload(
//Passing in a null request payload, which is sufficient for checking error code
new CompleteMultiPartUploadRequest(BUCKET_NAME, "beowulf", null, UUID.randomUUID()));

fail("Response should have failed because upload part does not exist");

} catch (final FailedRequestException e) {

assertThat(e.getStatusCode(), is(404));

} finally {
deleteAllContents(client, BUCKET_NAME);
}
}

@Test //TODO expand positive test if test target >5 TB cache is available
public void listMultiPartUploads() throws IOException {
try {
final ListMultiPartUploadsResponse response = client.listMultiPartUploads(
new ListMultiPartUploadsRequest(BUCKET_NAME));

assertThat(response.getListMultiPartUploadsResult(), is(notNullValue()));
assertTrue(response.getListMultiPartUploadsResult().getUploads().isEmpty());

} finally {
deleteAllContents(client, BUCKET_NAME);
}
}

@Test //TODO expand positive test if test target >5 TB cache is available
public void putMultiPartUploadPart() throws IOException {
try {
final int length = 1024;
final Ds3Object obj = new Ds3Object("obj.txt", length);
final byte[] randomData = IOUtils.toByteArray(new RandomDataInputStream(System.currentTimeMillis(), obj.getSize()));
final ByteBuffer randomBuffer = ByteBuffer.wrap(randomData);

final ByteArraySeekableByteChannel channel = new ByteArraySeekableByteChannel(length);
channel.write(randomBuffer);

client.putMultiPartUploadPart(
new PutMultiPartUploadPartRequest(BUCKET_NAME, obj.getName(), channel, 5, length, UUID.randomUUID()));

fail("Response should have failed because part does not exist");

} catch (final FailedRequestException e) {

assertThat(e.getStatusCode(), is(404));

} finally {
deleteAllContents(client, BUCKET_NAME);
}
}

@Test
public void testWriteJobWithRetries() throws Exception {
final int maxNumObjectTransferAttempts = 3;
Expand Down
78 changes: 48 additions & 30 deletions ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,31 +37,16 @@ public interface Ds3Client extends Closeable {



AbortMultiPartUploadResponse abortMultiPartUpload(final AbortMultiPartUploadRequest request)
throws IOException;



CompleteBlobResponse completeBlob(final CompleteBlobRequest request)
throws IOException;



CompleteMultiPartUploadResponse completeMultiPartUpload(final CompleteMultiPartUploadRequest request)
throws IOException;



PutBucketResponse putBucket(final PutBucketRequest request)
throws IOException;



PutMultiPartUploadPartResponse putMultiPartUploadPart(final PutMultiPartUploadPartRequest request)
throws IOException;



PutObjectResponse putObject(final PutObjectRequest request)
throws IOException;

Expand Down Expand Up @@ -100,21 +85,6 @@ HeadBucketResponse headBucket(final HeadBucketRequest request)
HeadObjectResponse headObject(final HeadObjectRequest request)
throws IOException;



InitiateMultiPartUploadResponse initiateMultiPartUpload(final InitiateMultiPartUploadRequest request)
throws IOException;



ListMultiPartUploadPartsResponse listMultiPartUploadParts(final ListMultiPartUploadPartsRequest request)
throws IOException;



ListMultiPartUploadsResponse listMultiPartUploads(final ListMultiPartUploadsRequest request)
throws IOException;

@ResponsePayloadModel("BucketAcl")
@Action("CREATE")
@Resource("BUCKET_ACL")
Expand Down Expand Up @@ -245,6 +215,19 @@ GetBucketsSpectraS3Response getBucketsSpectraS3(final GetBucketsSpectraS3Request
ModifyBucketSpectraS3Response modifyBucketSpectraS3(final ModifyBucketSpectraS3Request request)
throws IOException;

@ResponsePayloadModel("CacheThrottleRule")
@Action("CREATE")
@Resource("CACHE_THROTTLE_RULE")

PutCacheThrottleRuleSpectraS3Response putCacheThrottleRuleSpectraS3(final PutCacheThrottleRuleSpectraS3Request request)
throws IOException;

@Action("DELETE")
@Resource("CACHE_THROTTLE_RULE")

DeleteCacheThrottleRuleSpectraS3Response deleteCacheThrottleRuleSpectraS3(final DeleteCacheThrottleRuleSpectraS3Request request)
throws IOException;

@Action("BULK_MODIFY")
@Resource("CACHE_FILESYSTEM")

Expand Down Expand Up @@ -272,13 +255,34 @@ GetCacheFilesystemsSpectraS3Response getCacheFilesystemsSpectraS3(final GetCache
GetCacheStateSpectraS3Response getCacheStateSpectraS3(final GetCacheStateSpectraS3Request request)
throws IOException;

@ResponsePayloadModel("CacheThrottleRule")
@Action("SHOW")
@Resource("CACHE_THROTTLE_RULE")

GetCacheThrottleRuleSpectraS3Response getCacheThrottleRuleSpectraS3(final GetCacheThrottleRuleSpectraS3Request request)
throws IOException;

@ResponsePayloadModel("CacheThrottleRuleList")
@Action("LIST")
@Resource("CACHE_THROTTLE_RULE")

GetCacheThrottleRulesSpectraS3Response getCacheThrottleRulesSpectraS3(final GetCacheThrottleRulesSpectraS3Request request)
throws IOException;

@ResponsePayloadModel("CacheFilesystem")
@Action("MODIFY")
@Resource("CACHE_FILESYSTEM")

ModifyCacheFilesystemSpectraS3Response modifyCacheFilesystemSpectraS3(final ModifyCacheFilesystemSpectraS3Request request)
throws IOException;

@ResponsePayloadModel("CacheThrottleRule")
@Action("MODIFY")
@Resource("CACHE_THROTTLE_RULE")

ModifyCacheThrottleRuleSpectraS3Response modifyCacheThrottleRuleSpectraS3(final ModifyCacheThrottleRuleSpectraS3Request request)
throws IOException;

@ResponsePayloadModel("CapacitySummaryContainer")
@Action("LIST")
@Resource("CAPACITY_SUMMARY")
Expand Down Expand Up @@ -871,13 +875,27 @@ GetJobChunksReadyForClientProcessingSpectraS3Response getJobChunksReadyForClient
GetJobCreationFailuresSpectraS3Response getJobCreationFailuresSpectraS3(final GetJobCreationFailuresSpectraS3Request request)
throws IOException;

@ResponsePayloadModel("JobEntryList")
@Action("LIST")
@Resource("JOB_CHUNK_DAO")

GetJobEntriesSpectraS3Response getJobEntriesSpectraS3(final GetJobEntriesSpectraS3Request request)
throws IOException;

@ResponsePayloadModel("MasterObjectList")
@Action("SHOW")
@Resource("JOB")

GetJobSpectraS3Response getJobSpectraS3(final GetJobSpectraS3Request request)
throws IOException;

@ResponsePayloadModel("JobSummaryApiBean")
@Action("SHOW")
@Resource("JOB")

GetJobSummarySpectraS3Response getJobSummarySpectraS3(final GetJobSummarySpectraS3Request request)
throws IOException;

@ResponsePayloadModel("String")
@Action("SHOW")
@Resource("JOB")
Expand Down
52 changes: 28 additions & 24 deletions ds3-sdk/src/main/java/com/spectralogic/ds3client/Ds3ClientImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,27 +45,15 @@ public ConnectionDetails getConnectionDetails() {
return this.netClient.getConnectionDetails();
}

@Override
public AbortMultiPartUploadResponse abortMultiPartUpload(final AbortMultiPartUploadRequest request) throws IOException {
return new AbortMultiPartUploadResponseParser().response(this.netClient.getResponse(request));
}
@Override
public CompleteBlobResponse completeBlob(final CompleteBlobRequest request) throws IOException {
return new CompleteBlobResponseParser().response(this.netClient.getResponse(request));
}
@Override
public CompleteMultiPartUploadResponse completeMultiPartUpload(final CompleteMultiPartUploadRequest request) throws IOException {
return new CompleteMultiPartUploadResponseParser().response(this.netClient.getResponse(request));
}
@Override
public PutBucketResponse putBucket(final PutBucketRequest request) throws IOException {
return new PutBucketResponseParser().response(this.netClient.getResponse(request));
}
@Override
public PutMultiPartUploadPartResponse putMultiPartUploadPart(final PutMultiPartUploadPartRequest request) throws IOException {
return new PutMultiPartUploadPartResponseParser().response(this.netClient.getResponse(request));
}
@Override
public PutObjectResponse putObject(final PutObjectRequest request) throws IOException {
return new PutObjectResponseParser().response(this.netClient.getResponse(request));
}
Expand Down Expand Up @@ -98,18 +86,6 @@ public HeadObjectResponse headObject(final HeadObjectRequest request) throws IOE
return new HeadObjectResponseParser().response(this.netClient.getResponse(request));
}
@Override
public InitiateMultiPartUploadResponse initiateMultiPartUpload(final InitiateMultiPartUploadRequest request) throws IOException {
return new InitiateMultiPartUploadResponseParser().response(this.netClient.getResponse(request));
}
@Override
public ListMultiPartUploadPartsResponse listMultiPartUploadParts(final ListMultiPartUploadPartsRequest request) throws IOException {
return new ListMultiPartUploadPartsResponseParser().response(this.netClient.getResponse(request));
}
@Override
public ListMultiPartUploadsResponse listMultiPartUploads(final ListMultiPartUploadsRequest request) throws IOException {
return new ListMultiPartUploadsResponseParser().response(this.netClient.getResponse(request));
}
@Override
public PutBucketAclForGroupSpectraS3Response putBucketAclForGroupSpectraS3(final PutBucketAclForGroupSpectraS3Request request) throws IOException {
return new PutBucketAclForGroupSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
Expand Down Expand Up @@ -186,6 +162,14 @@ public ModifyBucketSpectraS3Response modifyBucketSpectraS3(final ModifyBucketSpe
return new ModifyBucketSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
@Override
public PutCacheThrottleRuleSpectraS3Response putCacheThrottleRuleSpectraS3(final PutCacheThrottleRuleSpectraS3Request request) throws IOException {
return new PutCacheThrottleRuleSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
@Override
public DeleteCacheThrottleRuleSpectraS3Response deleteCacheThrottleRuleSpectraS3(final DeleteCacheThrottleRuleSpectraS3Request request) throws IOException {
return new DeleteCacheThrottleRuleSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
@Override
public ForceFullCacheReclaimSpectraS3Response forceFullCacheReclaimSpectraS3(final ForceFullCacheReclaimSpectraS3Request request) throws IOException {
return new ForceFullCacheReclaimSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
Expand All @@ -202,10 +186,22 @@ public GetCacheStateSpectraS3Response getCacheStateSpectraS3(final GetCacheState
return new GetCacheStateSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
@Override
public GetCacheThrottleRuleSpectraS3Response getCacheThrottleRuleSpectraS3(final GetCacheThrottleRuleSpectraS3Request request) throws IOException {
return new GetCacheThrottleRuleSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
@Override
public GetCacheThrottleRulesSpectraS3Response getCacheThrottleRulesSpectraS3(final GetCacheThrottleRulesSpectraS3Request request) throws IOException {
return new GetCacheThrottleRulesSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
@Override
public ModifyCacheFilesystemSpectraS3Response modifyCacheFilesystemSpectraS3(final ModifyCacheFilesystemSpectraS3Request request) throws IOException {
return new ModifyCacheFilesystemSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
@Override
public ModifyCacheThrottleRuleSpectraS3Response modifyCacheThrottleRuleSpectraS3(final ModifyCacheThrottleRuleSpectraS3Request request) throws IOException {
return new ModifyCacheThrottleRuleSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
@Override
public GetBucketCapacitySummarySpectraS3Response getBucketCapacitySummarySpectraS3(final GetBucketCapacitySummarySpectraS3Request request) throws IOException {
return new GetBucketCapacitySummarySpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
Expand Down Expand Up @@ -558,10 +554,18 @@ public GetJobCreationFailuresSpectraS3Response getJobCreationFailuresSpectraS3(f
return new GetJobCreationFailuresSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
@Override
public GetJobEntriesSpectraS3Response getJobEntriesSpectraS3(final GetJobEntriesSpectraS3Request request) throws IOException {
return new GetJobEntriesSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
@Override
public GetJobSpectraS3Response getJobSpectraS3(final GetJobSpectraS3Request request) throws IOException {
return new GetJobSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
@Override
public GetJobSummarySpectraS3Response getJobSummarySpectraS3(final GetJobSummarySpectraS3Request request) throws IOException {
return new GetJobSummarySpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
@Override
public GetJobToReplicateSpectraS3Response getJobToReplicateSpectraS3(final GetJobToReplicateSpectraS3Request request) throws IOException {
return new GetJobToReplicateSpectraS3ResponseParser().response(this.netClient.getResponse(request));
}
Expand Down
Loading
Loading