From 96979feff6b474bf61d7a12a951b8c9e0054d3ef Mon Sep 17 00:00:00 2001 From: Krzysztof Witukiewicz <krzysztof.witukiewicz@mgm-tp.com> Date: Mon, 17 Feb 2025 13:28:25 +0100 Subject: [PATCH] OZG-7608 OZG-7729 Call onCompleted in Streamer --- .../common/grpc/GrpcResponseBatchStreamer.java | 1 + .../vorgang/vorgang/VorgangGrpcService.java | 1 - .../common/grpc/GrpcResponseBatchStreamerTest.java | 14 +++++++++++++- .../vorgang/vorgang/VorgangGrpcServiceTest.java | 4 ++-- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/grpc/GrpcResponseBatchStreamer.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/grpc/GrpcResponseBatchStreamer.java index 5d4e591bf..7d876064b 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/grpc/GrpcResponseBatchStreamer.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/grpc/GrpcResponseBatchStreamer.java @@ -67,6 +67,7 @@ public class GrpcResponseBatchStreamer<ElemType, ResType> { if (!batchIsEmpty()) { sendResponse(); } + responseObserver.onCompleted(); } private boolean batchIsEmpty() { diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcService.java index 245a1bcd9..7a7d74628 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcService.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcService.java @@ -146,6 +146,5 @@ class VorgangGrpcService extends VorgangServiceGrpc.VorgangServiceImplBase { var responseStreamer = GrpcResponseBatchStreamer.create(GrpcFindVorgangResponseBuilder::new, responseObserver); vorgangService.findDeleted().map(vorgangStubMapper::toGrpcVorgangHeader).forEach(responseStreamer::send); responseStreamer.finish(); - responseObserver.onCompleted(); } } \ No newline at end of file diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/common/grpc/GrpcResponseBatchStreamerTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/common/grpc/GrpcResponseBatchStreamerTest.java index 44bb51f29..e984c0a13 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/common/grpc/GrpcResponseBatchStreamerTest.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/common/grpc/GrpcResponseBatchStreamerTest.java @@ -30,6 +30,8 @@ import java.util.function.Supplier; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import io.grpc.stub.StreamObserver; @@ -157,7 +159,7 @@ class GrpcResponseBatchStreamerTest { batchStreamer.finish(); - verifyNoInteractions(responseObserver); + verify(responseObserver, never()).onNext(any()); } @Test @@ -169,6 +171,16 @@ class GrpcResponseBatchStreamerTest { verify(responseObserver).onNext(response); } + + @ParameterizedTest + @ValueSource(ints = {0, 1}) + void shouldCallOnCompleted(int batchSize) { + when(responseBuilder.getElementCount()).thenReturn(batchSize); + + batchStreamer.finish(); + + verify(responseObserver).onCompleted(); + } } private static class DummyResponse { diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcServiceTest.java index d3a0f206e..6b96a0a16 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcServiceTest.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcServiceTest.java @@ -573,10 +573,10 @@ class VorgangGrpcServiceTest { } @Test - void shouldCallOnCompleted() { + void shouldNotCallStreamObserverDirectly() { findDeletedVorgang(); - verify(responseObserver).onCompleted(); + verifyNoInteractions(responseObserver); } @Test -- GitLab