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);

Reply via email to