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