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

oscerd pushed a commit to branch camel-4.14.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-4.14.x by this push:
     new 02321d5e8b01 ci: register LogCaptureAppender programmatically in 
netty/netty-http tests (#23998)
02321d5e8b01 is described below

commit 02321d5e8b01bf4c0ed3cfbeff61b541e065c385
Author: Andrea Cosentino <[email protected]>
AuthorDate: Fri Jun 12 18:41:37 2026 +0200

    ci: register LogCaptureAppender programmatically in netty/netty-http tests 
(#23998)
    
    LogCaptureTest.testCapture fails deterministically on camel-4.14.x in both
    camel-netty and camel-netty-http: the test relies on a properties-based 
log4j2
    configuration (configuration.packages + a custom LogCaptureAppender wired 
to the
    io.netty.util.ResourceLeakDetector logger) that no longer captures events, 
so
    LogCaptureAppender.getEvents() is empty and the assertion fails.
    
    main already fixed this by registering the appender programmatically in the 
test
    (@BeforeEach adds a LogCaptureAppender to the ResourceLeakDetector logger,
    @AfterEach removes it, @Isolated) and dropping the brittle properties 
config.
    This backports that fix to camel-4.14.x for both modules.
    
    Test-only change. Verified: LogCaptureTest passes in camel-netty and
    camel-netty-http after the change.
    
    Signed-off-by: Andrea Cosentino <[email protected]>
---
 .../camel/component/netty/http/LogCaptureTest.java | 28 ++++++++++++++++++++--
 .../src/test/resources/log4j2.properties           |  6 -----
 .../camel/component/netty/LogCaptureTest.java      | 26 ++++++++++++++++++--
 .../src/test/resources/log4j2.properties           |  8 -------
 4 files changed, 50 insertions(+), 18 deletions(-)

diff --git 
a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/LogCaptureTest.java
 
b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/LogCaptureTest.java
index 6af6c8956bef..38c42dafb4df 100644
--- 
a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/LogCaptureTest.java
+++ 
b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/LogCaptureTest.java
@@ -18,18 +18,42 @@ package org.apache.camel.component.netty.http;
 
 import io.netty.util.ResourceLeakDetector;
 import io.netty.util.internal.logging.InternalLoggerFactory;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.Logger;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Isolated;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
 
 /**
- * This test ensures LogCaptureAppender is configured properly
+ * This test ensures LogCaptureAppender can capture log events 
programmatically.
  */
+@Isolated
 public class LogCaptureTest {
+
+    private LogCaptureAppender appender;
+
+    @BeforeEach
+    void setUp() {
+        appender = new LogCaptureAppender("capture", null, null);
+        appender.start();
+        Logger logger = (Logger) 
LogManager.getLogger(ResourceLeakDetector.class);
+        logger.addAppender(appender);
+    }
+
+    @AfterEach
+    void tearDown() {
+        Logger logger = (Logger) 
LogManager.getLogger(ResourceLeakDetector.class);
+        logger.removeAppender(appender);
+        appender.stop();
+        LogCaptureAppender.reset();
+    }
+
     @Test
     public void testCapture() {
         
InternalLoggerFactory.getInstance(ResourceLeakDetector.class).error("testError");
         assertFalse(LogCaptureAppender.getEvents().isEmpty());
-        LogCaptureAppender.reset();
     }
 }
diff --git a/components/camel-netty-http/src/test/resources/log4j2.properties 
b/components/camel-netty-http/src/test/resources/log4j2.properties
index e55a3c9d7f83..3691d10fdb3b 100644
--- a/components/camel-netty-http/src/test/resources/log4j2.properties
+++ b/components/camel-netty-http/src/test/resources/log4j2.properties
@@ -15,7 +15,6 @@
 ## limitations under the License.
 ## ---------------------------------------------------------------------------
 
-configuration.packages=org.apache.camel.component.netty.http
 appender.file.type = File
 appender.file.name = file
 appender.file.fileName = target/camel-netty-http-test.log
@@ -25,11 +24,6 @@ appender.out.type = Console
 appender.out.name = out
 appender.out.layout.type = PatternLayout
 appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-appender.capture.type=LogCaptureAppender
-appender.capture.name=capture
-
-logger.leak.name = io.netty.util.ResourceLeakDetector
-logger.leak.appenderRef.capture.ref = capture
 
 rootLogger.level = INFO
 rootLogger.appenderRef.file.ref = file
diff --git 
a/components/camel-netty/src/test/java/org/apache/camel/component/netty/LogCaptureTest.java
 
b/components/camel-netty/src/test/java/org/apache/camel/component/netty/LogCaptureTest.java
index 40c3df8c3bfc..9f004f96b396 100644
--- 
a/components/camel-netty/src/test/java/org/apache/camel/component/netty/LogCaptureTest.java
+++ 
b/components/camel-netty/src/test/java/org/apache/camel/component/netty/LogCaptureTest.java
@@ -19,6 +19,10 @@ package org.apache.camel.component.netty;
 import io.netty.util.ResourceLeakDetector;
 import io.netty.util.internal.logging.InternalLoggerFactory;
 import org.apache.camel.processor.errorhandler.DefaultErrorHandler;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.Logger;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.parallel.Isolated;
 
@@ -26,16 +30,34 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
- * This test ensures LogCaptureAppender is configured properly
+ * This test ensures LogCaptureAppender can capture log events 
programmatically.
  */
 @Isolated
 public class LogCaptureTest {
+
+    private LogCaptureAppender appender;
+
+    @BeforeEach
+    void setUp() {
+        appender = new LogCaptureAppender("capture", null, null);
+        appender.start();
+        Logger logger = (Logger) 
LogManager.getLogger(ResourceLeakDetector.class);
+        logger.addAppender(appender);
+    }
+
+    @AfterEach
+    void tearDown() {
+        Logger logger = (Logger) 
LogManager.getLogger(ResourceLeakDetector.class);
+        logger.removeAppender(appender);
+        appender.stop();
+        LogCaptureAppender.reset();
+    }
+
     @Test
     public void testCapture() {
         
InternalLoggerFactory.getInstance(ResourceLeakDetector.class).error("testError");
         
assertFalse(LogCaptureAppender.getEvents(ResourceLeakDetector.class).isEmpty());
         
assertTrue(LogCaptureAppender.hasEventsFor(ResourceLeakDetector.class));
         
assertTrue(LogCaptureAppender.getEvents(DefaultErrorHandler.class).isEmpty());
-        LogCaptureAppender.reset();
     }
 }
diff --git a/components/camel-netty/src/test/resources/log4j2.properties 
b/components/camel-netty/src/test/resources/log4j2.properties
index 16469817c184..f818c5df9abc 100644
--- a/components/camel-netty/src/test/resources/log4j2.properties
+++ b/components/camel-netty/src/test/resources/log4j2.properties
@@ -15,7 +15,6 @@
 ## limitations under the License.
 ## ---------------------------------------------------------------------------
 
-configuration.packages=org.apache.camel.component.netty
 appender.file.type = File
 appender.file.name = file
 appender.file.fileName = target/camel-netty-test.log
@@ -25,12 +24,5 @@ appender.out.type = Console
 appender.out.name = out
 appender.out.layout.type = PatternLayout
 appender.out.layout.pattern = %d [%-35.35t] %-5p %-30.30c{1} - %m%n
-appender.capture.type=LogCaptureAppender
-appender.capture.name=capture
-
-logger.leak.name = io.netty.util.ResourceLeakDetector
-logger.leak.appenderRef.capture.ref = capture
-logger.errorHandler.name = 
org.apache.camel.processor.errorhandler.DefaultErrorHandler
-logger.errorHandler.appenderRef.capture.ref = capture
 rootLogger.level = INFO
 rootLogger.appenderRef.file.ref = file

Reply via email to