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 2021/11/15 16:55:34 UTC
[camel-spring-boot] 01/02: Cleanup
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-spring-boot-3.12.x
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git
commit 8c866cd654d4b03f5a8d96109eb7a288d6af08bb
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Nov 5 11:30:23 2021 +0100
Cleanup
CAMEL-17169: camel-spring-boot management endpoints to work with latest spring boot 2.x style.
CAMEL-17169: camel-spring-boot management endpoints to work with latest spring boot 2.x style.
CAMEL-17169: camel-spring-boot management endpoints to work with latest spring boot 2.x style.
---
core/camel-spring-boot/pom.xml | 4 +-
.../src/main/docs/spring-boot.adoc | 4 +-
.../src/main/docs/spring-boot.json | 14 +--
.../endpoint/CamelRouteControllerEndpoint.java | 4 +-
...elRouteControllerEndpointAutoConfiguration.java | 6 +-
.../boot/actuate/endpoint/CamelRoutesEndpoint.java | 119 +++++++--------------
.../CamelRoutesEndpointAutoConfiguration.java | 13 +--
.../endpoint/CamelRoutesEndpointProperties.java | 15 +--
.../additional-spring-configuration-metadata.json | 18 ----
.../src/main/resources/META-INF/spring.factories | 2 +
.../CamelRouteControllerEndpointEnabledTest.java | 4 +-
...erEndpointGloballyDisabledAndReenabledTest.java | 29 ++---
.../endpoint/CamelRouteControllerEndpointTest.java | 25 ++---
.../endpoint/CamelRoutesEndpointEnabledTest.java | 3 +-
... CamelRoutesEndpointReadOnlyOperationTest.java} | 16 +--
.../CamelRoutesEndpointWriteOperationTest.java | 18 ++--
16 files changed, 109 insertions(+), 185 deletions(-)
diff --git a/core/camel-spring-boot/pom.xml b/core/camel-spring-boot/pom.xml
index c8b9ffd..a053561 100644
--- a/core/camel-spring-boot/pom.xml
+++ b/core/camel-spring-boot/pom.xml
@@ -120,11 +120,11 @@
</exclusions>
<scope>test</scope>
</dependency>
- <!-- <dependency>
+ <dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
- </dependency> -->
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-management</artifactId>
diff --git a/core/camel-spring-boot/src/main/docs/spring-boot.adoc b/core/camel-spring-boot/src/main/docs/spring-boot.adoc
index 43a1fd3..76470ac 100644
--- a/core/camel-spring-boot/src/main/docs/spring-boot.adoc
+++ b/core/camel-spring-boot/src/main/docs/spring-boot.adoc
@@ -264,11 +264,9 @@ The component supports 173 options, which are listed below.
| *camel.threadpool.rejected-policy* | Sets the default handler for tasks which cannot be executed by the thread pool. | | ThreadPoolRejectedPolicy
| *camel.threadpool.time-unit* | Sets the default time unit used for keep alive time | | TimeUnit
| *management.endpoint.camelroutecontroller.cache.time-to-live* | Maximum time that a response can be cached. | 0ms | Duration
-| *management.endpoint.camelroutecontroller.enabled* | To turn on or off information about Camel Route Controller via actuator endpoint. | true | Boolean
+| *management.endpoint.camelroutecontroller.enabled* | Whether to enable the camelroutecontroller endpoint. | true | Boolean
| *management.endpoint.camelroutes.cache.time-to-live* | Maximum time that a response can be cached. | 0ms | Duration
-| *management.endpoint.camelroutes.enabled* | To turn on or off information about Camel Routes via actuator endpoint. | true | Boolean
| *management.endpoint.camelroutes.enabled* | Whether to enable the camelroutes endpoint. | true | Boolean
-| *management.endpoint.camelroutes.enabled* | | false | Boolean
| *management.endpoint.camelroutes.read-only* | Whether Camel Routes actuator is in read-only mode. If not in read-only mode then operations to start/stop routes would be enabled. | true | Boolean
| *management.info.camel.enabled* | Whether to enable Camel info. | true | Boolean
| *camel.springboot.route-controller-logging-level* | *Deprecated* Sets the logging level used for logging route activity (such as starting and stopping routes). The default logging level is DEBUG. | | LoggingLevel
diff --git a/core/camel-spring-boot/src/main/docs/spring-boot.json b/core/camel-spring-boot/src/main/docs/spring-boot.json
index a68970b..1f97c10 100644
--- a/core/camel-spring-boot/src/main/docs/spring-boot.json
+++ b/core/camel-spring-boot/src/main/docs/spring-boot.json
@@ -1232,7 +1232,7 @@
{
"name": "management.endpoint.camelroutecontroller.enabled",
"type": "java.lang.Boolean",
- "description": "To turn on or off information about Camel Route Controller via actuator endpoint.",
+ "description": "Whether to enable the camelroutecontroller endpoint.",
"sourceType": "org.apache.camel.spring.boot.actuate.endpoint.CamelRouteControllerEndpoint",
"defaultValue": true
},
@@ -1246,23 +1246,11 @@
{
"name": "management.endpoint.camelroutes.enabled",
"type": "java.lang.Boolean",
- "description": "To turn on or off information about Camel Routes via actuator endpoint.",
- "defaultValue": true
- },
- {
- "name": "management.endpoint.camelroutes.enabled",
- "type": "java.lang.Boolean",
"description": "Whether to enable the camelroutes endpoint.",
"sourceType": "org.apache.camel.spring.boot.actuate.endpoint.CamelRoutesEndpoint",
"defaultValue": true
},
{
- "name": "management.endpoint.camelroutes.enabled",
- "type": "java.lang.Boolean",
- "sourceType": "org.apache.camel.spring.boot.actuate.endpoint.CamelRoutesEndpointProperties",
- "defaultValue": false
- },
- {
"name": "management.endpoint.camelroutes.read-only",
"type": "java.lang.Boolean",
"description": "Whether Camel Routes actuator is in read-only mode. If not in read-only mode then operations to start\/stop routes would be enabled.",
diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpoint.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpoint.java
index c6d3f00..e0c1123 100644
--- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpoint.java
+++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpoint.java
@@ -27,9 +27,9 @@ import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
/*
- * {@link Endpoint} to expose {@link RouteController} information.
+ * Spring Boot Management Endpoint to expose Camel RouteController information.
*/
-@Endpoint(id = "camelroutecontroller", enableByDefault = true)
+@Endpoint(id = "camelroutecontroller")
public class CamelRouteControllerEndpoint {
private CamelContext camelContext;
diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointAutoConfiguration.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointAutoConfiguration.java
index 0b2cccd..644f1cd 100644
--- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointAutoConfiguration.java
+++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointAutoConfiguration.java
@@ -18,6 +18,7 @@ package org.apache.camel.spring.boot.actuate.endpoint;
import org.apache.camel.CamelContext;
import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnAvailableEndpoint;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -28,11 +29,12 @@ import org.springframework.context.annotation.Configuration;
/*
* Auto configuration for the {@link CamelRouteControllerEndpoint}.
*/
-@Configuration
-@ConditionalOnClass({CamelRouteControllerEndpoint.class})
+@Configuration(proxyBeanMethods = false)
+@ConditionalOnAvailableEndpoint(endpoint = CamelRouteControllerEndpoint.class)
@ConditionalOnBean(CamelAutoConfiguration.class)
@AutoConfigureAfter(CamelAutoConfiguration.class)
public class CamelRouteControllerEndpointAutoConfiguration {
+
@Bean
@ConditionalOnClass(CamelContext.class)
@ConditionalOnMissingBean
diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java
index 1b2c34c..1db4582 100644
--- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java
+++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpoint.java
@@ -26,14 +26,11 @@ import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.Route;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.StatefulService;
import org.apache.camel.api.management.ManagedCamelContext;
import org.apache.camel.api.management.mbean.ManagedRouteMBean;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.spi.RouteError;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.endpoint.annotation.Selector;
@@ -44,24 +41,19 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-
/*
- * {@link Endpoint} to expose {@link org.apache.camel.Route} information.
+ * Spring Boot Management Endpoint to expose Camel Route information.
*/
-@Endpoint(id = "camelroutes", enableByDefault = true)
+@Endpoint(id = "camelroutes")
public class CamelRoutesEndpoint {
private CamelContext camelContext;
- private static ExtendedCamelContext extendedContext;
- private static ManagedCamelContext mcontext;
- private static DefaultCamelContext dcontext;
+ private ManagedCamelContext managedCamelContext;
private CamelRoutesEndpointProperties properties;
public CamelRoutesEndpoint(CamelContext camelContext, CamelRoutesEndpointProperties properties) {
this.camelContext = camelContext;
- this.extendedContext = camelContext.getExtension(ExtendedCamelContext.class);
- this.mcontext = camelContext.getExtension(ManagedCamelContext.class);;
- this.dcontext = camelContext.getExtension(DefaultCamelContext.class);
+ this.managedCamelContext = camelContext.getExtension(ManagedCamelContext.class);
this.properties = properties;
}
@@ -73,12 +65,12 @@ public class CamelRoutesEndpoint {
@ReadOperation
public Object doReadAction(@Selector String id, @Selector ReadAction action) {
switch (action) {
- case DETAIL:
- return getRouteDetailsInfo(id);
- case INFO:
- return getRouteInfo(id);
- default:
- throw new IllegalArgumentException("Unsupported read action " + action);
+ case DETAIL:
+ return getRouteDetailsInfo(id);
+ case INFO:
+ return getRouteInfo(id);
+ default:
+ throw new IllegalArgumentException("Unsupported read action " + action);
}
}
@@ -89,29 +81,29 @@ public class CamelRoutesEndpoint {
}
switch (action) {
- case STOP:
- stopRoute(
- id,
- Optional.ofNullable(timeInfo).flatMap(ti -> Optional.ofNullable(ti.getTimeout())),
- Optional.of(TimeUnit.SECONDS),
- Optional.ofNullable(timeInfo).flatMap(ti -> Optional.ofNullable(ti.getAbortAfterTimeout())));
- break;
- case START:
- startRoute(id);
- break;
- case RESET:
- resetRoute(id);
- break;
- case SUSPEND:
- suspendRoute(id,
- Optional.ofNullable(timeInfo).flatMap(ti -> Optional.ofNullable(ti.getTimeout())),
- Optional.of(TimeUnit.SECONDS));
- break;
- case RESUME:
- resumeRoute(id);
- break;
- default:
- throw new IllegalArgumentException("Unsupported write action " + action);
+ case STOP:
+ stopRoute(
+ id,
+ Optional.ofNullable(timeInfo).flatMap(ti -> Optional.ofNullable(ti.getTimeout())),
+ Optional.of(TimeUnit.SECONDS),
+ Optional.ofNullable(timeInfo).flatMap(ti -> Optional.ofNullable(ti.getAbortAfterTimeout())));
+ break;
+ case START:
+ startRoute(id);
+ break;
+ case RESET:
+ resetRoute(id);
+ break;
+ case SUSPEND:
+ suspendRoute(id,
+ Optional.ofNullable(timeInfo).flatMap(ti -> Optional.ofNullable(ti.getTimeout())),
+ Optional.of(TimeUnit.SECONDS));
+ break;
+ case RESUME:
+ resumeRoute(id);
+ break;
+ default:
+ throw new IllegalArgumentException("Unsupported write action " + action);
}
}
@@ -149,7 +141,7 @@ public class CamelRoutesEndpoint {
private void resetRoute(String id) {
try {
- ManagedRouteMBean managedRouteMBean = mcontext.getManagedRoute(id, ManagedRouteMBean.class);
+ ManagedRouteMBean managedRouteMBean = managedCamelContext.getManagedRoute(id, ManagedRouteMBean.class);
if (managedRouteMBean != null) {
managedRouteMBean.reset(true);
}
@@ -198,17 +190,11 @@ public class CamelRoutesEndpoint {
public static class RouteEndpointInfo {
private final String id;
-
private final String group;
-
private final Map<String, Object> properties;
-
private final String description;
-
private final String uptime;
-
private final long uptimeMillis;
-
private final String status;
public RouteEndpointInfo(Route route) {
@@ -234,7 +220,7 @@ public class CamelRoutesEndpoint {
public String getId() {
return id;
}
-
+
public String getGroup() {
return group;
}
@@ -271,9 +257,9 @@ public class CamelRoutesEndpoint {
public RouteDetailsEndpointInfo(final CamelContext camelContext, final Route route) {
super(route);
-
if (camelContext.getManagementStrategy().getManagementAgent() != null) {
- this.routeDetails = new RouteDetails(mcontext.getManagedRoute(route.getId(), ManagedRouteMBean.class));
+ ManagedCamelContext mcc = camelContext.getExtension(ManagedCamelContext.class);
+ this.routeDetails = new RouteDetails(mcc.getManagedRoute(route.getId(), ManagedRouteMBean.class));
}
}
@@ -281,55 +267,29 @@ public class CamelRoutesEndpoint {
static class RouteDetails {
private long deltaProcessingTime;
-
private long exchangesInflight;
-
private long exchangesTotal;
-
private long externalRedeliveries;
-
private long failuresHandled;
-
private String firstExchangeCompletedExchangeId;
-
private Date firstExchangeCompletedTimestamp;
-
private String firstExchangeFailureExchangeId;
-
private Date firstExchangeFailureTimestamp;
-
private String lastExchangeCompletedExchangeId;
-
private Date lastExchangeCompletedTimestamp;
-
private String lastExchangeFailureExchangeId;
-
private Date lastExchangeFailureTimestamp;
-
private long lastProcessingTime;
-
private String load01;
-
private String load05;
-
private String load15;
-
private long maxProcessingTime;
-
private long meanProcessingTime;
-
private long minProcessingTime;
-
private Long oldestInflightDuration;
-
private String oldestInflightExchangeId;
-
private long redeliveries;
-
private long totalProcessingTime;
-
- private RouteError lastError;
-
private boolean hasRouteController;
RouteDetails(ManagedRouteMBean managedRoute) {
@@ -358,7 +318,6 @@ public class CamelRoutesEndpoint {
this.oldestInflightExchangeId = managedRoute.getOldestInflightExchangeId();
this.redeliveries = managedRoute.getRedeliveries();
this.totalProcessingTime = managedRoute.getTotalProcessingTime();
- //this.lastError = managedRoute.getLastError();
this.hasRouteController = managedRoute.getHasRouteController();
} catch (Exception e) {
// Ignore
@@ -461,10 +420,6 @@ public class CamelRoutesEndpoint {
return totalProcessingTime;
}
- public RouteError getLastError() {
- return lastError;
- }
-
public boolean getHasRouteController() {
return hasRouteController;
}
diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointAutoConfiguration.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointAutoConfiguration.java
index 24c9131..b29c2b5 100644
--- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointAutoConfiguration.java
+++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointAutoConfiguration.java
@@ -18,6 +18,7 @@ package org.apache.camel.spring.boot.actuate.endpoint;
import org.apache.camel.CamelContext;
import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnAvailableEndpoint;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -29,23 +30,17 @@ import org.springframework.context.annotation.Configuration;
/*
* Auto configuration for the {@link CamelRoutesEndpoint}.
*/
-@Configuration
+@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties({ CamelRoutesEndpointProperties.class })
-@ConditionalOnClass({CamelRoutesEndpoint.class})
+@ConditionalOnAvailableEndpoint(endpoint = CamelRoutesEndpoint.class)
@ConditionalOnBean(CamelAutoConfiguration.class)
@AutoConfigureAfter(CamelAutoConfiguration.class)
public class CamelRoutesEndpointAutoConfiguration {
- private CamelRoutesEndpointProperties properties;
-
- public CamelRoutesEndpointAutoConfiguration(CamelRoutesEndpointProperties properties) {
- this.properties = properties;
- }
-
@Bean
@ConditionalOnClass(CamelContext.class)
@ConditionalOnMissingBean
- public CamelRoutesEndpoint camelEndpoint(CamelContext camelContext) {
+ public CamelRoutesEndpoint camelEndpoint(CamelContext camelContext, CamelRoutesEndpointProperties properties) {
return new CamelRoutesEndpoint(camelContext, properties);
}
diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointProperties.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointProperties.java
index 21d447b..271f2b8 100644
--- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointProperties.java
+++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointProperties.java
@@ -21,8 +21,11 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties("management.endpoint.camelroutes")
public class CamelRoutesEndpointProperties {
+ /**
+ * Whether Camel Routes actuator is in read-only mode.
+ * If not in read-only mode then operations to start/stop routes would be enabled.
+ */
private boolean readOnly = true;
- private boolean enabled = false;
public boolean isReadOnly() {
return readOnly;
@@ -32,14 +35,4 @@ public class CamelRoutesEndpointProperties {
this.readOnly = readOnly;
}
- public boolean isEnabled() {
- return enabled;
- }
-
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
-
-
-
}
diff --git a/core/camel-spring-boot/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/core/camel-spring-boot/src/main/resources/META-INF/additional-spring-configuration-metadata.json
index cf56bd1..d1fb7f9 100644
--- a/core/camel-spring-boot/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++ b/core/camel-spring-boot/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -1,24 +1,6 @@
{
"properties": [
{
- "name": "management.endpoint.camelroutes.read-only",
- "type": "java.lang.Boolean",
- "description": "Whether Camel Routes actuator is in read-only mode. If not in read-only mode then operations to start/stop routes would be enabled.",
- "defaultValue": true
- },
- {
- "name": "management.endpoint.camelroutes.enabled",
- "type": "java.lang.Boolean",
- "description": "To turn on or off information about Camel Routes via actuator endpoint.",
- "defaultValue": true
- },
- {
- "name": "management.endpoint.camelroutecontroller.enabled",
- "type": "java.lang.Boolean",
- "description": "To turn on or off information about Camel Route Controller via actuator endpoint.",
- "defaultValue": true
- },
- {
"name": "management.info.camel.enabled",
"type": "java.lang.Boolean",
"description": "Whether to enable Camel info.",
diff --git a/core/camel-spring-boot/src/main/resources/META-INF/spring.factories b/core/camel-spring-boot/src/main/resources/META-INF/spring.factories
index 38f8a24..ba07de0 100644
--- a/core/camel-spring-boot/src/main/resources/META-INF/spring.factories
+++ b/core/camel-spring-boot/src/main/resources/META-INF/spring.factories
@@ -33,6 +33,8 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.apache.camel.spring.boot.CamelAutoConfiguration,\
+org.apache.camel.spring.boot.actuate.endpoint.CamelRouteControllerEndpointAutoConfiguration,\
+org.apache.camel.spring.boot.actuate.endpoint.CamelRoutesEndpointAutoConfiguration,\
org.apache.camel.spring.boot.actuate.health.CamelHealthCheckAutoConfiguration,\
org.apache.camel.spring.boot.actuate.info.CamelInfoAutoConfiguration,\
org.apache.camel.spring.boot.cloud.CamelCloudAutoConfiguration,\
diff --git a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointEnabledTest.java b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointEnabledTest.java
index 8fd384c..2cba0ca 100644
--- a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointEnabledTest.java
+++ b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointEnabledTest.java
@@ -36,11 +36,11 @@ import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
@SpringBootApplication
@SpringBootTest(
classes = {CamelAutoConfiguration.class, CamelRouteControllerEndpointAutoConfiguration.class, ActuatorTestRoute.class},
- properties = {"management.endpoint.camelroutecontroller.enabled=true"}
+ properties = {"management.endpoints.web.exposure.include=camelroutecontroller"}
)
public class CamelRouteControllerEndpointEnabledTest {
- @Autowired(required = true)
+ @Autowired
CamelRouteControllerEndpoint routeControllerEndpoint;
@Autowired
diff --git a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointGloballyDisabledAndReenabledTest.java b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointGloballyDisabledAndReenabledTest.java
index 5c60ef2..06a4dd3 100644
--- a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointGloballyDisabledAndReenabledTest.java
+++ b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointGloballyDisabledAndReenabledTest.java
@@ -18,34 +18,36 @@ package org.apache.camel.spring.boot.actuate.endpoint;
import org.apache.camel.CamelContext;
import org.apache.camel.spring.boot.CamelAutoConfiguration;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+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.apache.camel.test.spring.junit5.CamelSpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
/*
* Test for the {@link CamelRoutesEndpoint} actuator endpoint.
*/
@DirtiesContext
-@CamelSpringBootTest
+@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@SpringBootApplication
@SpringBootTest(
- classes = {CamelAutoConfiguration.class, CamelRoutesEndpointAutoConfiguration.class,
- CamelRouteControllerEndpointAutoConfiguration.class, ActuatorTestRoute.class},
- properties = {"management.endpoints.enabled-by-default = true",
- "management.endpoint.camelroutecontroller.enabled = true"}
+ classes = {CamelAutoConfiguration.class, CamelRoutesEndpointAutoConfiguration.class,
+ CamelRouteControllerEndpointAutoConfiguration.class, ActuatorTestRoute.class},
+ properties = {"management.endpoints.web.exposure.include=*",
+ "management.endpoint.camelroute.enabled=true",
+ "management.endpoint.camelroutecontroller.enabled=true"}
)
-public class CamelRouteControllerEndpointGloballyDisabledAndReenabledTest {
+public class CamelRouteControllerEndpointGloballyDisabledAndReenabledTest extends Assert {
- @Autowired
+ @Autowired(required = false)
CamelRouteControllerEndpoint routeControllerEndpoint;
- @Autowired
+ @Autowired(required = false)
CamelRoutesEndpoint routesEndpoint;
@Autowired
@@ -53,9 +55,8 @@ public class CamelRouteControllerEndpointGloballyDisabledAndReenabledTest {
@Test
public void testRoutesEndpointPresent() throws Exception {
-
- Assertions.assertNotNull(routesEndpoint);
- Assertions.assertNotNull(routeControllerEndpoint);
+ Assert.assertNotNull(routesEndpoint);
+ Assert.assertNotNull(routeControllerEndpoint);
}
}
diff --git a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointTest.java b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointTest.java
index c9bbd05..e73e2ec 100644
--- a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointTest.java
+++ b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRouteControllerEndpointTest.java
@@ -20,23 +20,29 @@ import java.util.List;
import org.apache.camel.CamelContext;
import org.apache.camel.spring.boot.CamelAutoConfiguration;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+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.apache.camel.test.spring.junit5.CamelSpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
/*
* Test for the {@link CamelRouteControllerEndpoint} actuator endpoint.
*/
@DirtiesContext
-@CamelSpringBootTest
+@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@SpringBootApplication
-@SpringBootTest(classes = {CamelAutoConfiguration.class, CamelRouteControllerEndpointAutoConfiguration.class, ActuatorTestRoute.class})
+@SpringBootTest(
+ classes = {CamelAutoConfiguration.class, CamelRouteControllerEndpointAutoConfiguration.class,
+ CamelRoutesEndpointAutoConfiguration.class, ActuatorTestRoute.class},
+ properties = {"management.endpoints.web.exposure.include=*",
+ "camel.springboot.routeControllerSuperviseEnabled=true"})
public class CamelRouteControllerEndpointTest {
@Autowired
@@ -48,13 +54,8 @@ public class CamelRouteControllerEndpointTest {
@Test
public void testRouteControllerEndpoint() throws Exception {
List<String> routesId = endpoint.getControlledRoutes();
-
- Assertions.assertNotNull(routesId);
- /* FIXME DefaultRouteController returns empty list while it does control any route...
- assertFalse(routesId.isEmpty());
- assertEquals(routesId.size(), camelContext.getRoutes().size());
- assertTrue(routesId.stream().anyMatch(r -> "foo-route".equals(r)));
- */
+ Assert.assertTrue(routesId.size() > 0);
+ Assert.assertTrue(routesId.contains("foo-route"));
}
}
diff --git a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointEnabledTest.java b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointEnabledTest.java
index cd4b043..c910cee 100644
--- a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointEnabledTest.java
+++ b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointEnabledTest.java
@@ -36,7 +36,8 @@ import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
@SpringBootApplication
@SpringBootTest(
classes = {CamelAutoConfiguration.class, CamelRoutesEndpointAutoConfiguration.class, ActuatorTestRoute.class},
- properties = {"management.endpoint.camelroutes.enabled = true"}
+ properties = {"management.endpoints.web.exposure.include=*",
+ "management.endpoint.camelroutes.enabled = true"}
)
public class CamelRoutesEndpointEnabledTest {
diff --git a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointWriteOperationTest.java b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointReadOnlyOperationTest.java
similarity index 83%
copy from core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointWriteOperationTest.java
copy to core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointReadOnlyOperationTest.java
index a392a18..dc83ee7 100644
--- a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointWriteOperationTest.java
+++ b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointReadOnlyOperationTest.java
@@ -22,6 +22,7 @@ import org.apache.camel.impl.engine.AbstractCamelContext;
import org.apache.camel.spring.boot.CamelAutoConfiguration;
import org.apache.camel.spring.boot.actuate.endpoint.CamelRoutesEndpoint.TimeInfo;
import org.apache.camel.spring.boot.actuate.endpoint.CamelRoutesEndpoint.WriteAction;
+import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,7 +30,6 @@ 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.apache.camel.test.spring.junit5.CamelSpringBootTest;
/*
* Test for the {@link CamelRoutesEndpoint} actuator endpoint.
@@ -40,8 +40,9 @@ import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
@SpringBootApplication
@SpringBootTest(
classes = {CamelAutoConfiguration.class, CamelRoutesEndpointAutoConfiguration.class, ActuatorTestRoute.class},
- properties = {"management.endpoint.camelroutes.read-only = false"})
-public class CamelRoutesEndpointWriteOperationTest {
+ properties = {"management.endpoints.web.exposure.include=*",
+ "management.endpoint.camelroutes.read-only = true"})
+public class CamelRoutesEndpointReadOnlyOperationTest {
@Autowired
CamelRoutesEndpoint endpoint;
@@ -57,8 +58,11 @@ public class CamelRoutesEndpointWriteOperationTest {
TimeInfo timeInfo = new TimeInfo();
timeInfo.setAbortAfterTimeout(true);
timeInfo.setTimeout(10L);
- endpoint.doWriteAction("foo-route", WriteAction.STOP, timeInfo);
- status = acontext.getRouteStatus("foo-route");
- Assertions.assertTrue(status.isStopped());
+ try {
+ endpoint.doWriteAction("foo-route", WriteAction.STOP, timeInfo);
+ Assertions.fail("Should not allow write");
+ } catch (IllegalArgumentException e) {
+ Assertions.assertEquals("Read only: write action STOP is not allowed", e.getMessage());
+ }
}
}
diff --git a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointWriteOperationTest.java b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointWriteOperationTest.java
index a392a18..15bb094 100644
--- a/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointWriteOperationTest.java
+++ b/core/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/actuate/endpoint/CamelRoutesEndpointWriteOperationTest.java
@@ -22,25 +22,27 @@ import org.apache.camel.impl.engine.AbstractCamelContext;
import org.apache.camel.spring.boot.CamelAutoConfiguration;
import org.apache.camel.spring.boot.actuate.endpoint.CamelRoutesEndpoint.TimeInfo;
import org.apache.camel.spring.boot.actuate.endpoint.CamelRoutesEndpoint.WriteAction;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
+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.apache.camel.test.spring.junit5.CamelSpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
/*
* Test for the {@link CamelRoutesEndpoint} actuator endpoint.
*/
@DirtiesContext
-@CamelSpringBootTest
+@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@SpringBootApplication
@SpringBootTest(
- classes = {CamelAutoConfiguration.class, CamelRoutesEndpointAutoConfiguration.class, ActuatorTestRoute.class},
- properties = {"management.endpoint.camelroutes.read-only = false"})
+ classes = {CamelAutoConfiguration.class, CamelRoutesEndpointAutoConfiguration.class, ActuatorTestRoute.class},
+ properties = {"management.endpoints.web.exposure.include=*",
+ "management.endpoint.camelroutes.read-only = false"})
public class CamelRoutesEndpointWriteOperationTest {
@Autowired
@@ -53,12 +55,12 @@ public class CamelRoutesEndpointWriteOperationTest {
public void testWriteOperation() throws Exception {
AbstractCamelContext acontext = camelContext.getExtension(AbstractCamelContext.class);
ServiceStatus status = acontext.getRouteStatus("foo-route");
- Assertions.assertTrue(status.isStarted());
+ Assert.assertTrue(status.isStarted());
TimeInfo timeInfo = new TimeInfo();
timeInfo.setAbortAfterTimeout(true);
timeInfo.setTimeout(10L);
endpoint.doWriteAction("foo-route", WriteAction.STOP, timeInfo);
status = acontext.getRouteStatus("foo-route");
- Assertions.assertTrue(status.isStopped());
+ Assert.assertTrue(status.isStopped());
}
}