Skip to content
Snippets Groups Projects
Commit 9d42e1e2 authored by OZG-Cloud Team's avatar OZG-Cloud Team
Browse files

OZG-6354 adjust channel connection closing; tiny code improvements

parent 8f980e23
Branches
Tags
No related merge requests found
......@@ -7,13 +7,11 @@ import de.ozgcloud.eingang.common.errorhandling.TechnicalException;
import io.grpc.ManagedChannel;
import io.grpc.stub.AbstractStub;
import lombok.Builder;
import lombok.Getter;
@Builder
@Getter
class ClosableStub<T extends AbstractStub<?>> implements ManagableStub<T> {
private static final int SHUTDOWM_TIME = 10;
private static final int SHUTDOWM_TIME_IN_SEC = 3;
private T stub;
private ManagedChannel channel;
......@@ -32,7 +30,7 @@ class ClosableStub<T extends AbstractStub<?>> implements ManagableStub<T> {
private void shutdownChannel() {
try {
channel.shutdown().awaitTermination(ClosableStub.SHUTDOWM_TIME, TimeUnit.SECONDS);
channel.shutdown().awaitTermination(ClosableStub.SHUTDOWM_TIME_IN_SEC, TimeUnit.SECONDS);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new TechnicalException("Error shutting down grpc channel.", e);
......
......@@ -140,11 +140,10 @@ public class VorgangManagerServerResolver {
}
private Optional<String> getChannelTarget(Optional<String> organisationsEinheitId) {
if (isSingleRoutingStrategy()) {
return properties.getTargetVorgangManagerName();
} else {
return organisationsEinheitId.map(properties.getOrganisationseinheiten()::get);
}
return isSingleRoutingStrategy()
? properties.getTargetVorgangManagerName()
: organisationsEinheitId.map(properties.getOrganisationseinheiten()::get);
}
private boolean isSingleRoutingStrategy() {
......
......@@ -72,11 +72,11 @@ public class VorgangRemoteService {
logConnection(organisationsEinheitenId, vorgangServiceStub.get());
var vorgangId = createVorgang(formData, eingang, vorgangServiceStub.get(), binaryFileServiceStub.get());
try {
return createVorgang(formData, eingang, vorgangServiceStub.get(), binaryFileServiceStub.get());
} finally {
finishStubConnections(List.of(vorgangServiceStub, binaryFileServiceStub));
return vorgangId;
}
}
void logConnection(Optional<String> organisationsEinheitenId, VorgangServiceBlockingStub vorgangStub) {
......@@ -143,14 +143,17 @@ public class VorgangRemoteService {
}
private IncomingFileGroup uploadAttachment(IncomingFileGroup attachment) {
var filesWithId = attachment.getFiles().stream().map(file -> file.toBuilder().id(uploadIncomingFile(file)).build()).toList();
var filesWithId = attachment.getFiles().stream().map(this::addIncomingFileId).toList();
return IncomingFileGroup.builder().name(attachment.getName()).files(filesWithId).build();
}
List<IncomingFile> uploadRepresentations() {
return formData.getRepresentations().stream()
.map(representation -> representation.toBuilder().id(uploadIncomingFile(representation)).build()).toList();
return formData.getRepresentations().stream().map(this::addIncomingFileId).toList();
}
private IncomingFile addIncomingFileId(IncomingFile file) {
return file.toBuilder().id(uploadIncomingFile(file)).build();
}
String uploadIncomingFile(IncomingFile incomingFile) {
......
......@@ -287,8 +287,7 @@ class VorgangManagerServerResolverTest {
var createdStub = (ClosableStub) createCloseableStub();
assertThat(createdStub).isNotNull();
assertThat(createdStub.getStub()).isEqualTo(stub);
assertThat(createdStub.getChannel()).isEqualTo(managedChannel);
assertThat(createdStub.get()).isEqualTo(stub);
}
private <T extends AbstractStub<T>> ManagableStub<T> createCloseableStub() {
......
......@@ -106,10 +106,9 @@ class VorgangRemoteServiceTest {
private final Optional<String> organisationsEinheitId = Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID);
@SneakyThrows
@BeforeEach
void mock() {
doReturn(vorgangId).when(remoteService).createVorgang(any(), any(), any(), any());
when(resolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(any())).thenReturn(managableVorgangServiceStub);
when(managableVorgangServiceStub.get()).thenReturn(vorgangServiceStub);
......@@ -120,6 +119,16 @@ class VorgangRemoteServiceTest {
doNothing().when(remoteService).finishStubConnections(any());
}
@DisplayName("with no exception occuring")
@Nested
class TestWithNoException {
@SneakyThrows
@BeforeEach
void mock() {
doReturn(vorgangId).when(remoteService).createVorgang(any(), any(), any(), any());
}
@Test
void shouldGetVorgangService() {
createVorgang();
......@@ -134,6 +143,7 @@ class VorgangRemoteServiceTest {
verify(resolver).resolveBinaryFileServiceStubByOrganisationsEinheitId(organisationsEinheitId);
}
@SneakyThrows
@Test
void shouldCreateVorgang() {
createVorgang();
......@@ -155,7 +165,32 @@ class VorgangRemoteServiceTest {
assertThat(created).isEqualTo(vorgangId);
}
}
@DisplayName("on exception")
@Nested
class TestOnException {
@SneakyThrows
@BeforeEach
void mock() {
doThrow(RuntimeException.class).when(remoteService).createVorgang(any(), any(), any(), any());
}
@SneakyThrows
@Test
void shouldFinishStubConnections() {
try {
createVorgang();
} catch (Exception e) {
// Do nothing
}
verify(remoteService).finishStubConnections(List.of(managableVorgangServiceStub, managableBinaryFileServiceStub));
}
}
@SneakyThrows
private String createVorgang() {
return remoteService.createVorgang(formData, eingang, organisationsEinheitId);
}
......@@ -278,6 +313,7 @@ class VorgangRemoteServiceTest {
assertThat(result).isEqualTo(vorgangId);
}
@SneakyThrows
private String createVorgang() {
return vorgangCreator.create();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment