This is an automated email from the ASF dual-hosted git repository. lihan pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/8.5.x by this push: new dc6fffe27d 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. dc6fffe27d is described below commit dc6fffe27d68639aa4a94924f3142d1311482f09 Author: lihan <li...@apache.org> 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 | 20 ++++++++++++++++---- .../catalina/valves/TestErrorReportValve.java | 20 ++++++++------------ .../apache/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, 57 insertions(+), 29 deletions(-) diff --git a/test/org/apache/catalina/tribes/group/TestGroupChannelOptionFlag.java b/test/org/apache/catalina/tribes/group/TestGroupChannelOptionFlag.java index d7763a284b..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,8 +61,8 @@ public class TestGroupChannelOptionFlag { channel.addInterceptor(i); try { channel.start(Channel.DEFAULT); - }catch ( ChannelException x ) { - if ( x.getMessage().indexOf("option flag conflict") >= 0 ) { + } catch (ChannelException x) { + if (x.getMessage().matches(errorMsgRegx)) { error = true; } } @@ -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().indexOf("option flag conflict") >= 0 ) { + } 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 512008098c..83e75b0d0a 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 javax.servlet.AsyncContext; import javax.servlet.RequestDispatcher; @@ -29,6 +26,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.tomcat.util.res.StringManager; import org.junit.Assert; import org.junit.Test; @@ -40,6 +38,8 @@ import org.apache.tomcat.util.buf.ByteChunk; public class TestErrorReportValve extends TomcatBaseTest { + private static final StringManager sm = StringManager.getManager(TestErrorReportValve.class); + @Test public void testBug53071() throws Exception { Tomcat tomcat = getTomcatInstance(); @@ -53,14 +53,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 f66e399a9f..8ae06fc25f 100644 --- a/test/org/apache/coyote/ajp/TestAbstractAjpProcessor.java +++ b/test/org/apache/coyote/ajp/TestAbstractAjpProcessor.java @@ -32,6 +32,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.tomcat.util.res.StringManager; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -512,6 +513,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()); @@ -526,7 +531,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(); @@ -540,7 +545,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(); @@ -655,8 +660,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 787859c62b..38fb1fcaa7 100644 --- a/test/org/apache/coyote/http2/TestHttp2Limits.java +++ b/test/org/apache/coyote/http2/TestHttp2Limits.java @@ -42,6 +42,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 { @@ -56,7 +59,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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org