[ 
https://issues.apache.org/jira/browse/LOG4J2-3627?focusedWorklogId=924397&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-924397
 ]

ASF GitHub Bot logged work on LOG4J2-3627:
------------------------------------------

                Author: ASF GitHub Bot
            Created on: 03/Jul/24 14:24
            Start Date: 03/Jul/24 14:24
    Worklog Time Spent: 10m 
      Work Description: alan0428a commented on code in PR #2691:
URL: https://github.com/apache/logging-log4j2/pull/2691#discussion_r1664283248


##########
log4j-core-test/src/test/java/org/apache/logging/log4j/core/util/StringBuildersTest.java:
##########
@@ -0,0 +1,90 @@
+/*
+ * 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.logging.log4j.core.util;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import java.util.stream.Stream;
+import org.apache.logging.log4j.core.util.internal.StringBuilders;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+public class StringBuildersTest {
+
+    static Stream<Arguments> testTruncateLines_happyCases() {
+        return Stream.of(
+                // maxOccurrenceCount < lines count
+                Arguments.of("abc\ndef\nghi\njkl\n", "\n", 2, "abc\ndef\n"),
+                // maxOccurrenceCount == lines count
+                Arguments.of("abc|def|ghi|jkl|", "|", 4, "abc|def|ghi|jkl|"),
+                // maxOccurrenceCount > lines count
+                Arguments.of("abc|def|ghi|jkl|", "|", 10, "abc|def|ghi|jkl|"),
+                // maxOccurrenceCount ==  Integer.MAX_VALUE
+                Arguments.of("abc|def|ghi|jkl|", "|", Integer.MAX_VALUE, 
"abc|def|ghi|jkl|"),
+                // maxOccurrenceCount ==  0
+                Arguments.of("abc|def|ghi|jkl|", "|", 0, ""),
+                // empty buffer
+                Arguments.of("", "|", 2, ""),
+                // empty delimiter
+                Arguments.of("abc|def|ghi|jkl|", "", 2, "abc|def|ghi|jkl|"),
+                // delimiter |
+                Arguments.of("|", "|", 10, "|"),
+                Arguments.of("||", "|", 10, "||"),
+                Arguments.of("a|", "|", 10, "a|"),
+                Arguments.of("|a", "|", 10, "|"),
+                // delimiter ||
+                Arguments.of("||", "||", 10, "||"),
+                Arguments.of("|||", "||", 10, "||"),
+                Arguments.of("||||", "||", 10, "||||"),
+                Arguments.of("a|", "||", 10, ""),
+                Arguments.of("a||", "||", 10, "a||"),
+                Arguments.of("a|||", "||", 10, "a||"),
+                Arguments.of("a||||", "||", 10, "a||||"),
+                Arguments.of("|a", "||", 10, ""),
+                Arguments.of("||a", "||", 10, "||"),
+                Arguments.of("|||a", "||", 10, "||"),
+                Arguments.of("||||a", "||", 10, "||||"));
+    }
+
+    @ParameterizedTest
+    @MethodSource("testTruncateLines_happyCases")
+    void testTruncateLinesHappyCases(String input, String delimiter, int 
maxOccurrenceCount, String expected) {
+        final StringBuilder buffer = new StringBuilder(input);
+        StringBuilders.truncateAfterDelimiter(buffer, delimiter, 
maxOccurrenceCount);
+        assertThat(buffer.toString()).isEqualTo(expected);
+    }
+
+    static Stream<Arguments> testTruncateLines_failCases() {
+        return Stream.of(
+                // negative maxOccurrenceCount
+                Arguments.of("abc\ndef\nghi\njkl\n", "\n", -1, 
IllegalArgumentException.class),
+                // null buffer
+                Arguments.of(null, "|", 10, NullPointerException.class),
+                // null delimiter
+                Arguments.of("abc|def|ghi|jkl|", null, 10, 
NullPointerException.class));
+    }
+
+    @ParameterizedTest
+    @MethodSource("testTruncateLines_failCases")
+    void testTruncateLinesFailCases(String input, String delimiter, int 
maxOccurrenceCount, Class<Throwable> expected) {

Review Comment:
   updated





Issue Time Tracking
-------------------

    Worklog Id:     (was: 924397)
    Time Spent: 3.5h  (was: 3h 20m)

> PatternLayout: %xEx{ [ "short" | depth]} not working
> ----------------------------------------------------
>
>                 Key: LOG4J2-3627
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-3627
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Layouts
>    Affects Versions: 2.11.0, 2.11.1, 2.11.2, 2.12.0, 2.12.1, 2.13.0, 2.13.1, 
> 2.13.2, 2.14.0, 2.13.3, 2.14.1, 2.15.0, 2.16.0, 2.17.1, 2.17.0, 2.12.3, 
> 2.12.2, 2.18.0, 2.12.4, 2.17.2, 2.19.0
>            Reporter: Thorsten Heit
>            Assignee: Volkan Yazici
>            Priority: Minor
>          Time Spent: 3.5h
>  Remaining Estimate: 0h
>
> According to the documentation the patterns {{{}%xEx{short{}}}} or 
> {{{}%xEx{<num>{}}}} should limit the number of lines of a stack trace that is 
> logged. This doesn't work; instead, the complete stack trace is logged 
> (always!). This is in contrary to the patterns {{%ex}} or {{%rEx}} where this 
> works.
> In commit 9ff63b2e50be754ae394feda2c33d9e64fd0ab3a (2018-01-25) a change was 
> implemented because of LOG4J2-2195 (according to the commit message) that 
> removed the option of limiting the number of lines to output.
> Therefore all versions since 2.11.0 should be affected.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to