You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2018/01/03 11:29:33 UTC

[camel] branch master updated: CAMEL-12113: Camel healthcheck spring-boot actuators don't honor endpoints.*.enabled property

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

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 060f6e9  CAMEL-12113: Camel healthcheck spring-boot actuators don't honor endpoints.*.enabled property
060f6e9 is described below

commit 060f6e98570ed72af37e9bd6ba7bc77af876a989
Author: Andrea Tarocchi <at...@redhat.com>
AuthorDate: Wed Jan 3 10:35:51 2018 +0100

    CAMEL-12113: Camel healthcheck spring-boot actuators don't honor endpoints.*.enabled property
---
 .../CamelHealthCheckEndpointAutoConfiguration.java | 16 ++++++
 ...elRouteControllerEndpointAutoConfiguration.java | 16 ++++++
 .../CamelRoutesEndpointAutoConfiguration.java      | 16 ++++++
 .../boot/actuate/endpoint/ActuatorTestRoute.java   |  4 ++
 .../CamelEndpointsGloballyDisabledTest.java        | 64 +++++++++++++++++++++
 .../CamelHealthCheckEndpointDisabledTest.java      | 48 ++++++++++++++++
 ...ckEndpointGloballyDisabledAndReenabledTest.java | 49 ++++++++++++++++
 .../CamelRouteControllerEndpointDisabledTest.java  | 59 ++++++++++++++++++++
 ...erEndpointGloballyDisabledAndReenabledTest.java | 60 ++++++++++++++++++++
 .../endpoint/CamelRouteControllerEndpointTest.java | 62 +++++++++++++++++++++
 .../CamelRouteControllerMvcEndpointTest.java       | 65 ++++++++++++++++++++++
 .../endpoint/CamelRoutesEndpointDisabledTest.java  | 63 +++++++++++++++++++++
 ...esEndpointGloballyDisabledAndReenabledTest.java | 60 ++++++++++++++++++++
 .../actuate/health/CamelHealthDisabledTest.java    | 49 ++++++++++++++++
 14 files changed, 631 insertions(+)

diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelHealthCheckEndpointAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelHealthCheckEndpointAutoConfiguration.java
index 72b8569..a005cf2 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelHealthCheckEndpointAutoConfiguration.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelHealthCheckEndpointAutoConfiguration.java
@@ -18,12 +18,14 @@ package org.apache.camel.spring.boot.actuate.endpoint;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.util.GroupCondition;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
 
 /**
@@ -33,6 +35,7 @@ import org.springframework.context.annotation.Configuration;
 @ConditionalOnClass(CamelHealthCheckEndpoint.class)
 @ConditionalOnBean(CamelAutoConfiguration.class)
 @AutoConfigureAfter(CamelAutoConfiguration.class)
+@Conditional(CamelHealthCheckEndpointAutoConfiguration.Condition.class)
 public class CamelHealthCheckEndpointAutoConfiguration {
     @Bean
     @ConditionalOnBean(CamelContext.class)
@@ -48,4 +51,17 @@ public class CamelHealthCheckEndpointAutoConfiguration {
     public CamelHealthCheckMvcEndpoint healthChecksMvcEndpoint(CamelHealthCheckEndpoint delegate) {
         return new CamelHealthCheckMvcEndpoint(delegate);
     }
+
+    // ***************************************
+    // Condition
+    // ***************************************
+
+    public static class Condition extends GroupCondition {
+        public Condition() {
+            super(
+                    "endpoints",
+                    "endpoints." + CamelHealthCheckEndpoint.ENDPOINT_ID
+            );
+        }
+    }
 }
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointAutoConfiguration.java
index ca75ed4..44d5f1e 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointAutoConfiguration.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointAutoConfiguration.java
@@ -18,12 +18,14 @@ package org.apache.camel.spring.boot.actuate.endpoint;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.util.GroupCondition;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
 
 /**
@@ -33,6 +35,7 @@ import org.springframework.context.annotation.Configuration;
 @ConditionalOnClass({CamelRouteControllerEndpoint.class})
 @ConditionalOnBean(CamelAutoConfiguration.class)
 @AutoConfigureAfter(CamelAutoConfiguration.class)
+@Conditional(CamelRouteControllerEndpointAutoConfiguration.Condition.class)
 public class CamelRouteControllerEndpointAutoConfiguration {
     @Bean
     @ConditionalOnClass(CamelContext.class)
@@ -48,4 +51,17 @@ public class CamelRouteControllerEndpointAutoConfiguration {
     public CamelRouteControllerMvcEndpoint routeControllerMvcEndpoint(CamelRouteControllerEndpoint delegate) {
         return new CamelRouteControllerMvcEndpoint(delegate);
     }
+
+    // ***************************************
+    // Condition
+    // ***************************************
+
+    public static class Condition extends GroupCondition {
+        public Condition() {
+            super(
+                    "endpoints",
+                    "endpoints." + CamelRouteControllerEndpoint.ENDPOINT_ID
+            );
+        }
+    }
 }
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointAutoConfiguration.java
index fdf49f0..85070dd 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointAutoConfiguration.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointAutoConfiguration.java
@@ -18,12 +18,14 @@ package org.apache.camel.spring.boot.actuate.endpoint;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.util.GroupCondition;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
 
 /**
@@ -33,6 +35,7 @@ import org.springframework.context.annotation.Configuration;
 @ConditionalOnClass({CamelRoutesEndpoint.class})
 @ConditionalOnBean(CamelAutoConfiguration.class)
 @AutoConfigureAfter(CamelAutoConfiguration.class)
+@Conditional(CamelRoutesEndpointAutoConfiguration.Condition.class)
 public class CamelRoutesEndpointAutoConfiguration {
     @Bean
     @ConditionalOnClass(CamelContext.class)
@@ -48,4 +51,17 @@ public class CamelRoutesEndpointAutoConfiguration {
     public CamelRoutesMvcEndpoint camelMvcEndpoint(CamelRoutesEndpoint delegate) {
         return new CamelRoutesMvcEndpoint(delegate);
     }
+
+    // ***************************************
+    // Condition
+    // ***************************************
+
+    public static class Condition extends GroupCondition {
+        public Condition() {
+            super(
+                    "endpoints",
+                    "endpoints." + CamelRoutesEndpoint.ENDPOINT_ID
+            );
+        }
+    }
 }
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/ActuatorTestRoute.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/ActuatorTestRoute.java
index 599f940..96b4c0a 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/ActuatorTestRoute.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/ActuatorTestRoute.java
@@ -16,7 +16,9 @@
  */
 package org.apache.camel.spring.boot.actuate.endpoint;
 
