Skip to content
Snippets Groups Projects
Commit 5134a3f3 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-7143 refactor shouldCompleteRequest

parent 7828b5a5
Branches
Tags
No related merge requests found
......@@ -2,7 +2,9 @@
## Changelog
### 4.6.0-SNAPSHOT
### 4.7.0-SNAPSHOT
### 4.6.0
* Update [OZGCloud License Generator](ozgcloud-common-license/readme.md)
### 4.5.0
......
......@@ -123,11 +123,15 @@ public class GrpcBinaryFileServerDownloader<T> {
}
void tryCompleteRequest() {
if (downloadFinished.get()) {
if (shouldCompleteRequest()) {
completeRequest();
}
}
boolean shouldCompleteRequest() {
return downloadFinished.get() && requestFinished.compareAndSet(false, true);
}
void completeRequest() {
if (requestFinished.getAndSet(true)) {
return;
......
......@@ -318,9 +318,16 @@ class GrpcBinaryFileServerDownloaderTest {
@Nested
class TestTryCompleteRequest {
@Test
void shouldCallShouldCompleteRequest() {
downloader.tryCompleteRequest();
verify(downloader).shouldCompleteRequest();
}
@Test
void shouldCallCompleteRequest() {
setDownloadFinishedField(true);
doReturn(true).when(downloader).shouldCompleteRequest();
downloader.tryCompleteRequest();
......@@ -329,7 +336,7 @@ class GrpcBinaryFileServerDownloaderTest {
@Test
void shouldNotCallCompleteRequest() {
setDownloadFinishedField(false);
doReturn(false).when(downloader).shouldCompleteRequest();
downloader.tryCompleteRequest();
......@@ -337,6 +344,65 @@ class GrpcBinaryFileServerDownloaderTest {
}
}
@Nested
class TestShouldCompleteRequest {
@Nested
class TestWhenDownloadFinished {
@BeforeEach
void init() {
setDownloadFinishedField(true);
}
@Test
void shouldReturnTrue() {
var result = downloader.shouldCompleteRequest();
assertThat(result).isTrue();
}
@Test
void shouldReturnFalseIfRequestFinished() {
setRequestFinishedField(true);
var result = downloader.shouldCompleteRequest();
assertThat(result).isFalse();
}
@Test
void shouldUpdateRequestFinished() {
downloader.shouldCompleteRequest();
assertThat(getRequestFinished()).isTrue();
}
}
@Nested
class TestWhenDownloadRunning {
@BeforeEach
void init() {
setDownloadFinishedField(false);
}
@Test
void shouldReturnFalse() {
var result = downloader.shouldCompleteRequest();
assertThat(result).isFalse();
}
@Test
void shouldNotUpdateRequestFinished() {
downloader.shouldCompleteRequest();
assertThat(getRequestFinished()).isFalse();
}
}
}
@Nested
class TestCompleteRequest {
......@@ -345,7 +411,7 @@ class GrpcBinaryFileServerDownloaderTest {
@BeforeEach
void mock() {
setSendingFinishedField(false);
setRequestFinishedField(false);
setDownloadFinishedField(true);
setInputStreamField(inputStream);
}
......@@ -441,26 +507,26 @@ class GrpcBinaryFileServerDownloaderTest {
}
@SneakyThrows
private void setOutputStreamField(OutputStream outputStream) {
ReflectionTestUtils.setField(downloader, "outputStream", outputStream);
}
@SneakyThrows
private void setInputStreamField(InputStream inputStream) {
ReflectionTestUtils.setField(downloader, "inputStream", inputStream);
}
@SneakyThrows
private void setDownloadFinishedField(boolean downloadFinished) {
ReflectionTestUtils.setField(downloader, "downloadFinished", new AtomicBoolean(downloadFinished));
}
@SneakyThrows
private void setSendingFinishedField(boolean requestFinished) {
private void setRequestFinishedField(boolean requestFinished) {
ReflectionTestUtils.setField(downloader, "requestFinished", new AtomicBoolean(requestFinished));
}
private boolean getRequestFinished() {
return ReflectionTestUtils.getField(downloader, "requestFinished", AtomicBoolean.class).get();
}
static class GrpcResponseDummy {
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment