You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by li...@apache.org on 2022/08/25 08:35:20 UTC

[tomcat] branch 9.0.x updated: 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.

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

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


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

commit 58550071fcf92be1cdd56364f69a1333c5fe275b
Author: lihan <ao...@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 dc51de94fc..efbe083f06 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;
@@ -31,6 +28,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;
 
@@ -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 b8586adfd0..5131c12e34 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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org