This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-fileupload.git


The following commit(s) were added to refs/heads/master by this push:
     new a4db368  Refactor to add JakartaProgressListenerTest
a4db368 is described below

commit a4db368a5eec7d26bdb85f627a0058df5914e01e
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Mon May 22 20:41:01 2023 -0400

    Refactor to add JakartaProgressListenerTest
---
 .../fileupload2/AbstractProgressListenerTest.java  |  58 +++++------
 .../commons/fileupload2/AbstractSizesTest.java     |   6 +-
 .../apache/commons/fileupload2/AbstractTest.java   |  38 ++++++++
 ...sTest.java => JakartaProgressListenerTest.java} |  16 ++-
 .../fileupload2/jakarta/JakartaSizesTest.java      |   9 +-
 .../javax/JavaxProgressListenerTest.java           | 108 +++------------------
 .../commons/fileupload2/javax/JavaxSizesTest.java  |   8 +-
 7 files changed, 89 insertions(+), 154 deletions(-)

diff --git 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java
 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractProgressListenerTest.java
similarity index 69%
copy from 
commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java
copy to 
commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractProgressListenerTest.java
index cd3650a..110ed8a 100644
--- 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java
+++ 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractProgressListenerTest.java
@@ -14,30 +14,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.fileupload2.javax;
+package org.apache.commons.fileupload2;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 
-import org.apache.commons.fileupload2.Constants;
-import org.apache.commons.fileupload2.FileItemIterator;
-import org.apache.commons.fileupload2.FileItemStream;
-import org.apache.commons.fileupload2.FileUploadException;
-import org.apache.commons.fileupload2.ProgressListener;
 import org.junit.jupiter.api.Test;
 
 /**
  * Tests the {@link ProgressListener}.
+ *
+ * @param <F> The subclass of FileUpload.
+ * @param <R> The type of FileUpload request.
  */
