Skip to content

Commit 75a91cf

Browse files
committed
Refactor S3HttpHandlerTests to simplify task creation with helper methods
1 parent b5c0088 commit 75a91cf

File tree

1 file changed

+42
-45
lines changed

1 file changed

+42
-45
lines changed

test/fixtures/s3-fixture/src/test/java/fixture/s3/S3HttpHandlerTests.java

Lines changed: 42 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -390,47 +390,11 @@ public void testExtractPartEtags() {
390390
public void testPreventObjectOverwrite() throws InterruptedException {
391391
final var handler = new S3HttpHandler("bucket", "path");
392392

393-
Consumer<TestWriteTask> putObjectConsumer = (task) -> task.status = handleRequest(
394-
handler,
395-
"PUT",
396-
"/bucket/path/blob",
397-
task.body,
398-
ifNoneMatchHeader()
399-
).status();
400-
401-
Consumer<TestWriteTask> prepareMultipartUploadConsumer = (task) -> {
402-
final var createUploadResponse = handleRequest(handler, "POST", "/bucket/path/blob?uploads");
403-
task.uploadId = getUploadId(createUploadResponse.body());
404-
405-
final var uploadPart1Response = handleRequest(
406-
handler,
407-
"PUT",
408-
"/bucket/path/blob?uploadId=" + task.uploadId + "&partNumber=1",
409-
task.body
410-
);
411-
task.etag = Objects.requireNonNull(uploadPart1Response.etag());
412-
};
413-
414-
Consumer<TestWriteTask> completeMultipartUploadConsumer = (task) -> task.status = handleRequest(
415-
handler,
416-
"POST",
417-
"/bucket/path/blob?uploadId=" + task.uploadId,
418-
new BytesArray(Strings.format("""
419-
<?xml version="1.0" encoding="UTF-8"?>
420-
<CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
421-
<Part>
422-
<ETag>%s</ETag>
423-
<PartNumber>1</PartNumber>
424-
</Part>
425-
</CompleteMultipartUpload>""", task.etag)),
426-
ifNoneMatchHeader()
427-
).status();
428-
429393
var tasks = List.of(
430-
new TestWriteTask(putObjectConsumer),
431-
new TestWriteTask(putObjectConsumer),
432-
new TestWriteTask(completeMultipartUploadConsumer, prepareMultipartUploadConsumer),
433-
new TestWriteTask(completeMultipartUploadConsumer, prepareMultipartUploadConsumer)
394+
createPutObjectTask(handler),
395+
createPutObjectTask(handler),
396+
createMultipartUploadTask(handler),
397+
createMultipartUploadTask(handler)
434398
);
435399

436400
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
@@ -457,18 +421,51 @@ public void testPreventObjectOverwrite() throws InterruptedException {
457421
);
458422
}
459423

424+
private static TestWriteTask createPutObjectTask(S3HttpHandler handler) {
425+
return new TestWriteTask(
426+
(task) -> task.status = handleRequest(handler, "PUT", "/bucket/path/blob", task.body, ifNoneMatchHeader()).status()
427+
);
428+
}
429+
430+
private static TestWriteTask createMultipartUploadTask(S3HttpHandler handler) {
431+
final var multipartUploadTask = new TestWriteTask(
432+
(task) -> task.status = handleRequest(
433+
handler,
434+
"POST",
435+
"/bucket/path/blob?uploadId=" + task.uploadId,
436+
new BytesArray(Strings.format("""
437+
<?xml version="1.0" encoding="UTF-8"?>
438+
<CompleteMultipartUpload xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
439+
<Part>
440+
<ETag>%s</ETag>
441+
<PartNumber>1</PartNumber>
442+
</Part>
443+
</CompleteMultipartUpload>""", task.etag)),
444+
ifNoneMatchHeader()
445+
).status()
446+
);
447+
448+
final var createUploadResponse = handleRequest(handler, "POST", "/bucket/path/blob?uploads");
449+
multipartUploadTask.uploadId = getUploadId(createUploadResponse.body());
450+
451+
final var uploadPart1Response = handleRequest(
452+
handler,
453+
"PUT",
454+
"/bucket/path/blob?uploadId=" + multipartUploadTask.uploadId + "&partNumber=1",
455+
multipartUploadTask.body
456+
);
457+
multipartUploadTask.etag = Objects.requireNonNull(uploadPart1Response.etag());
458+
459+
return multipartUploadTask;
460+
}
461+
460462
private static class TestWriteTask {
461463
final BytesReference body;
462464
final Runnable consumer;
463465
String uploadId;
464466
String etag;
465467
RestStatus status;
466468

467-
TestWriteTask(Consumer<TestWriteTask> consumer, Consumer<TestWriteTask> prepare) {
468-
this(consumer);
469-
prepare.accept(this);
470-
}
471-
472469
TestWriteTask(Consumer<TestWriteTask> consumer) {
473470
this.body = randomBytesReference(50);
474471
this.consumer = () -> consumer.accept(this);

0 commit comments

Comments
 (0)