+import org.apache.camel.Route;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.SupervisingRouteController;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -24,6 +26,8 @@ public class ActuatorTestRoute extends RouteBuilder {
 
     @Override
     public void configure() throws Exception {
+//        SupervisingRouteController src = new SupervisingRouteController();
+//        src.addFilter(route -> new SupervisingRouteController.FilterResult(true, "Catch all Filter"));
         from("timer:foo").routeId("foo-route").to("log:foo");
     }
 
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelEndpointsGloballyDisabledTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelEndpointsGloballyDisabledTest.java
new file mode 100644
index 0000000..430fcab
--- /dev/null
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelEndpointsGloballyDisabledTest.java
@@ -0,0 +1,64 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.spring.boot.actuate.endpoint;
+
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@DirtiesContext
+@RunWith(SpringRunner.class)
+@SpringBootTest(
+    classes = {
+        CamelAutoConfiguration.class,
+        CamelHealthCheckEndpointAutoConfiguration.class
+    },
+    properties = {
+        "endpoints.enabled = false"
+    }
+)
+public class CamelEndpointsGloballyDisabledTest {
+    @Autowired(required = false)
+    private CamelHealthCheckEndpoint healthCheckEndpoint;
+
+    @Autowired(required = false)
+    private CamelRouteControllerEndpoint routeControllerEndpoint;
+
+    @Autowired(required = false)
+    private CamelRouteControllerMvcEndpoint routeControllerMvcEndpoint;
+
+    @Autowired(required = false)
+    private CamelRoutesEndpoint routesEndpoint;
+
+    @Autowired(required = false)
+    private CamelRoutesMvcEndpoint routesMvcEndpoint;
+
+    @Test
+    public void testHealthCheckEndpointNotPresent() throws Exception {
+        Assert.assertNull(healthCheckEndpoint);
+        Assert.assertNull(routeControllerEndpoint);
+        Assert.assertNull(routeControllerMvcEndpoint);
+        Assert.assertNull(routesEndpoint);
+        Assert.assertNull(routesMvcEndpoint);
+    }
+}
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelHealthCheckEndpointDisabledTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelHealthCheckEndpointDisabledTest.java
new file mode 100644
index 0000000..39b397a
--- /dev/null
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelHealthCheckEndpointDisabledTest.java
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.spring.boot.actuate.endpoint;
+
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@DirtiesContext
+@RunWith(SpringRunner.class)
+@SpringBootTest(
+    classes = {
+        CamelAutoConfiguration.class,
+        CamelHealthCheckEndpointAutoConfiguration.class
+    },
+    properties = {
+        "endpoints.camelhealthcheck.enabled = false"
+    }
+)
+public class CamelHealthCheckEndpointDisabledTest {
+    @Autowired(required = false)
+    private CamelHealthCheckEndpoint endpoint;
+
+    @Test
+    public void testHealthCheckEndpointNotPresent() throws Exception {
+        Assert.assertNull(endpoint);
+    }
+}
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelHealthCheckEndpointGloballyDisabledAndReenabledTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelHealthCheckEndpointGloballyDisabledAndReenabledTest.java
new file mode 100644
index 0000000..506e9d1
--- /dev/null
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelHealthCheckEndpointGloballyDisabledAndReenabledTest.java
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.spring.boot.actuate.endpoint;
+
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@DirtiesContext
+@RunWith(SpringRunner.class)
+@SpringBootTest(
+    classes = {
+        CamelAutoConfiguration.class,
+        CamelHealthCheckEndpointAutoConfiguration.class
+    },
+    properties = {
+        "endpoints.enabled = false",
+        "endpoints.camelhealthcheck.enabled = true"
+    }
+)
+public class CamelHealthCheckEndpointGloballyDisabledAndReenabledTest {
+    @Autowired
+    private CamelHealthCheckEndpoint endpoint;
+
+    @Test
+    public void testHealthCheckEndpointPresent() throws Exception {
+        Assert.assertNotNull(endpoint);
+    }
+}
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointDisabledTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointDisabledTest.java
new file mode 100644
index 0000000..75ccc33
--- /dev/null
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointDisabledTest.java
@@ -0,0 +1,59 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.boot.actuate.endpoint;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * Test for the {@link CamelRoutesEndpoint} actuator endpoint.
+ */
+@DirtiesContext
+@RunWith(SpringRunner.class)
+@EnableAutoConfiguration
+@SpringBootApplication
+@SpringBootTest(classes = {CamelAutoConfiguration.class, CamelRoutesEndpointAutoConfiguration.class, ActuatorTestRoute.class},
+        properties = {
+                "endpoints.camelroutecontroller.enabled = false"
+        })
+public class CamelRouteControllerEndpointDisabledTest extends Assert {
+
+    @Autowired(required = false)
+    CamelRouteControllerEndpoint routeControllerEndpoint;
+
+    @Autowired(required = false)
+    CamelRouteControllerMvcEndpoint routeControllerMvcEndpoint;
+
+    @Autowired
+    CamelContext camelContext;
+
+    @Test
+    public void testRoutesEndpointNotPresent() throws Exception {
+        Assert.assertNull(routeControllerEndpoint);
+        Assert.assertNull(routeControllerMvcEndpoint);
+    }
+
+}
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointGloballyDisabledAndReenabledTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointGloballyDisabledAndReenabledTest.java
new file mode 100644
index 0000000..ff00296
--- /dev/null
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointGloballyDisabledAndReenabledTest.java
@@ -0,0 +1,60 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.boot.actuate.endpoint;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * Test for the {@link CamelRoutesEndpoint} actuator endpoint.
+ */
+@DirtiesContext
+@RunWith(SpringRunner.class)
+@EnableAutoConfiguration
+@SpringBootApplication
+@SpringBootTest(classes = {CamelAutoConfiguration.class, CamelRoutesEndpointAutoConfiguration.class, ActuatorTestRoute.class},
+        properties = {
+                "endpoints.enabled = false",
+                "endpoints.camelroutecontroller.enabled = true"
+        })
+public class CamelRouteControllerEndpointGloballyDisabledAndReenabledTest extends Assert {
+
+    @Autowired
+    CamelRouteControllerEndpoint routeControllerEndpoint;
+
+    @Autowired
+    CamelRouteControllerMvcEndpoint routeControllerMvcEndpoint;
+
+    @Autowired
+    CamelContext camelContext;
+
+    @Test
+    public void testRoutesEndpointPresent() throws Exception {
+        Assert.assertNotNull(routeControllerEndpoint);
+        Assert.assertNotNull(routeControllerMvcEndpoint);
+    }
+
+}
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointTest.java
new file mode 100644
index 0000000..67eb14e
--- /dev/null
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointTest.java
@@ -0,0 +1,62 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.boot.actuate.endpoint;
+
+import java.util.List;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+
+/**
+ * Test for the {@link CamelRouteControllerEndpoint} actuator endpoint.
+ */
+@DirtiesContext
+@RunWith(SpringRunner.class)
+@EnableAutoConfiguration
+@SpringBootApplication
+@SpringBootTest(classes = {CamelAutoConfiguration.class, CamelRouteControllerEndpointAutoConfiguration.class, ActuatorTestRoute.class},
+        properties = {
+                "camel.supervising.controller.enabled = true"
+        })
+public class CamelRouteControllerEndpointTest extends Assert {
+
+    @Autowired
+    CamelRouteControllerEndpoint endpoint;
+
+    @Autowired
+    CamelContext camelContext;
+
+    @Test
+    public void testRouteControllerEndpoint() throws Exception {
+        List<String> routesId = endpoint.invoke();
+
+        assertFalse(routesId.isEmpty());
+        assertEquals(routesId.size(), camelContext.getRoutes().size());
+        assertTrue(routesId.stream().anyMatch(r -> "foo-route".equals(r)));
+    }
+
+}
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerMvcEndpointTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerMvcEndpointTest.java
new file mode 100644
index 0000000..25f839c
--- /dev/null
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerMvcEndpointTest.java
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.boot.actuate.endpoint;
+
+import java.util.List;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.model.RouteDetailsInfo;
+import org.apache.camel.spring.boot.model.RouteInfo;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+
+/**
+ * Test for the {@link CamelRouteControllerMvcEndpoint} actuator endpoint.
+ */
+@DirtiesContext
+@RunWith(SpringRunner.class)
+@EnableAutoConfiguration
+@SpringBootApplication
+@SpringBootTest(classes = {CamelAutoConfiguration.class, CamelRouteControllerEndpointAutoConfiguration.class, ActuatorTestRoute.class},
+        properties = {
+                "camel.supervising.controller.enabled = true"
+        })
+public class CamelRouteControllerMvcEndpointTest extends Assert {
+
+    @Autowired
+    CamelRouteControllerMvcEndpoint endpoint;
+
+    @Autowired
+    CamelContext camelContext;
+
+    @Test
+    public void testRouteControllerEndpoint() throws Exception {
+        List<String> routesId = (List<String>)endpoint.invoke();
+
+        assertFalse(routesId.isEmpty());
+        assertEquals(routesId.size(), camelContext.getRoutes().size());
+        assertTrue(routesId.stream().anyMatch(r -> "foo-route".equals(r)));
+    }
+
+
+}
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointDisabledTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointDisabledTest.java
new file mode 100644
index 0000000..681baa5
--- /dev/null
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointDisabledTest.java
@@ -0,0 +1,63 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.boot.actuate.endpoint;
+
+import java.util.List;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.model.RouteInfo;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+
+/**
+ * Test for the {@link CamelRoutesEndpoint} actuator endpoint.
+ */
+@DirtiesContext
+@RunWith(SpringRunner.class)
+@EnableAutoConfiguration
+@SpringBootApplication
+@SpringBootTest(classes = {CamelAutoConfiguration.class, CamelRoutesEndpointAutoConfiguration.class, ActuatorTestRoute.class},
+        properties = {
+                "endpoints.camelroutes.enabled = false"
+        })
+public class CamelRoutesEndpointDisabledTest extends Assert {
+
+    @Autowired(required = false)
+    CamelRoutesEndpoint routesEndpoint;
+
+    @Autowired(required = false)
+    CamelRoutesMvcEndpoint routesMvcEndpoint;
+
+    @Autowired
+    CamelContext camelContext;
+
+    @Test
+    public void testRoutesEndpointNotPresent() throws Exception {
+        Assert.assertNull(routesEndpoint);
+        Assert.assertNull(routesMvcEndpoint);
+    }
+
+}
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointGloballyDisabledAndReenabledTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointGloballyDisabledAndReenabledTest.java
new file mode 100644
index 0000000..c0f8537
--- /dev/null
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointGloballyDisabledAndReenabledTest.java
@@ -0,0 +1,60 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.boot.actuate.endpoint;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * Test for the {@link CamelRoutesEndpoint} actuator endpoint.
+ */
+@DirtiesContext
+@RunWith(SpringRunner.class)
+@EnableAutoConfiguration
+@SpringBootApplication
+@SpringBootTest(classes = {CamelAutoConfiguration.class, CamelRoutesEndpointAutoConfiguration.class, ActuatorTestRoute.class},
+        properties = {
+                "endpoints.enabled = false",
+                "endpoints.camelroutes.enabled = true"
+        })
+public class CamelRoutesEndpointGloballyDisabledAndReenabledTest extends Assert {
+
+    @Autowired
+    CamelRoutesEndpoint routesEndpoint;
+
+    @Autowired
+    CamelRoutesMvcEndpoint routesMvcEndpoint;
+
+    @Autowired
+    CamelContext camelContext;
+
+    @Test
+    public void testRoutesEndpointPresent() throws Exception {
+        Assert.assertNotNull(routesEndpoint);
+        Assert.assertNotNull(routesMvcEndpoint);
+    }
+
+}
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/health/CamelHealthDisabledTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/health/CamelHealthDisabledTest.java
new file mode 100644
index 0000000..649fb65
--- /dev/null
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/health/CamelHealthDisabledTest.java
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.boot.actuate.health;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@EnableAutoConfiguration
+@SpringBootApplication
+@SpringBootTest(classes = {CamelAutoConfiguration.class, CamelHealthAutoConfiguration.class, MyCamelRoute.class},
+        properties = {
+            "camel.health.enabled = false"
+        })
+public class CamelHealthDisabledTest extends Assert {
+    @Autowired(required = false)
+    CamelHealthIndicator indicator;
+
+    @Autowired
+    CamelContext camelContext;
+
+    @Test
+    public void shouldNotHaveHealth() throws Exception {
+        assertNull(indicator);
+    }
+
+}

-- 
To stop receiving notification emails like this one, please contact
['"commits@camel.apache.org" <co...@camel.apache.org>'].