-public class JavaxProgressListenerTest {
+public abstract class AbstractProgressListenerTest<F extends FileUpload<R>, R> 
extends AbstractTest<F, R> {
 
-    private static class ProgressListenerImpl implements ProgressListener {
+    protected static class ProgressListenerImpl implements ProgressListener {
 
         private final long expectedContentLength;
 
@@ -71,24 +68,24 @@ public class JavaxProgressListenerTest {
 
     }
 
-    private void runTest(final int itemCount, final long contentLength, final 
JavaxMockHttpServletRequest request) throws FileUploadException, IOException {
-        final ServletFileUpload upload = new ServletFileUpload();
+    protected void runTest(final int itemCount, final long contentLength, 
final R request) throws FileUploadException, IOException {
+        final F upload = newFileUpload();
         final ProgressListenerImpl listener = new 
ProgressListenerImpl(contentLength, itemCount);
         upload.setProgressListener(listener);
         final FileItemIterator iter = upload.getItemIterator(request);
         for (int i = 0; i < itemCount; i++) {
+            final int idxI = i;
             final FileItemStream fileItemStream = iter.next();
             try (final InputStream inputStream = fileItemStream.openStream()) {
-                for (int j = 0; j < 16384 + i; j++) {
-                    /**
-                     * This used to be assertEquals((byte) j, (byte) 
istream.read()); but this seems to trigger a bug in JRockit, so we express the 
same like
-                     * this:
-                     */
+                for (int j = 0; j < 16_384 + i; j++) {
+                    final int idxJ = j;
+                    //
+                    // This used to be assertEquals((byte) j, (byte) 
istream.read()); but this seems to trigger a bug in JRockit, so we express the 
same like
+                    // this:
+                    //
                     final byte b1 = (byte) j;
                     final byte b2 = (byte) inputStream.read();
-                    if (b1 != b2) {
-                        fail("Expected " + b1 + ", got " + b2);
-                    }
+                    assertEquals(b1, b2, () -> String.format("itemCount = %,d, 
i = %,d, j = %,d", itemCount, idxI, idxJ));
                 }
                 assertEquals(-1, inputStream.read());
             }
@@ -101,10 +98,10 @@ public class JavaxProgressListenerTest {
      * Parse a very long file upload by using a progress listener.
      */
     @Test
-    public void testProgressListener() throws Exception {
-        final int NUM_ITEMS = 512;
+    public void testProgressListener() throws IOException {
+        final int numItems = 512;
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        for (int i = 0; i < NUM_ITEMS; i++) {
+        for (int i = 0; i < numItems; i++) {
             final String header = "-----1234\r\n" + "Content-Disposition: 
form-data; name=\"field" + (i + 1) + "\"\r\n" + "\r\n";
             baos.write(header.getBytes(StandardCharsets.US_ASCII));
             for (int j = 0; j < 16384 + i; j++) {
@@ -113,17 +110,12 @@ public class JavaxProgressListenerTest {
             baos.write("\r\n".getBytes(StandardCharsets.US_ASCII));
         }
         baos.write("-----1234--\r\n".getBytes(StandardCharsets.US_ASCII));
-        final byte[] contents = baos.toByteArray();
-
-        JavaxMockHttpServletRequest request = new 
JavaxMockHttpServletRequest(contents, Constants.CONTENT_TYPE);
-        runTest(NUM_ITEMS, contents.length, request);
-        request = new JavaxMockHttpServletRequest(contents, 
Constants.CONTENT_TYPE) {
-            @Override
-            public int getContentLength() {
-                return -1;
-            }
-        };
-        runTest(NUM_ITEMS, contents.length, request);
+        final byte[] requestBytes = baos.toByteArray();
+
+        R request = newMockHttpServletRequest(requestBytes, null, null);
+        runTest(numItems, requestBytes.length, request);
+        request = newMockHttpServletRequest(requestBytes, -1, null);
+        runTest(numItems, requestBytes.length, request);
     }
 
 }
diff --git 
a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractSizesTest.java
 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractSizesTest.java
index a062f67..0224aa1 100644
--- 
a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractSizesTest.java
+++ 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractSizesTest.java
@@ -38,11 +38,7 @@ import org.junit.jupiter.api.Test;
  * @param <F> The subclass of FileUpload.
  * @param <R> The type of FileUpload request.
  */
-public abstract class AbstractSizesTest<F extends FileUpload<R>, R> {
-
-    protected abstract F newFileUpload();
-
-    protected abstract R newMockHttpServletRequest(String request, Integer 
overrideContenLength, Integer overrideReadLimit);
+public abstract class AbstractSizesTest<F extends FileUpload<R>, R> extends 
AbstractTest<F, R> {
 
     /**
      * Checks, whether limiting the file size works.
diff --git 
a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractTest.java
 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractTest.java
new file mode 100644
index 0000000..8858294
--- /dev/null
+++ 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractTest.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.fileupload2;
+
+import java.nio.charset.StandardCharsets;
+
+/**
+ * Abstract test.
+ *
+ * @param <F> The subclass of FileUpload.
+ * @param <R> The type of FileUpload request.
+ */
+public abstract class AbstractTest<F extends FileUpload<R>, R> {
+
+    protected abstract F newFileUpload();
+    // empty
+
+    protected abstract R newMockHttpServletRequest(byte[] request, Integer 
overrideContenLength, Integer overrideReadLimit);
+
+    protected R newMockHttpServletRequest(final String request, final Integer 
overrideContenLength, final Integer overrideReadLimit) {
+        return 
newMockHttpServletRequest(request.getBytes(StandardCharsets.US_ASCII), 
overrideContenLength, overrideReadLimit);
+    }
+
+}
diff --git 
a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java
 
b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java
similarity index 63%
copy from 
commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java
copy to 
commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java
index e6ca4d5..f6696e3 100644
--- 
a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java
+++ 
b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java
@@ -17,28 +17,26 @@
 package org.apache.commons.fileupload2.jakarta;
 
 import java.io.ByteArrayInputStream;
-import java.nio.charset.StandardCharsets;
 
+import org.apache.commons.fileupload2.AbstractProgressListenerTest;
 import org.apache.commons.fileupload2.Constants;
-import org.apache.commons.fileupload2.AbstractSizesTest;
-import org.apache.commons.fileupload2.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload2.ProgressListener;
 
 import jakarta.servlet.http.HttpServletRequest;
 
 /**
- * Unit test for items with varying sizes.
+ * Tests the {@link ProgressListener}.
  */
-public class JakartaSizesTest extends 
AbstractSizesTest<JakartaServletFileUpload, HttpServletRequest> {
+public class JakartaProgressListenerTest extends 
AbstractProgressListenerTest<JakartaServletFileUpload, HttpServletRequest> {
 
     @Override
     protected JakartaServletFileUpload newFileUpload() {
-        return new JakartaServletFileUpload(new DiskFileItemFactory());
+        return new JakartaServletFileUpload();
     }
 
     @Override
-    protected JakartaMockHttpServletRequest newMockHttpServletRequest(final 
String request, final Integer overrideContenLength, final Integer 
overrideReadLimit) {
-        final byte[] requestData = request.getBytes(StandardCharsets.US_ASCII);
-        return new JakartaMockHttpServletRequest(new 
ByteArrayInputStream(requestData), overrideContenLength != null ? 
overrideContenLength : requestData.length,
+    protected HttpServletRequest newMockHttpServletRequest(final byte[] 
request, final Integer overrideContenLength, final Integer overrideReadLimit) {
+        return new JakartaMockHttpServletRequest(new 
ByteArrayInputStream(request), overrideContenLength != null ? 
overrideContenLength : request.length,
                 Constants.CONTENT_TYPE, overrideReadLimit != null ? 
overrideReadLimit : -1);
     }
 
diff --git 
a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java
 
b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java
index e6ca4d5..f4fc352 100644
--- 
a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java
+++ 
b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java
@@ -17,10 +17,9 @@
 package org.apache.commons.fileupload2.jakarta;
 
 import java.io.ByteArrayInputStream;
-import java.nio.charset.StandardCharsets;
 
-import org.apache.commons.fileupload2.Constants;
 import org.apache.commons.fileupload2.AbstractSizesTest;
+import org.apache.commons.fileupload2.Constants;
 import org.apache.commons.fileupload2.disk.DiskFileItemFactory;
 
 import jakarta.servlet.http.HttpServletRequest;
@@ -36,9 +35,9 @@ public class JakartaSizesTest extends 
AbstractSizesTest<JakartaServletFileUpload
     }
 
     @Override
-    protected JakartaMockHttpServletRequest newMockHttpServletRequest(final 
String request, final Integer overrideContenLength, final Integer 
overrideReadLimit) {
-        final byte[] requestData = request.getBytes(StandardCharsets.US_ASCII);
-        return new JakartaMockHttpServletRequest(new 
ByteArrayInputStream(requestData), overrideContenLength != null ? 
overrideContenLength : requestData.length,
+    protected JakartaMockHttpServletRequest newMockHttpServletRequest(final 
byte[] request, final Integer overrideContenLength,
+            final Integer overrideReadLimit) {
+        return new JakartaMockHttpServletRequest(new 
ByteArrayInputStream(request), overrideContenLength != null ? 
overrideContenLength : request.length,
                 Constants.CONTENT_TYPE, overrideReadLimit != null ? 
overrideReadLimit : -1);
     }
 
diff --git 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java
 
b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java
index cd3650a..4938fec 100644
--- 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java
+++ 
b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java
@@ -16,114 +16,28 @@
  */
 package org.apache.commons.fileupload2.javax;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
+import java.io.ByteArrayInputStream;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
+import javax.servlet.http.HttpServletRequest;
 
+import org.apache.commons.fileupload2.AbstractProgressListenerTest;
 import org.apache.commons.fileupload2.Constants;
-import org.apache.commons.fileupload2.FileItemIterator;
-import org.apache.commons.fileupload2.FileItemStream;
-import org.apache.commons.fileupload2.FileUploadException;
 import org.apache.commons.fileupload2.ProgressListener;
-import org.junit.jupiter.api.Test;
 
 /**
  * Tests the {@link ProgressListener}.
  */
-public class JavaxProgressListenerTest {
-
-    private static class ProgressListenerImpl implements ProgressListener {
-
-        private final long expectedContentLength;
-
-        private final int expectedItems;
-
-        private Long bytesRead;
-
-        private Integer items;
-
-        ProgressListenerImpl(final long contentLength, final int itemCount) {
-            expectedContentLength = contentLength;
-            expectedItems = itemCount;
-        }
-
-        void checkFinished() {
-            assertEquals(expectedContentLength, bytesRead.longValue());
-            assertEquals(expectedItems, items.intValue());
-        }
-
-        @Override
-        public void update(final long actualBytesRead, final long 
actualContentLength, final int actualItems) {
-            assertTrue(actualBytesRead >= 0 && actualBytesRead <= 
expectedContentLength);
-            assertTrue(actualContentLength == -1 || actualContentLength == 
expectedContentLength);
-            assertTrue(actualItems >= 0 && actualItems <= expectedItems);
-
-            assertTrue(bytesRead == null || actualBytesRead >= 
bytesRead.longValue());
-            bytesRead = Long.valueOf(actualBytesRead);
-            assertTrue(items == null || actualItems >= items.intValue());
-            items = Integer.valueOf(actualItems);
-        }
+public class JavaxProgressListenerTest extends 
AbstractProgressListenerTest<ServletFileUpload, HttpServletRequest> {
 
+    @Override
+    protected ServletFileUpload newFileUpload() {
+        return new ServletFileUpload();
     }
 
-    private void runTest(final int itemCount, final long contentLength, final 
JavaxMockHttpServletRequest request) throws FileUploadException, IOException {
-        final ServletFileUpload upload = new ServletFileUpload();
-        final ProgressListenerImpl listener = new 
ProgressListenerImpl(contentLength, itemCount);
-        upload.setProgressListener(listener);
-        final FileItemIterator iter = upload.getItemIterator(request);
-        for (int i = 0; i < itemCount; i++) {
-            final FileItemStream fileItemStream = iter.next();
-            try (final InputStream inputStream = fileItemStream.openStream()) {
-                for (int j = 0; j < 16384 + i; j++) {
-                    /**
-                     * This used to be assertEquals((byte) j, (byte) 
istream.read()); but this seems to trigger a bug in JRockit, so we express the 
same like
-                     * this:
-                     */
-                    final byte b1 = (byte) j;
-                    final byte b2 = (byte) inputStream.read();
-                    if (b1 != b2) {
-                        fail("Expected " + b1 + ", got " + b2);
-                    }
-                }
-                assertEquals(-1, inputStream.read());
-            }
-        }
-        assertTrue(!iter.hasNext());
-        listener.checkFinished();
-    }
-
-    /**
-     * Parse a very long file upload by using a progress listener.
-     */
-    @Test
-    public void testProgressListener() throws Exception {
-        final int NUM_ITEMS = 512;
-        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        for (int i = 0; i < NUM_ITEMS; i++) {
-            final String header = "-----1234\r\n" + "Content-Disposition: 
form-data; name=\"field" + (i + 1) + "\"\r\n" + "\r\n";
-            baos.write(header.getBytes(StandardCharsets.US_ASCII));
-            for (int j = 0; j < 16384 + i; j++) {
-                baos.write((byte) j);
-            }
-            baos.write("\r\n".getBytes(StandardCharsets.US_ASCII));
-        }
-        baos.write("-----1234--\r\n".getBytes(StandardCharsets.US_ASCII));
-        final byte[] contents = baos.toByteArray();
-
-        JavaxMockHttpServletRequest request = new 
JavaxMockHttpServletRequest(contents, Constants.CONTENT_TYPE);
-        runTest(NUM_ITEMS, contents.length, request);
-        request = new JavaxMockHttpServletRequest(contents, 
Constants.CONTENT_TYPE) {
-            @Override
-            public int getContentLength() {
-                return -1;
-            }
-        };
-        runTest(NUM_ITEMS, contents.length, request);
+    @Override
+    protected HttpServletRequest newMockHttpServletRequest(final byte[] 
request, final Integer overrideContenLength, final Integer overrideReadLimit) {
+        return new JavaxMockHttpServletRequest(new 
ByteArrayInputStream(request), overrideContenLength != null ? 
overrideContenLength : request.length,
+                Constants.CONTENT_TYPE, overrideReadLimit != null ? 
overrideReadLimit : -1);
     }
 
 }
diff --git 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesTest.java
 
b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesTest.java
index ebdc360..97140d5 100644
--- 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesTest.java
+++ 
b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesTest.java
@@ -17,12 +17,11 @@
 package org.apache.commons.fileupload2.javax;
 
 import java.io.ByteArrayInputStream;
-import java.nio.charset.StandardCharsets;
 
 import javax.servlet.http.HttpServletRequest;
 
-import org.apache.commons.fileupload2.Constants;
 import org.apache.commons.fileupload2.AbstractSizesTest;
+import org.apache.commons.fileupload2.Constants;
 import org.apache.commons.fileupload2.disk.DiskFileItemFactory;
 
 /**
@@ -36,9 +35,8 @@ public class JavaxSizesTest extends 
AbstractSizesTest<ServletFileUpload, HttpSer
     }
 
     @Override
-    protected JavaxMockHttpServletRequest newMockHttpServletRequest(final 
String request, final Integer overrideContenLength, final Integer 
overrideReadLimit) {
-        final byte[] requestData = request.getBytes(StandardCharsets.US_ASCII);
-        return new JavaxMockHttpServletRequest(new 
ByteArrayInputStream(requestData), overrideContenLength != null ? 
overrideContenLength : requestData.length,
+    protected JavaxMockHttpServletRequest newMockHttpServletRequest(final 
byte[] request, final Integer overrideContenLength, final Integer 
overrideReadLimit) {
+        return new JavaxMockHttpServletRequest(new 
ByteArrayInputStream(request), overrideContenLength != null ? 
overrideContenLength : request.length,
                 Constants.CONTENT_TYPE, overrideReadLimit != null ? 
overrideReadLimit : -1);
     }
 

Reply via email to