This is an automated email from the ASF dual-hosted git repository.
davsclaus 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 db386296a6c CAMEL-18215: camel-test - Enable JMX when camel-debug is
detected (#7849)
db386296a6c is described below
commit db386296a6c43bac40590ffee1fd1541434f95ed
Author: Nicolas Filotto <[email protected]>
AuthorDate: Wed Jun 22 13:22:07 2022 +0200
CAMEL-18215: camel-test - Enable JMX when camel-debug is detected (#7849)
---
.../org/apache/camel/test/junit5/CamelTestSupport.java | 8 ++++----
.../java/org/apache/camel/test/junit5/TestSupport.java | 14 ++++++++++++++
.../apache/camel/test/main/junit5/CamelMainExtension.java | 5 +++--
.../camel/test/spring/junit5/CamelAnnotationsHandler.java | 7 ++++++-
4 files changed, 27 insertions(+), 7 deletions(-)
diff --git
a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java
b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java
index d3a13c8236f..c2843b29b28 100644
---
a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java
+++
b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java
@@ -84,6 +84,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.apache.camel.test.junit5.TestSupport.deleteDirectory;
+import static org.apache.camel.test.junit5.TestSupport.isCamelDebugPresent;
import static org.junit.jupiter.api.Assertions.assertNotNull;
/**
@@ -415,10 +416,9 @@ public abstract class CamelTestSupport
protected void doSetUp() throws Exception {
LOG.debug("setUp test");
- // jmx is enabled if we have configured to use it, or if dump route
- // coverage is enabled (it requires JMX)
- boolean jmx = useJmx() || isRouteCoverageEnabled();
- if (jmx) {
+ // jmx is enabled if we have configured to use it, if dump route
coverage is enabled (it requires JMX) or if
+ // the component camel-debug is in the classpath
+ if (useJmx() || isRouteCoverageEnabled() || isCamelDebugPresent()) {
enableJMX();
} else {
disableJMX();
diff --git
a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/TestSupport.java
b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/TestSupport.java
index 4e7cc089ddd..74b593d3508 100644
---
a/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/TestSupport.java
+++
b/components/camel-test/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/TestSupport.java
@@ -36,6 +36,8 @@ import org.apache.camel.builder.Builder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.builder.ValueBuilder;
import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.spi.Debugger;
+import org.apache.camel.spi.FactoryFinder;
import org.apache.camel.support.DefaultExchange;
import org.apache.camel.support.PredicateAssertHelper;
import org.slf4j.Logger;
@@ -601,4 +603,16 @@ public final class TestSupport {
}
}
+ /**
+ * Indicates whether the component {@code camel-debug} is present in the
classpath of the test.
+ *
+ * @return {@code true} if it is present, {@code false} otherwise.
+ */
+ public static boolean isCamelDebugPresent() {
+ // Needs to be detected before initializing and starting the camel
context
+ return Thread.currentThread()
+ .getContextClassLoader()
+ .getResource(String.format("%s%s", FactoryFinder.DEFAULT_PATH,
Debugger.FACTORY))
+ != null;
+ }
}
diff --git
a/components/camel-test/camel-test-main-junit5/src/main/java/org/apache/camel/test/main/junit5/CamelMainExtension.java
b/components/camel-test/camel-test-main-junit5/src/main/java/org/apache/camel/test/main/junit5/CamelMainExtension.java
index d5838ee81d5..dfe036ce223 100644
---
a/components/camel-test/camel-test-main-junit5/src/main/java/org/apache/camel/test/main/junit5/CamelMainExtension.java
+++
b/components/camel-test/camel-test-main-junit5/src/main/java/org/apache/camel/test/main/junit5/CamelMainExtension.java
@@ -34,6 +34,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static
org.apache.camel.test.junit5.CamelTestSupport.ROUTE_COVERAGE_ENABLED;
+import static org.apache.camel.test.junit5.TestSupport.isCamelDebugPresent;
import static
org.junit.jupiter.api.extension.ExtensionContext.Namespace.create;
/**
@@ -72,7 +73,7 @@ final class CamelMainExtension
private final CamelRouteCoverageDumper routeCoverageDumper = new
CamelRouteCoverageDumper();
@Override
- public void beforeEach(ExtensionContext context) throws Exception {
+ public void beforeEach(ExtensionContext context) {
getContextStore(context).getOrComputeIfAbsent(CONTEXT, k ->
createCamelMainContextAndStart(context));
}
@@ -109,7 +110,7 @@ final class CamelMainExtension
private CamelMainContext createCamelMainContextAndStart(ExtensionContext
context) {
try {
final CamelMainContext camelMainContext =
CamelMainContext.builder(context)
- .useJmx(useJmx(context) || isRouteCoverageEnabled(context))
+ .useJmx(useJmx(context) || isRouteCoverageEnabled(context)
|| isCamelDebugPresent())
.build();
camelMainContext.start();
return camelMainContext;
diff --git
a/components/camel-test/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelAnnotationsHandler.java
b/components/camel-test/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelAnnotationsHandler.java
index 59f6bff6180..cbce2dc6d72 100644
---
a/components/camel-test/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelAnnotationsHandler.java
+++
b/components/camel-test/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelAnnotationsHandler.java
@@ -44,6 +44,8 @@ import
org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.annotation.AnnotationUtils;
+import static org.apache.camel.test.junit5.TestSupport.isCamelDebugPresent;
+
public final class CamelAnnotationsHandler {
private static final Logger LOGGER =
LoggerFactory.getLogger(CamelAnnotationsHandler.class);
@@ -93,7 +95,10 @@ public final class CamelAnnotationsHandler {
* @param testClass the test class being executed
*/
public static void handleDisableJmx(ConfigurableApplicationContext
context, Class<?> testClass) {
- if (testClass.isAnnotationPresent(DisableJmx.class)) {
+ if (isCamelDebugPresent()) {
+ LOGGER.info("Enabling Camel JMX as camel-debug has been found in
the classpath.");
+ DefaultCamelContext.setDisableJmx(false);
+ } else if (testClass.isAnnotationPresent(DisableJmx.class)) {
if (testClass.getAnnotation(DisableJmx.class).value()) {
LOGGER.info("Disabling Camel JMX globally as DisableJmx
annotation was found and disableJmx is set to true.");
DefaultCamelContext.setDisableJmx(true);