This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 2a88fb6b90cf CAMEL-22635: Fix LogCaptureTest in camel-netty and
camel-netty-http (#22083)
2a88fb6b90cf is described below
commit 2a88fb6b90cf646a5309f5be35eb7e42887ed594
Author: Guillaume Nodet <[email protected]>
AuthorDate: Thu Mar 19 09:47:57 2026 +0100
CAMEL-22635: Fix LogCaptureTest in camel-netty and camel-netty-http (#22083)
The LogCaptureAppender was disabled because the Log4j2 plugin
discovery via configuration.packages no longer works reliably.
Fix by programmatically attaching the appender to the logger
in setUp/tearDown, removing the dependency on log4j2.properties
plugin configuration. Also remove @Disabled annotation and add
@Isolated to prevent interference with other tests.
Co-authored-by: Claude Opus 4.6 <[email protected]>
---
.../camel/component/netty/http/LogCaptureTest.java | 30 +++++++++++++++++++---
.../src/test/resources/log4j2.properties | 6 -----
.../camel/component/netty/LogCaptureTest.java | 28 +++++++++++++++++---
.../src/test/resources/log4j2.properties | 8 ------
4 files changed, 50 insertions(+), 22 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 787e93988d48..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,20 +18,42 @@ package org.apache.camel.component.netty.http;
import io.netty.util.ResourceLeakDetector;
import io.netty.util.internal.logging.InternalLoggerFactory;
-import org.junit.jupiter.api.Disabled;
+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.
*/
-@Disabled
+@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 e66e1d1f4fdd..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 fb2172021451..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,7 +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.junit.jupiter.api.Disabled;
+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;
@@ -27,17 +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
-@Disabled
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 75a246aa852f..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