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

lihan pushed a commit to branch 10.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/10.0.x by this push:
     new 62136a2e82 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.
62136a2e82 is described below

commit 62136a2e8222a6a111c2495010faff8ed62b412b
Author: lihan <aooo...@gmail.com>
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 21f5e53fda..5096cfafd8 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;
@@ -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 7605160d67..1697c7c39b 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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to