This is an automated email from the ASF dual-hosted git repository.
lihan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push:
new e0f6e0c641 Fix BZ66210
https://bz.apache.org/bugzilla/show_bug.cgi?id=66210 Use StringManager to
retrieve the expected txt in the current locale and then compare the actual
output to the locale specific expected text.
e0f6e0c641 is described below
commit e0f6e0c641fa36558bee8c83445f48767418994c
Author: lihan <[email protected]>
AuthorDate: Wed Aug 17 13:58:14 2022 +0800
Fix BZ66210
https://bz.apache.org/bugzilla/show_bug.cgi?id=66210
Use StringManager to retrieve the expected txt in the current locale and
then compare the actual output to the locale specific expected text.
---
.../tribes/group/TestGroupChannelOptionFlag.java | 24 ++++++++++++++++------
.../catalina/valves/TestErrorReportValve.java | 20 ++++++++----------
.../coyote/ajp/TestAbstractAjpProcessor.java | 14 ++++++++++---
test/org/apache/coyote/ajp/TesterAjpMessage.java | 21 ++++++++++++-------
test/org/apache/coyote/http2/TestFlowControl.java | 6 ++++--
test/org/apache/coyote/http2/TestHttp2Limits.java | 5 ++++-
6 files changed, 59 insertions(+), 31 deletions(-)
diff --git
a/test/org/apache/catalina/tribes/group/TestGroupChannelOptionFlag.java
b/test/org/apache/catalina/tribes/group/TestGroupChannelOptionFlag.java
index f90dd6e24e..3fa7e4839c 100644
--- a/test/org/apache/catalina/tribes/group/TestGroupChannelOptionFlag.java
+++ b/test/org/apache/catalina/tribes/group/TestGroupChannelOptionFlag.java
@@ -16,6 +16,7 @@
*/
package org.apache.catalina.tribes.group;
+import org.apache.tomcat.util.res.StringManager;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -26,6 +27,7 @@ import org.apache.catalina.tribes.ChannelException;
import org.apache.catalina.tribes.ChannelInterceptor;
public class TestGroupChannelOptionFlag {
+ private final StringManager sm =
StringManager.getManager(TestGroupChannelOptionFlag.class);
private GroupChannel channel = null;
@Before
@@ -47,6 +49,8 @@ public class TestGroupChannelOptionFlag {
@Test
public void testOptionConflict() throws Exception {
+ String errorMsgRegx = getTestOptionErrorMsgRegx();
+
boolean error = false;
channel.setOptionCheck(true);
ChannelInterceptor i = new TestInterceptor();
@@ -57,9 +61,9 @@ public class TestGroupChannelOptionFlag {
channel.addInterceptor(i);
try {
channel.start(Channel.DEFAULT);
- }catch ( ChannelException x ) {
- if (x.getMessage().contains("option flag conflict")) {
- error = true;
+ } catch (ChannelException x) {
+ if (x.getMessage().matches(errorMsgRegx)) {
+ error = true;
}
}
Assert.assertTrue(error);
@@ -67,6 +71,8 @@ public class TestGroupChannelOptionFlag {
@Test
public void testOptionNoConflict() throws Exception {
+ String errorMsgRegx = getTestOptionErrorMsgRegx();
+
boolean error = false;
channel.setOptionCheck(true);
ChannelInterceptor i = new TestInterceptor();
@@ -80,14 +86,20 @@ public class TestGroupChannelOptionFlag {
channel.addInterceptor(i);
try {
channel.start(Channel.DEFAULT);
- }catch ( ChannelException x ) {
- if (x.getMessage().contains("option flag conflict")) {
- error = true;
+ } catch (ChannelException x) {
+ if (x.getMessage().matches(errorMsgRegx)) {
+ error = true;
}
}
Assert.assertFalse(error);
}
+ private String getTestOptionErrorMsgRegx() {
+ String errorMsgRegx = sm.getString("groupChannel.optionFlag.conflict",
".+").replace("[", "\\[");
+ errorMsgRegx += "; No faulty members identified.";
+ return errorMsgRegx;
+ }
+
public static class TestInterceptor extends ChannelInterceptorBase {
// Just use base class
}
diff --git a/test/org/apache/catalina/valves/TestErrorReportValve.java
b/test/org/apache/catalina/valves/TestErrorReportValve.java
index 5de7f9ac5e..cee135304f 100644
--- a/test/org/apache/catalina/valves/TestErrorReportValve.java
+++ b/test/org/apache/catalina/valves/TestErrorReportValve.java
@@ -17,10 +17,7 @@
package org.apache.catalina.valves;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.nio.charset.StandardCharsets;
import jakarta.servlet.AsyncContext;
import jakarta.servlet.RequestDispatcher;
@@ -31,6 +28,7 @@ import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
+import org.apache.tomcat.util.res.StringManager;
import org.junit.Assert;
import org.junit.Test;
@@ -43,6 +41,8 @@ import org.apache.tomcat.util.descriptor.web.ErrorPage;
public class TestErrorReportValve extends TomcatBaseTest {
+ private static final StringManager sm =
StringManager.getManager(TestErrorReportValve.class);
+
@Test
public void testBug53071() throws Exception {
Tomcat tomcat = getTomcatInstance();
@@ -56,14 +56,10 @@ public class TestErrorReportValve extends TomcatBaseTest {
tomcat.start();
ByteChunk res = new ByteChunk();
- List<String> values = new ArrayList<>();
- values.add("en");
- Map<String, List<String>> reqHead = new HashMap<>();
- reqHead.put("Accept-Language", values);
- getUrl("http://localhost:" + getPort(), res, reqHead, null);
-
- Assert.assertTrue(res.toString().contains("<p><b>Message</b> " +
- ErrorServlet.ERROR_TEXT + "</p>"));
+ res.setCharset(StandardCharsets.UTF_8);
+ getUrl("http://localhost:" + getPort(), res, null);
+ Assert.assertTrue(res.toString().contains("<p><b>" +
sm.getString("errorReportValve.message") + "</b> " +
+ ErrorServlet.ERROR_TEXT + "</p>"));
}
diff --git a/test/org/apache/coyote/ajp/TestAbstractAjpProcessor.java
b/test/org/apache/coyote/ajp/TestAbstractAjpProcessor.java
index dfb4f28f06..b742e5a938 100644
--- a/test/org/apache/coyote/ajp/TestAbstractAjpProcessor.java
+++ b/test/org/apache/coyote/ajp/TestAbstractAjpProcessor.java
@@ -32,6 +32,7 @@ import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
+import org.apache.tomcat.util.res.StringManager;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -510,6 +511,10 @@ public class TestAbstractAjpProcessor extends
TomcatBaseTest {
Tomcat.addServlet(ctx, "helloWorld", new HelloWorldServlet());
ctx.addServletMappingDecoded("/", "helloWorld");
+ StringManager smClient =
StringManager.getManager("org.apache.catalina.valves");
+ String expectedBody = "<p><b>" +
smClient.getString("errorReportValve.type") + "</b> " +
+ smClient.getString("errorReportValve.statusReport") + "</p>";
+
SimpleAjpClient ajpClient = new SimpleAjpClient();
ajpClient.setPort(getPort());
@@ -524,7 +529,7 @@ public class TestAbstractAjpProcessor extends
TomcatBaseTest {
// Expect 3 packets: headers, body, end
validateResponseHeaders(responseHeaders, 403, "403");
TesterAjpMessage responseBody = ajpClient.readMessage();
- validateResponseBody(responseBody, "<p><b>Type</b> Status Report</p>");
+ validateResponseBody(responseBody, expectedBody);
validateResponseEnd(ajpClient.readMessage(), false);
ajpClient.connect();
@@ -538,7 +543,7 @@ public class TestAbstractAjpProcessor extends
TomcatBaseTest {
// Expect 3 packets: headers, body, end
validateResponseHeaders(responseHeaders, 403, "403");
responseBody = ajpClient.readMessage();
- validateResponseBody(responseBody, "<p><b>Type</b> Status Report</p>");
+ validateResponseBody(responseBody, expectedBody);
validateResponseEnd(ajpClient.readMessage(), false);
ajpClient.connect();
@@ -653,8 +658,11 @@ public class TestAbstractAjpProcessor extends
TomcatBaseTest {
validateCpong(ajpClient.cping());
} else {
// Expect 3 messages: headers, error report body, end for an
invalid request
+ StringManager smClient =
StringManager.getManager("org.apache.catalina.valves");
+ String expectedBody = "<p><b>" +
smClient.getString("errorReportValve.type") + "</b> " +
+ smClient.getString("errorReportValve.statusReport") + "</p>";
TesterAjpMessage responseBody = ajpClient.readMessage();
- validateResponseBody(responseBody, "<p><b>Type</b> Status
Report</p>");
+ validateResponseBody(responseBody, expectedBody);
validateResponseEnd(ajpClient.readMessage(), false);
}
diff --git a/test/org/apache/coyote/ajp/TesterAjpMessage.java
b/test/org/apache/coyote/ajp/TesterAjpMessage.java
index 1e09ae9b4e..7fde97cdd2 100644
--- a/test/org/apache/coyote/ajp/TesterAjpMessage.java
+++ b/test/org/apache/coyote/ajp/TesterAjpMessage.java
@@ -16,6 +16,9 @@
*/
package org.apache.coyote.ajp;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
@@ -30,6 +33,7 @@ public class TesterAjpMessage extends AjpMessage {
private final List<Header> headers = new ArrayList<>();
private final List<Attribute> attributes = new ArrayList<>();
+ private transient Charset charset = StandardCharsets.UTF_8;
public TesterAjpMessage(int packetSize) {
@@ -52,16 +56,12 @@ public class TesterAjpMessage extends AjpMessage {
}
public String readString(int len) {
- StringBuilder buffer = new StringBuilder(len);
-
- for (int i = 0; i < len; i++) {
- char c = (char) buf[pos++];
- buffer.append(c);
- }
+ CharBuffer buf = getCharset().decode(ByteBuffer.wrap(this.buf, pos,
len));
+ pos += len;
// Read end of string marker
readByte();
- return buffer.toString();
+ return new String(buf.array(), buf.arrayOffset(), buf.length());
}
public String readHeaderName() {
@@ -96,6 +96,13 @@ public class TesterAjpMessage extends AjpMessage {
attributes.add(new Attribute(name, value));
}
+ public Charset getCharset() {
+ return charset;
+ }
+
+ public void setCharset(Charset charset) {
+ this.charset = charset;
+ }
@Override
public void end() {
diff --git a/test/org/apache/coyote/http2/TestFlowControl.java
b/test/org/apache/coyote/http2/TestFlowControl.java
index e087641bc7..4ea1a074d5 100644
--- a/test/org/apache/coyote/http2/TestFlowControl.java
+++ b/test/org/apache/coyote/http2/TestFlowControl.java
@@ -18,10 +18,10 @@ package org.apache.coyote.http2;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.LogManager;
+import org.apache.tomcat.util.res.StringManager;
import org.junit.Assert;
import org.junit.Test;
@@ -29,6 +29,8 @@ import org.apache.tomcat.util.http.MimeHeaders;
public class TestFlowControl extends Http2TestBase {
+ private static final StringManager sm =
StringManager.getManager(TestFlowControl.class);
+
/*
* https://tomcat.markmail.org/thread/lijsebphms7hr3zj
*/
@@ -95,7 +97,7 @@ public class TestFlowControl extends Http2TestBase {
int end = trace.indexOf("]", start);
String contentLength = trace.substring(start, end);
// Language will depend on locale
- String language = Locale.getDefault().getLanguage();
+ String language = sm.getLocale().toLanguageTag();
Assert.assertEquals(
"3-HeadersStart\n" +
diff --git a/test/org/apache/coyote/http2/TestHttp2Limits.java
b/test/org/apache/coyote/http2/TestHttp2Limits.java
index 19bf0948e8..e8bea21c41 100644
--- a/test/org/apache/coyote/http2/TestHttp2Limits.java
+++ b/test/org/apache/coyote/http2/TestHttp2Limits.java
@@ -43,6 +43,9 @@ public class TestHttp2Limits extends Http2TestBase {
@Test
public void testSettingsOverheadLimits() throws Exception {
http2Connect();
+ String errMsg = sm.getString("upgradeHandler.tooMuchOverhead",
"\\p{XDigit}++")
+ .replace("[", "\\[");
+ String overHeadMsgRegx = "0-Goaway-\\[1]-\\[11]-\\[" + errMsg + "]";
for (int i = 0; i < 100; i++) {
try {
@@ -57,7 +60,7 @@ public class TestHttp2Limits extends Http2TestBase {
if (trace.equals("0-Settings-Ack\n")) {
// Test continues
output.clearTrace();
- } else if (trace.startsWith("0-Goaway-[1]-[11]-[Connection [")) {
+ } else if (trace.matches(overHeadMsgRegx)) {
// Test passed
return;
} else {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]