Skip to content

Commit cbe7b62

Browse files
committed
Fixing race conditions in transferProgressListenerTest
1 parent 0fb4a43 commit cbe7b62

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/S3JavaMultipartTransferProgressListenerTest.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@
2727
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
2828
import static org.junit.jupiter.api.Assertions.assertTimeoutPreemptively;
2929
import static org.mockito.Mockito.mock;
30+
import static org.mockito.Mockito.timeout;
3031
import static org.mockito.Mockito.times;
3132

33+
import com.github.tomakehurst.wiremock.client.WireMock;
3234
import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo;
3335
import com.github.tomakehurst.wiremock.junit5.WireMockTest;
3436
import java.io.IOException;
@@ -37,6 +39,7 @@
3739
import java.util.concurrent.CancellationException;
3840
import java.util.concurrent.CompletionException;
3941
import org.junit.jupiter.api.BeforeAll;
42+
import org.junit.jupiter.api.BeforeEach;
4043
import org.junit.jupiter.api.Test;
4144
import org.junit.jupiter.params.ParameterizedTest;
4245
import org.junit.jupiter.params.provider.ValueSource;
@@ -79,6 +82,11 @@ public static void init(WireMockRuntimeInfo wm) throws IOException {
7982
testFile = new RandomTempFile(TEST_KEY, OBJ_SIZE);
8083
}
8184

85+
@BeforeEach
86+
void resetWireMock() {
87+
WireMock.reset();
88+
}
89+
8290
private static S3AsyncClient s3AsyncClient(boolean multipartEnabled) {
8391
return S3AsyncClient.builder()
8492
.multipartEnabled(multipartEnabled)
@@ -90,7 +98,7 @@ private static S3AsyncClient s3AsyncClient(boolean multipartEnabled) {
9098
}
9199

92100
private static void assertMockOnFailure(TransferListener transferListenerMock) {
93-
Mockito.verify(transferListenerMock, times(1)).transferFailed(ArgumentMatchers.any());
101+
Mockito.verify(transferListenerMock, timeout(1000).times(1)).transferFailed(ArgumentMatchers.any());
94102
Mockito.verify(transferListenerMock, times(1)).transferInitiated(ArgumentMatchers.any());
95103
Mockito.verify(transferListenerMock, times(0)).transferComplete(ArgumentMatchers.any());
96104
}
@@ -207,9 +215,8 @@ void listeners_reports_ProgressWhenSuccess(boolean multipartEnabled) {
207215
assertThat(transferListener.isTransferInitiated()).isTrue();
208216
Mockito.verify(transferListenerMock, times(0)).transferFailed(ArgumentMatchers.any());
209217
Mockito.verify(transferListenerMock, times(1)).transferInitiated(ArgumentMatchers.any());
210-
Mockito.verify(transferListenerMock, times(1)).transferComplete(ArgumentMatchers.any());
218+
Mockito.verify(transferListenerMock, timeout(1000).times(1)).transferComplete(ArgumentMatchers.any());
211219

212-
// when false, the generic S3 TM will read 16KiB chunks, so OBJ_SIZE / 16KiB = 16MiB / 16KiB = 1024
213220
int numTimesBytesTransferred = multipartEnabled ? 2 : 1024;
214221
Mockito.verify(transferListenerMock, times(numTimesBytesTransferred)).bytesTransferred(ArgumentMatchers.any());
215222
}

0 commit comments

Comments
 (0)