From 9ff7fb3a46f2c4165c6cccdda9137ec284153b50 Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Thu, 20 Mar 2025 11:57:44 +0100 Subject: [PATCH] OZG-7573 remove waitForFinishedFileUpload --- .../redirect/ForwardingRemoteService.java | 24 +-- .../redirect/ForwardingRemoteServiceTest.java | 171 ++---------------- 2 files changed, 16 insertions(+), 179 deletions(-) diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteService.java index f9d26cb6d..18a53bf2f 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteService.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteService.java @@ -32,7 +32,6 @@ import java.util.concurrent.TimeoutException; import java.util.function.BiFunction; import java.util.function.Function; -import org.apache.commons.io.IOUtils; import org.springframework.stereotype.Service; import com.google.protobuf.ByteString; @@ -109,8 +108,7 @@ class ForwardingRemoteService { private void sendAttachmentFile(StreamObserver<GrpcRouteForwardingRequest> requestStreamObserver, String groupName, IncomingFile file) { var fileContentStream = fileService.getUploadedFileStream(file.getId()); - var fileSender = createAttachmentFileSender(requestStreamObserver, groupName, file, fileContentStream).send(); - waitForFinishedFileUpload(fileSender, fileContentStream); + createAttachmentFileSender(requestStreamObserver, groupName, file, fileContentStream).send(); } FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createAttachmentFileSender( @@ -138,8 +136,7 @@ class ForwardingRemoteService { void sendRepresentations(List<IncomingFile> representations, StreamObserver<GrpcRouteForwardingRequest> requestObserver) { representations.forEach(representation -> { var fileContentStream = fileService.getUploadedFileStream(representation.getId()); - var fileSender = createRepresentationFileSender(requestObserver, representation, fileContentStream).send(); - waitForFinishedFileUpload(fileSender, fileContentStream); + createRepresentationFileSender(requestObserver, representation, fileContentStream).send(); }); } @@ -187,29 +184,16 @@ class ForwardingRemoteService { .build(); } - void waitForFinishedFileUpload(FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSender, InputStream inputStream) { + void waitForCompletion(CompletableFuture<Void> responseFuture) { try { - fileSender.getResultFuture().get(TIMEOUT_MINUTES, TimeUnit.MINUTES); + responseFuture.get(TIMEOUT_MINUTES, TimeUnit.MINUTES); } catch (InterruptedException e) { Thread.currentThread().interrupt(); - fileSender.cancelOnError(e); throw new TechnicalException("Waiting for finishing file upload was interrupted.", e); } catch (ExecutionException e) { - fileSender.cancelOnError(e); throw new TechnicalException("Error on uploading file content.", e); } catch (TimeoutException e) { - fileSender.cancelOnTimeout(); throw new TechnicalException("Timeout on uploading file content.", e); - } finally { - IOUtils.closeQuietly(inputStream); - } - } - - void waitForCompletion(CompletableFuture<Void> responseFuture) { - try { - responseFuture.get(); - } catch (Throwable t) { - throw new TechnicalException("Forwarding failed", t); } } diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteServiceTest.java index 8a1de85f2..dab4e8bae 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteServiceTest.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteServiceTest.java @@ -320,7 +320,6 @@ class ForwardingRemoteServiceTest { when(fileService.getUploadedFileStream(any())).thenReturn(inputStream); doReturn(fileSender).when(service).createAttachmentFileSender(any(), any(), any(), any()); when(fileSender.send()).thenReturn(fileSender); - doNothing().when(service).waitForFinishedFileUpload(any(), any()); } @Test @@ -345,16 +344,6 @@ class ForwardingRemoteServiceTest { verify(fileSender).send(); } - @Test - void shouldCallWaitForFinishedFileUploadAfterSend() { - var inOrder = inOrder(fileSender, service); - - sendAttachments(); - - inOrder.verify(fileSender).send(); - inOrder.verify(service).waitForFinishedFileUpload(fileSender, inputStream); - } - private void sendAttachments() { service.sendAttachments(List.of(attachment), requestObserver); } @@ -485,7 +474,6 @@ class ForwardingRemoteServiceTest { when(fileService.getUploadedFileStream(any())).thenReturn(inputStream); doReturn(fileSender).when(service).createRepresentationFileSender(any(), any(), any()); when(fileSender.send()).thenReturn(fileSender); - doNothing().when(service).waitForFinishedFileUpload(any(), any()); } @Test @@ -509,16 +497,6 @@ class ForwardingRemoteServiceTest { verify(fileSender).send(); } - @Test - void shouldCallWaitForFinishedFileUploadAfterSend() { - var inOrder = inOrder(fileSender, service); - - sendRepresentations(); - - inOrder.verify(fileSender).send(); - inOrder.verify(service).waitForFinishedFileUpload(fileSender, inputStream); - } - private void sendRepresentations() { service.sendRepresentations(List.of(representation), requestObserver); } @@ -710,45 +688,17 @@ class ForwardingRemoteServiceTest { } @Nested - class TestWaitForFinishedFileUpload { + class TestWaitForCompletion { @Mock - private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSender; - @Mock - private InputStream inputStream; - @Mock - private CompletableFuture<GrpcRouteForwardingResponse> resultFuture; - - @BeforeEach - void mock() { - when(fileSender.getResultFuture()).thenReturn(resultFuture); - } - - @Test - void shouldGetResultFuture() { - waitForFinishedFileUpload(); - - verify(fileSender).getResultFuture(); - } + private CompletableFuture<Void> future; - @Test @SneakyThrows - void shouldGetResultFromFuture() { - waitForFinishedFileUpload(); - - verify(resultFuture).get(2, TimeUnit.MINUTES); - } - @Test - @SneakyThrows - void shouldCloseInputStream() { - try { - waitForFinishedFileUpload(); - } catch (TechnicalException e) { - // expected - } + void shouldGetFromFuture() { + waitForCompletion(); - verify(inputStream).close(); + verify(future).get(2, TimeUnit.MINUTES); } @Nested @@ -759,47 +709,24 @@ class ForwardingRemoteServiceTest { @BeforeEach @SneakyThrows void mock() { - when(resultFuture.get(anyLong(), any())).thenThrow(exception); + when(future.get(anyLong(), any())).thenThrow(exception); } @Test void shouldThrowTechnicalException() { - assertThrows(TechnicalException.class, () -> waitForFinishedFileUpload()); + assertThrows(TechnicalException.class, () -> waitForCompletion()); } @Test void shouldInterruptThread() { try { - waitForFinishedFileUpload(); + waitForCompletion(); } catch (TechnicalException e) { // expected } assertThat(Thread.currentThread().isInterrupted()).isTrue(); } - - @Test - void shouldCancelOnError() { - try { - waitForFinishedFileUpload(); - } catch (TechnicalException e) { - // expected - } - - verify(fileSender).cancelOnError(exception); - } - - @Test - @SneakyThrows - void shouldCloseInputStream() { - try { - waitForFinishedFileUpload(); - } catch (TechnicalException e) { - // expected - } - - verify(inputStream).close(); - } } @Nested @@ -810,35 +737,12 @@ class ForwardingRemoteServiceTest { @BeforeEach @SneakyThrows void mock() { - when(resultFuture.get(anyLong(), any())).thenThrow(exception); + when(future.get(anyLong(), any())).thenThrow(exception); } @Test void shouldThrowTechnicalException() { - assertThrows(TechnicalException.class, () -> waitForFinishedFileUpload()); - } - - @Test - void shouldCancelOnError() { - try { - waitForFinishedFileUpload(); - } catch (TechnicalException e) { - // expected - } - - verify(fileSender).cancelOnError(exception); - } - - @Test - @SneakyThrows - void shouldCloseInputStream() { - try { - waitForFinishedFileUpload(); - } catch (TechnicalException e) { - // expected - } - - verify(inputStream).close(); + assertThrows(TechnicalException.class, () -> waitForCompletion()); } } @@ -850,64 +754,13 @@ class ForwardingRemoteServiceTest { @BeforeEach @SneakyThrows void mock() { - when(resultFuture.get(anyLong(), any())).thenThrow(exception); + when(future.get(anyLong(), any())).thenThrow(exception); } @Test void shouldThrowTechnicalException() { - assertThrows(TechnicalException.class, () -> waitForFinishedFileUpload()); + assertThrows(TechnicalException.class, () -> waitForCompletion()); } - - @Test - void shouldCancelOnTimeout() { - try { - waitForFinishedFileUpload(); - } catch (TechnicalException e) { - // expected - } - - verify(fileSender).cancelOnTimeout(); - } - - @Test - @SneakyThrows - void shouldCloseInputStream() { - try { - waitForFinishedFileUpload(); - } catch (TechnicalException e) { - // expected - } - - verify(inputStream).close(); - } - } - - private void waitForFinishedFileUpload() { - service.waitForFinishedFileUpload(fileSender, inputStream); - } - } - - @Nested - class TestWaitForCompletion { - - @Mock - private CompletableFuture<Void> future; - - @SneakyThrows - @Test - void shouldGetFromFuture() { - waitForCompletion(); - - verify(future).get(); - } - - @SneakyThrows - @Test - void shouldThrowTechnicalException() { - var exception = new RuntimeException(); - when(future.get()).thenThrow(exception); - - assertThatThrownBy(this::waitForCompletion).isInstanceOf(TechnicalException.class).hasCause(exception); } private void waitForCompletion() { -- GitLab