41
41
import static org .assertj .core .api .Assertions .assertThat ;
42
42
import static org .assertj .core .api .Assertions .assertThatThrownBy ;
43
43
import static org .mockito .ArgumentMatchers .any ;
44
- import static org .mockito .Mockito .doNothing ;
45
44
import static org .mockito .Mockito .never ;
46
45
import static org .mockito .Mockito .times ;
47
46
import static org .mockito .Mockito .verify ;
@@ -70,12 +69,11 @@ class S3MultiPartOutputStreamTest {
70
69
71
70
@ Test
72
71
void sendAbortForAnyExceptionWhileWriting () {
73
- when (mockedS3 .initiateMultipartUpload (any (InitiateMultipartUploadRequest . class )))
72
+ when (mockedS3 .initiateMultipartUpload (any ()))
74
73
.thenReturn (newInitiateMultipartUploadResult ());
75
- doNothing ().when (mockedS3 ).abortMultipartUpload (abortMultipartUploadRequestCaptor .capture ());
76
74
77
75
final RuntimeException testException = new RuntimeException ("test" );
78
- when (mockedS3 .uploadPart (any (UploadPartRequest . class )))
76
+ when (mockedS3 .uploadPart (any ()))
79
77
.thenThrow (testException );
80
78
81
79
assertThatThrownBy (() -> {
@@ -87,18 +85,17 @@ void sendAbortForAnyExceptionWhileWriting() {
87
85
88
86
verify (mockedS3 ).initiateMultipartUpload (any (InitiateMultipartUploadRequest .class ));
89
87
verify (mockedS3 ).uploadPart (any (UploadPartRequest .class ));
90
- verify (mockedS3 ).abortMultipartUpload (abortMultipartUploadRequestCaptor .getValue ());
88
+ verify (mockedS3 ).abortMultipartUpload (abortMultipartUploadRequestCaptor .capture ());
91
89
92
90
assertAbortMultipartUploadRequest (abortMultipartUploadRequestCaptor .getValue ());
93
91
}
94
92
95
93
@ Test
96
94
void sendAbortForAnyExceptionWhenClose () throws Exception {
97
- when (mockedS3 .initiateMultipartUpload (any (InitiateMultipartUploadRequest . class )))
95
+ when (mockedS3 .initiateMultipartUpload (any ()))
98
96
.thenReturn (newInitiateMultipartUploadResult ());
99
- doNothing ().when (mockedS3 ).abortMultipartUpload (abortMultipartUploadRequestCaptor .capture ());
100
97
101
- when (mockedS3 .uploadPart (any (UploadPartRequest . class )))
98
+ when (mockedS3 .uploadPart (any ()))
102
99
.thenThrow (RuntimeException .class );
103
100
104
101
final S3MultiPartOutputStream out = new S3MultiPartOutputStream (BUCKET_NAME , FILE_KEY , 10 , mockedS3 );
@@ -113,27 +110,27 @@ void sendAbortForAnyExceptionWhenClose() throws Exception {
113
110
.isInstanceOf (RuntimeException .class );
114
111
115
112
verify (mockedS3 , never ()).completeMultipartUpload (any (CompleteMultipartUploadRequest .class ));
116
- verify (mockedS3 ).abortMultipartUpload (abortMultipartUploadRequestCaptor .getValue ());
113
+ verify (mockedS3 ).abortMultipartUpload (abortMultipartUploadRequestCaptor .capture ());
117
114
118
115
assertAbortMultipartUploadRequest (abortMultipartUploadRequestCaptor .getValue ());
119
116
}
120
117
121
118
@ Test
122
119
void writesOneByte () throws Exception {
123
- when (mockedS3 .initiateMultipartUpload (any (InitiateMultipartUploadRequest . class )))
120
+ when (mockedS3 .initiateMultipartUpload (any ()))
124
121
.thenReturn (newInitiateMultipartUploadResult ());
125
- when (mockedS3 .uploadPart (uploadPartRequestCaptor . capture ()))
122
+ when (mockedS3 .uploadPart (any ()))
126
123
.thenReturn (newUploadPartResult (1 , "SOME_ETAG" ));
127
- when (mockedS3 .completeMultipartUpload (completeMultipartUploadRequestCaptor . capture ()))
124
+ when (mockedS3 .completeMultipartUpload (any ()))
128
125
.thenReturn (new CompleteMultipartUploadResult ());
129
126
130
127
try (final S3MultiPartOutputStream out = new S3MultiPartOutputStream (BUCKET_NAME , FILE_KEY , 100 , mockedS3 )) {
131
128
out .write (1 );
132
129
}
133
130
134
131
verify (mockedS3 ).initiateMultipartUpload (any (InitiateMultipartUploadRequest .class ));
135
- verify (mockedS3 ).uploadPart (any ( UploadPartRequest . class ));
136
- verify (mockedS3 ).completeMultipartUpload (any ( CompleteMultipartUploadRequest . class ));
132
+ verify (mockedS3 ).uploadPart (uploadPartRequestCaptor . capture ( ));
133
+ verify (mockedS3 ).completeMultipartUpload (completeMultipartUploadRequestCaptor . capture ( ));
137
134
138
135
assertUploadPartRequest (
139
136
uploadPartRequestCaptor .getValue (),
@@ -151,14 +148,14 @@ void writesMultipleMessages() throws Exception {
151
148
final int bufferSize = 10 ;
152
149
final byte [] message = new byte [bufferSize ];
153
150
154
- when (mockedS3 .initiateMultipartUpload (any (InitiateMultipartUploadRequest . class )))
151
+ when (mockedS3 .initiateMultipartUpload (any ()))
155
152
.thenReturn (newInitiateMultipartUploadResult ());
156
- when (mockedS3 .uploadPart (uploadPartRequestCaptor . capture ()))
153
+ when (mockedS3 .uploadPart (any ()))
157
154
.thenAnswer (a -> {
158
155
final UploadPartRequest up = a .getArgument (0 );
159
156
return newUploadPartResult (up .getPartNumber (), "SOME_TAG#" + up .getPartNumber ());
160
157
});
161
- when (mockedS3 .completeMultipartUpload (completeMultipartUploadRequestCaptor . capture ()))
158
+ when (mockedS3 .completeMultipartUpload (any ()))
162
159
.thenReturn (new CompleteMultipartUploadResult ());
163
160
164
161
final List <byte []> expectedMessagesList = new ArrayList <>();
@@ -172,8 +169,8 @@ void writesMultipleMessages() throws Exception {
172
169
}
173
170
174
171
verify (mockedS3 ).initiateMultipartUpload (any (InitiateMultipartUploadRequest .class ));
175
- verify (mockedS3 , times (3 )).uploadPart (any ( UploadPartRequest . class ));
176
- verify (mockedS3 ).completeMultipartUpload (any ( CompleteMultipartUploadRequest . class ));
172
+ verify (mockedS3 , times (3 )).uploadPart (uploadPartRequestCaptor . capture ( ));
173
+ verify (mockedS3 ).completeMultipartUpload (completeMultipartUploadRequestCaptor . capture ( ));
177
174
178
175
final List <UploadPartRequest > uploadRequests = uploadPartRequestCaptor .getAllValues ();
179
176
int counter = 0 ;
@@ -199,18 +196,18 @@ void writesTailMessages() throws Exception {
199
196
200
197
final List <UploadPartRequest > uploadPartRequests = new ArrayList <>();
201
198
202
- when (mockedS3 .initiateMultipartUpload (any (InitiateMultipartUploadRequest . class )))
199
+ when (mockedS3 .initiateMultipartUpload (any ()))
203
200
.thenReturn (newInitiateMultipartUploadResult ());
204
- when (mockedS3 .uploadPart (any (UploadPartRequest . class )))
201
+ when (mockedS3 .uploadPart (any ()))
205
202
.thenAnswer (a -> {
206
203
final UploadPartRequest up = a .getArgument (0 );
207
204
//emulate behave of S3 client otherwise we will get wrong array in the memory
208
205
up .setInputStream (new ByteArrayInputStream (up .getInputStream ().readAllBytes ()));
209
206
uploadPartRequests .add (up );
210
207
211
- return newUploadPartResult (up .getPartNumber (), "SOME_TAG #" + up .getPartNumber ());
208
+ return newUploadPartResult (up .getPartNumber (), "SOME_ETAG #" + up .getPartNumber ());
212
209
});
213
- when (mockedS3 .completeMultipartUpload (completeMultipartUploadRequestCaptor . capture ()))
210
+ when (mockedS3 .completeMultipartUpload (any ()))
214
211
.thenReturn (new CompleteMultipartUploadResult ());
215
212
216
213
final byte [] message = new byte [messageSize ];
@@ -235,6 +232,8 @@ void writesTailMessages() throws Exception {
235
232
verify (mockedS3 ).initiateMultipartUpload (any (InitiateMultipartUploadRequest .class ));
236
233
verify (mockedS3 , times (2 )).uploadPart (any (UploadPartRequest .class ));
237
234
verify (mockedS3 ).completeMultipartUpload (completeMultipartUploadRequestCaptor .capture ());
235
+ assertCompleteMultipartUploadRequest (completeMultipartUploadRequestCaptor .getValue (),
236
+ List .of (new PartETag (1 , "SOME_ETAG#1" ), new PartETag (2 , "SOME_ETAG#2" )));
238
237
}
239
238
240
239
private static InitiateMultipartUploadResult newInitiateMultipartUploadResult () {
0 commit comments