Author: markt
Date: Mon Sep 10 11:22:24 2018
New Revision: 1840453
URL: http://svn.apache.org/viewvc?rev=1840453&view=rev
Log:
Split large test in two to reduce running time with running tests in parallel
Added:
tomcat/trunk/test/org/apache/catalina/servlets/DefaultServletEncodingBaseTest.java
- copied, changed from r1840452,
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncoding.java
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncodingWithBom.java
(with props)
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncodingWithoutBom.java
(with props)
Removed:
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncoding.java
Copied:
tomcat/trunk/test/org/apache/catalina/servlets/DefaultServletEncodingBaseTest.java
(from r1840452,
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncoding.java)
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/servlets/DefaultServletEncodingBaseTest.java?p2=tomcat/trunk/test/org/apache/catalina/servlets/DefaultServletEncodingBaseTest.java&p1=tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncoding.java&r1=1840452&r2=1840453&rev=1840453&view=diff
==============================================================================
---
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncoding.java
(original)
+++
tomcat/trunk/test/org/apache/catalina/servlets/DefaultServletEncodingBaseTest.java
Mon Sep 10 11:22:24 2018
@@ -36,6 +36,7 @@ import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
import org.apache.catalina.Context;
import org.apache.catalina.Wrapper;
@@ -45,12 +46,19 @@ import org.apache.tomcat.util.buf.B2CCon
import org.apache.tomcat.util.buf.ByteChunk;
import org.apache.tomcat.util.http.parser.MediaType;
+/*
+ * Note: This test is split using two base classes. This is because, as a
single
+ * test, it takes so long to run it dominates the time taken to run the
+ * tests when running tests using multiple threads. For example, on a
+ * system with 12 cores, the tests take ~5 minutes per connector with
this
+ * test as a single test and ~3.5 minutes per connector with this test
+ * split in two.
+ */
@RunWith(Parameterized.class)
-public class TestDefaultServletEncoding extends TomcatBaseTest {
+public abstract class DefaultServletEncodingBaseTest extends TomcatBaseTest {
- @Parameterized.Parameters(name = "{index}: contextEnc[{0}], fileEnc[{1}],
useBom[{2}],"
- + " target[{3}], useInclude[{4}], outputEnc[{5}],
callSetCharacterEnc[{6}],"
- + " useWriter[{7}], expectedPass[{8}]")
+ @Parameterized.Parameters(name = "{index}: contextEnc[{0}], fileEnc[{1}],
target[{4}]," +
+ " useInclude[{5}], outputEnc[{6}], callSetCharacterEnc[{8}],
useWriter[{7}]")
public static Collection<Object[]> parameters() {
String[] encodings = new String[] {
@@ -65,41 +73,34 @@ public class TestDefaultServletEncoding
for (String contextResponseEncoding : encodings) {
for (String fileEncoding : encodings) {
- for (Boolean useBom : booleans) {
- for (String targetFile : targetFiles) {
- for (Boolean useInclude : booleans) {
- if (useInclude.booleanValue()) {
- for (String outputEncoding : encodings) {
- for (Boolean callSetCharacterEncoding :
booleans) {
- for (Boolean useWriter : booleans) {
- Boolean expected =
getExpected(fileEncoding, useBom,
- targetFile, outputEncoding,
- callSetCharacterEncoding,
useWriter);
-
- parameterSets.add(new Object[] {
- contextResponseEncoding,
fileEncoding, useBom,
- targetFile, useInclude,
outputEncoding,
- callSetCharacterEncoding,
useWriter, expected
- });
- }
+ for (String targetFile : targetFiles) {
+ for (Boolean useInclude : booleans) {
+ if (useInclude.booleanValue()) {
+ for (String outputEncoding : encodings) {
+ for (Boolean callSetCharacterEncoding :
booleans) {
+ for (Boolean useWriter : booleans) {
+ parameterSets.add(new Object[] {
contextResponseEncoding,
+ fileEncoding, targetFile,
+ useInclude, outputEncoding,
+ callSetCharacterEncoding,
useWriter });
}
}
- } else {
- /*
- * Not using include so ignore outputEncoding,
- * callSetCharacterEncoding and useWriter
- *
- * Tests that do not use include are always
expected to
- * pass.
- */
- String encoding = targetFile;
- if (encoding.endsWith("-bom")) {
- encoding = encoding.substring(0,
encoding.length() - 4);
- }
- parameterSets.add(new Object[] {
contextResponseEncoding,
- fileEncoding, useBom, targetFile,
useInclude, encoding,
- Boolean.FALSE, Boolean.FALSE,
Boolean.TRUE });
}
+ } else {
+ /*
+ * Not using include so ignore outputEncoding,
+ * callSetCharacterEncoding and useWriter
+ *
+ * Tests that do not use include are always
expected to
+ * pass.
+ */
+ String encoding = targetFile;
+ if (encoding.endsWith("-bom")) {
+ encoding = encoding.substring(0,
encoding.length() - 4);
+ }
+ parameterSets.add(new Object[] {
contextResponseEncoding, fileEncoding,
+ targetFile, useInclude, encoding,
Boolean.FALSE,
+ Boolean.FALSE });
}
}
}
@@ -110,22 +111,22 @@ public class TestDefaultServletEncoding
}
- private static Boolean getExpected(String fileEncoding, Boolean useBom,
String targetFile,
- String outputEncoding, Boolean callSetCharacterEncoding, Boolean
useWriter) {
- if (useWriter.booleanValue() ||
callSetCharacterEncoding.booleanValue()) {
+ private static boolean getExpected(String fileEncoding, boolean useBom,
String targetFile,
+ String outputEncoding, boolean callSetCharacterEncoding, boolean
useWriter) {
+ if (useWriter || callSetCharacterEncoding) {
/*
* Using a writer or setting the output character encoding means
the
* response will specify a character set. These cases therefore
* reduce to can the file be read with the correct encoding.
* (Assuming any BOM is always skipped in the included output.)
*/
- if (targetFile.endsWith("-bom") && useBom.booleanValue() ||
+ if (targetFile.endsWith("-bom") && useBom ||
targetFile.startsWith(fileEncoding) ||
targetFile.equals("cp1252") &&
fileEncoding.equals("iso-8859-1") ||
targetFile.equals("iso-8859-1") &&
fileEncoding.equals("cp1252")) {
- return Boolean.TRUE;
+ return true;
} else {
- return Boolean.FALSE;
+ return false;
}
} else if (!(targetFile.startsWith(outputEncoding) ||
targetFile.equals("cp1252") &&
outputEncoding.equals("iso-8859-1") ||
@@ -138,39 +139,38 @@ public class TestDefaultServletEncoding
* cp1252, the bytes vary by character set.
* (Assuming any BOM is always skipped in the included output.)
*/
- return Boolean.FALSE;
+ return false;
} else {
- return Boolean.TRUE;
+ return true;
}
}
- private final String contextResponseEncoding;
- private final String fileEncoding;
- private final boolean useBom;
- private final String targetFile;
- private final boolean useInclude;
- private final String outputEncoding;
- private final boolean callSetCharacterEncoding;
- private final boolean useWriter;
- private final boolean expectedPass;
-
- public TestDefaultServletEncoding(String contextResponseEncoding, String
fileEncoding,
- boolean useBom, String targetFile, boolean useInclude, String
outputEncoding,
- boolean callSetCharacterEncoding, boolean useWriter, boolean
expectedPass) {
- this.contextResponseEncoding = contextResponseEncoding;
- this.fileEncoding = fileEncoding;
- this.useBom = useBom;
- this.targetFile = targetFile;
- this.useInclude = useInclude;
- this.outputEncoding = outputEncoding;
- this.callSetCharacterEncoding = callSetCharacterEncoding;
- this.useWriter = useWriter;
- this.expectedPass = expectedPass;
- }
+ @Parameter(0)
+ public String contextResponseEncoding;
+ @Parameter(1)
+ public String fileEncoding;
+ @Parameter(2)
+ public String targetFile;
+ @Parameter(3)
+ public boolean useInclude;
+ @Parameter(4)
+ public String outputEncoding;
+ @Parameter(5)
+ public boolean callSetCharacterEncoding;
+ @Parameter(6)
+ public boolean useWriter;
+
+
+ protected abstract boolean getUseBom();
+
@Test
public void testEncoding() throws Exception {
+
+ boolean expectedPass = getExpected(fileEncoding, getUseBom(),
targetFile, outputEncoding,
+ callSetCharacterEncoding, useWriter);
+
Tomcat tomcat = getTomcatInstance();
File appDir = new File("test/webapp");
@@ -178,7 +178,7 @@ public class TestDefaultServletEncoding
ctxt.setResponseCharacterEncoding(contextResponseEncoding);
Wrapper defaultServlet = Tomcat.addServlet(ctxt, "default",
DefaultServlet.class.getName());
defaultServlet.addInitParameter("fileEncoding", fileEncoding);
- defaultServlet.addInitParameter("useBomIfPresent",
Boolean.toString(useBom));
+ defaultServlet.addInitParameter("useBomIfPresent",
Boolean.toString(getUseBom()));
ctxt.addServletMappingDecoded("/", "default");
Added:
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncodingWithBom.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncodingWithBom.java?rev=1840453&view=auto
==============================================================================
---
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncodingWithBom.java
(added)
+++
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncodingWithBom.java
Mon Sep 10 11:22:24 2018
@@ -0,0 +1,26 @@
+/*
+ * 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.catalina.servlets;
+
+
+public class TestDefaultServletEncodingWithBom extends
DefaultServletEncodingBaseTest {
+
+ @Override
+ protected boolean getUseBom() {
+ return true;
+ }
+}
Propchange:
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncodingWithBom.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncodingWithoutBom.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncodingWithoutBom.java?rev=1840453&view=auto
==============================================================================
---
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncodingWithoutBom.java
(added)
+++
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncodingWithoutBom.java
Mon Sep 10 11:22:24 2018
@@ -0,0 +1,26 @@
+/*
+ * 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.catalina.servlets;
+
+
+public class TestDefaultServletEncodingWithoutBom extends
DefaultServletEncodingBaseTest {
+
+ @Override
+ protected boolean getUseBom() {
+ return false;
+ }
+}
Propchange:
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServletEncodingWithoutBom.java
------------------------------------------------------------------------------
svn:eol-style = native
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]