1616import io .vertx .core .buffer .Buffer ;
1717import io .vertx .core .http .*;
1818import io .vertx .core .impl .Utils ;
19+ import io .vertx .test .core .Repeat ;
1920import io .vertx .test .core .TestUtils ;
2021import io .vertx .test .http .HttpTestBase ;
2122import org .junit .Assume ;
3334import java .util .Collections ;
3435import java .util .List ;
3536import java .util .function .BiConsumer ;
37+ import java .util .function .Consumer ;
3638
3739public abstract class HttpClientFileUploadTest extends HttpTestBase {
3840
@@ -173,6 +175,7 @@ public void testFileUploadFormMultipart32K() throws Exception {
173175 testFileUploadFormMultipart (32 * 1024 , false );
174176 }
175177
178+ @ Repeat (times = 1000 )
176179 @ Test
177180 public void testFileUploadFormMultipart32M () throws Exception {
178181 Assume .assumeTrue (!Utils .isWindows ());
@@ -195,14 +198,14 @@ private void testFileUploadFormMultipart(int size, boolean memory) throws Except
195198 ClientMultipartForm form = ClientMultipartForm .multipartForm ()
196199 .attribute ("toolkit" , "vert.x" )
197200 .attribute ("runtime" , "jvm" );
198- testFileUploadFormMultipart (form , Collections .singletonList (upload ), (req , uploads ) -> {
201+ List < Upload > uploads = testFileUploadFormMultipart (form , Collections .singletonList (upload ), (req ) -> {
199202 assertEquals ("vert.x" , req .getFormAttribute ("toolkit" ));
200203 assertEquals ("jvm" , req .getFormAttribute ("runtime" ));
201- assertEquals (1 , uploads .size ());
202- assertEquals ("test" , uploads .get (0 ).name );
203- assertEquals ("test.txt" , uploads .get (0 ).filename );
204- assertEquals (content , uploads .get (0 ).data );
205204 });
205+ assertEquals (1 , uploads .size ());
206+ assertEquals ("test" , uploads .get (0 ).name );
207+ assertEquals ("test.txt" , uploads .get (0 ).filename );
208+ assertEquals (content , uploads .get (0 ).data );
206209 }
207210
208211 @ Test
@@ -214,30 +217,30 @@ public void testFileUploadsFormMultipart() throws Exception {
214217 Upload .fileUpload ("test2" , "test2.txt" , content2 )
215218 );
216219 ClientMultipartForm form = ClientMultipartForm .multipartForm ();
217- testFileUploadFormMultipart (form , toUpload , (req , uploads ) -> {
218- assertEquals (2 , uploads .size ());
219- assertEquals ("test1" , uploads .get (0 ).name );
220- assertEquals ("test1.txt" , uploads .get (0 ).filename );
221- assertEquals ("UTF-8" , uploads .get (0 ).charset );
222- assertEquals (content1 , uploads .get (0 ).data );
223- assertEquals ("test2" , uploads .get (1 ).name );
224- assertEquals ("test2.txt" , uploads .get (1 ).filename );
225- assertEquals ("UTF-8" , uploads .get (1 ).charset );
226- assertEquals (content2 , uploads .get (1 ).data );
220+ List <Upload > uploads = testFileUploadFormMultipart (form , toUpload , (req ) -> {
227221 });
222+ assertEquals (2 , uploads .size ());
223+ assertEquals ("test1" , uploads .get (0 ).name );
224+ assertEquals ("test1.txt" , uploads .get (0 ).filename );
225+ assertEquals ("UTF-8" , uploads .get (0 ).charset );
226+ assertEquals (content1 , uploads .get (0 ).data );
227+ assertEquals ("test2" , uploads .get (1 ).name );
228+ assertEquals ("test2.txt" , uploads .get (1 ).filename );
229+ assertEquals ("UTF-8" , uploads .get (1 ).charset );
230+ assertEquals (content2 , uploads .get (1 ).data );
228231 }
229232
230233 @ Test
231234 public void testFileUploadsFormMultipartWithCharset () throws Exception {
232235 Buffer content = Buffer .buffer (TestUtils .randomAlphaString (16 ));
233236 List <Upload > toUpload = Collections .singletonList (Upload .fileUpload ("test1" , "test1.txt" , content ));
234237 ClientMultipartForm form = ClientMultipartForm .multipartForm ().charset (StandardCharsets .ISO_8859_1 );
235- testFileUploadFormMultipart (form , toUpload , (req , uploads ) -> {
236- assertEquals (1 , uploads .size ());
237- assertEquals ("test1" , uploads .get (0 ).name );
238- assertEquals ("test1.txt" , uploads .get (0 ).filename );
239- assertEquals ("ISO-8859-1" , uploads .get (0 ).charset );
238+ List <Upload > uploads = testFileUploadFormMultipart (form , toUpload , (req ) -> {
240239 });
240+ assertEquals (1 , uploads .size ());
241+ assertEquals ("test1" , uploads .get (0 ).name );
242+ assertEquals ("test1.txt" , uploads .get (0 ).filename );
243+ assertEquals ("ISO-8859-1" , uploads .get (0 ).charset );
241244 }
242245
243246 @ Test
@@ -249,15 +252,15 @@ public void testFileUploadsSameNameFormMultipart() throws Exception {
249252 Upload .fileUpload ("test" , "test2.txt" , content2 )
250253 );
251254 ClientMultipartForm form = ClientMultipartForm .multipartForm ();
252- testFileUploadFormMultipart (form , toUpload , (req , uploads ) -> {
253- assertEquals (2 , uploads .size ());
254- assertEquals ("test" , uploads .get (0 ).name );
255- assertEquals ("test1.txt" , uploads .get (0 ).filename );
256- assertEquals (content1 , uploads .get (0 ).data );
257- assertEquals ("test" , uploads .get (1 ).name );
258- assertEquals ("test2.txt" , uploads .get (1 ).filename );
259- assertEquals (content2 , uploads .get (1 ).data );
255+ List <Upload > uploads = testFileUploadFormMultipart (form , toUpload , (req ) -> {
260256 });
257+ assertEquals (2 , uploads .size ());
258+ assertEquals ("test" , uploads .get (0 ).name );
259+ assertEquals ("test1.txt" , uploads .get (0 ).filename );
260+ assertEquals (content1 , uploads .get (0 ).data );
261+ assertEquals ("test" , uploads .get (1 ).name );
262+ assertEquals ("test2.txt" , uploads .get (1 ).filename );
263+ assertEquals (content2 , uploads .get (1 ).data );
261264 }
262265
263266 @ Test
@@ -269,22 +272,22 @@ public void testFileUploadsSameNameFormMultipartDisableMultipartMixed() throws E
269272 Upload .fileUpload ("test" , "test2.txt" , content2 )
270273 );
271274 ClientMultipartForm form = ClientMultipartForm .multipartForm ().mixed (false );
272- testFileUploadFormMultipart (form , toUpload , (req , uploads ) -> {
273- assertEquals (2 , uploads .size ());
274- assertEquals ("test" , uploads .get (0 ).name );
275- assertEquals ("test1.txt" , uploads .get (0 ).filename );
276- assertEquals (content1 , uploads .get (0 ).data );
277- assertEquals ("test" , uploads .get (1 ).name );
278- assertEquals ("test2.txt" , uploads .get (1 ).filename );
279- assertEquals (content2 , uploads .get (1 ).data );
275+ List <Upload > uploads = testFileUploadFormMultipart (form , toUpload , (req ) -> {
280276 });
277+ assertEquals (2 , uploads .size ());
278+ assertEquals ("test" , uploads .get (0 ).name );
279+ assertEquals ("test1.txt" , uploads .get (0 ).filename );
280+ assertEquals (content1 , uploads .get (0 ).data );
281+ assertEquals ("test" , uploads .get (1 ).name );
282+ assertEquals ("test2.txt" , uploads .get (1 ).filename );
283+ assertEquals (content2 , uploads .get (1 ).data );
281284 }
282285
283- private void testFileUploadFormMultipart (
286+ private List < Upload > testFileUploadFormMultipart (
284287 ClientMultipartForm form ,
285288 List <Upload > toUpload ,
286- BiConsumer <HttpServerRequest ,
287- List <Upload >> checker ) throws Exception {
289+ Consumer <HttpServerRequest > checker ) throws Exception {
290+ List <Upload > uploads = Collections . synchronizedList ( new ArrayList <>());
288291 File [] testFiles = new File [toUpload .size ()];
289292 for (int i = 0 ;i < testFiles .length ;i ++) {
290293 Upload upload = toUpload .get (i );
@@ -300,7 +303,6 @@ private void testFileUploadFormMultipart(
300303
301304 server .requestHandler (req -> {
302305 req .setExpectMultipart (true );
303- List <Upload > uploads = new ArrayList <>();
304306 req .uploadHandler (upload -> {
305307 Buffer fileBuffer = Buffer .buffer ();
306308 assertEquals ("text/plain" , upload .contentType ());
@@ -310,7 +312,6 @@ private void testFileUploadFormMultipart(
310312 });
311313 });
312314 req .endHandler (v -> {
313- checker .accept (req , uploads );
314315 req .response ().end ();
315316 });
316317 });
@@ -322,6 +323,8 @@ private void testFileUploadFormMultipart(
322323 .expecting (HttpResponseExpectation .SC_OK )
323324 .compose (HttpClientResponse ::body ))
324325 .await ();
326+
327+ return toUpload ;
325328 }
326329
327330 static class Upload {
0 commit comments