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