Skip to content
Snippets Groups Projects
Commit a0d677b3 authored by Krzysztof Witukiewicz's avatar Krzysztof Witukiewicz
Browse files

OZG-7573 OZG-7991 Move cancelOnTimeout() and cancelOnError() to StreamingFileSender

parent 0317820e
No related branches found
No related tags found
1 merge request!12Ozg 7573 files weiterleitung bug
...@@ -66,16 +66,12 @@ class StreamExclusiveFileSender<Q, S> extends StreamingFileSender<Q, S> { ...@@ -66,16 +66,12 @@ class StreamExclusiveFileSender<Q, S> extends StreamingFileSender<Q, S> {
} }
public void cancelOnTimeout() { public void cancelOnTimeout() {
LOG.warn("File transfer canceled on timeout"); super.cancelOnTimeout();
getResultFuture().cancel(true);
requestObserver.onError(new TechnicalException("Timeout on waiting for upload.")); requestObserver.onError(new TechnicalException("Timeout on waiting for upload."));
closeStreams();
} }
public void cancelOnError(Throwable t) { public void cancelOnError(Throwable t) {
LOG.error("File tranfer canceled on error.", t); super.cancelOnError(t);
getResultFuture().cancel(true);
requestObserver.onError(t); requestObserver.onError(t);
closeStreams();
} }
} }
...@@ -72,6 +72,18 @@ public abstract class StreamingFileSender<Q, S> { ...@@ -72,6 +72,18 @@ public abstract class StreamingFileSender<Q, S> {
public abstract StreamingFileSender<Q, S> send(); public abstract StreamingFileSender<Q, S> send();
public void cancelOnTimeout() {
LOG.warn("File transfer canceled on timeout");
resultFuture.cancel(true);
closeStreams();
}
public void cancelOnError(Throwable t) {
LOG.error("File tranfer canceled on error.", t);
resultFuture.cancel(true);
closeStreams();
}
void sendNext() { void sendNext() {
if (!done.get()) { if (!done.get()) {
waitForOberver(); waitForOberver();
......
...@@ -39,11 +39,11 @@ import org.mockito.InjectMocks; ...@@ -39,11 +39,11 @@ import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockedStatic; import org.mockito.MockedStatic;
import org.mockito.Spy; import org.mockito.Spy;
import org.springframework.test.util.ReflectionTestUtils;
import de.ozgcloud.common.binaryfile.BinaryFileTestFactory.TestRequestType; import de.ozgcloud.common.binaryfile.BinaryFileTestFactory.TestRequestType;
import de.ozgcloud.common.binaryfile.BinaryFileTestFactory.TestResponseType; import de.ozgcloud.common.binaryfile.BinaryFileTestFactory.TestResponseType;
import de.ozgcloud.common.errorhandling.TechnicalException; import de.ozgcloud.common.errorhandling.TechnicalException;
import de.ozgcloud.common.test.ReflectionTestUtils;
import io.grpc.stub.CallStreamObserver; import io.grpc.stub.CallStreamObserver;
import io.grpc.stub.StreamObserver; import io.grpc.stub.StreamObserver;
...@@ -130,7 +130,7 @@ class StreamExclusiveFileSenderTest { ...@@ -130,7 +130,7 @@ class StreamExclusiveFileSenderTest {
@BeforeEach @BeforeEach
void init() { void init() {
doReturn(resultFuture).when(fileSender).getResultFuture(); ReflectionTestUtils.setField(fileSender, "resultFuture", resultFuture);
ReflectionTestUtils.setField(fileSender, "requestObserver", requestObserver); ReflectionTestUtils.setField(fileSender, "requestObserver", requestObserver);
} }
...@@ -167,7 +167,7 @@ class StreamExclusiveFileSenderTest { ...@@ -167,7 +167,7 @@ class StreamExclusiveFileSenderTest {
@BeforeEach @BeforeEach
void init() { void init() {
doReturn(resultFuture).when(fileSender).getResultFuture(); ReflectionTestUtils.setField(fileSender, "resultFuture", resultFuture);
ReflectionTestUtils.setField(fileSender, "requestObserver", requestObserver); ReflectionTestUtils.setField(fileSender, "requestObserver", requestObserver);
} }
......
...@@ -28,6 +28,7 @@ import static org.mockito.Mockito.*; ...@@ -28,6 +28,7 @@ import static org.mockito.Mockito.*;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.util.concurrent.CompletableFuture;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.RandomUtils;
...@@ -37,6 +38,7 @@ import org.junit.jupiter.api.Test; ...@@ -37,6 +38,7 @@ import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Captor; import org.mockito.Captor;
import org.mockito.Mock; import org.mockito.Mock;
import org.springframework.test.util.ReflectionTestUtils;
import de.ozgcloud.common.binaryfile.BinaryFileTestFactory.TestRequestType; import de.ozgcloud.common.binaryfile.BinaryFileTestFactory.TestRequestType;
import de.ozgcloud.common.binaryfile.BinaryFileTestFactory.TestResponseType; import de.ozgcloud.common.binaryfile.BinaryFileTestFactory.TestResponseType;
...@@ -61,6 +63,59 @@ class StreamingFileSenderTest { ...@@ -61,6 +63,59 @@ class StreamingFileSenderTest {
fileSender = spy(new TestFileSender(chunkBuilder, inputStream, requestObserver)); fileSender = spy(new TestFileSender(chunkBuilder, inputStream, requestObserver));
} }
@Nested
class TestCancelOnTimeout {
@Mock
private CompletableFuture<TestResponseType> resultFuture;
@BeforeEach
void init() {
ReflectionTestUtils.setField(fileSender, "resultFuture", resultFuture);
}
@Test
void shouldCancelResultFuture() {
fileSender.cancelOnTimeout();
verify(resultFuture).cancel(true);
}
@Test
void shouldCloseStreams() {
fileSender.cancelOnTimeout();
verify(fileSender).closeStreams();
}
}
@Nested
class TestCancelOnError {
@Mock
private CompletableFuture<TestResponseType> resultFuture;
private final Throwable error = new Throwable();
@BeforeEach
void init() {
ReflectionTestUtils.setField(fileSender, "resultFuture", resultFuture);
}
@Test
void shouldCancelResultFuture() {
fileSender.cancelOnError(error);
verify(resultFuture).cancel(true);
}
@Test
void shouldCloseStreams() {
fileSender.cancelOnError(error);
verify(fileSender).closeStreams();
}
}
@Nested @Nested
class TestSendNext { class TestSendNext {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment