Repository: camel Updated Branches: refs/heads/master 3d8ff95b9 -> 6d3d1309c
CAMEL-9179: Add uptime to route so we can easily see per route how long time they have been running Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/92c5fe5a Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/92c5fe5a Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/92c5fe5a Branch: refs/heads/master Commit: 92c5fe5a29c6e4599a07d829fec113ed93ba2a29 Parents: 3d8ff95 Author: Claus Ibsen <davscl...@apache.org> Authored: Mon Sep 28 10:55:32 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Mon Sep 28 10:55:32 2015 +0200 ---------------------------------------------------------------------- .../src/main/java/org/apache/camel/Route.java | 7 +++++++ .../api/management/mbean/ManagedRouteMBean.java | 3 +++ .../apache/camel/impl/DefaultCamelContext.java | 2 +- .../org/apache/camel/impl/DefaultRoute.java | 20 ++++++++++++++++++-- .../camel/management/mbean/ManagedRoute.java | 4 ++++ .../camel/management/ManagedRouteStopTest.java | 7 +++++++ 6 files changed, 40 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/92c5fe5a/camel-core/src/main/java/org/apache/camel/Route.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/Route.java b/camel-core/src/main/java/org/apache/camel/Route.java index d5cc0db..31b16b1 100644 --- a/camel-core/src/main/java/org/apache/camel/Route.java +++ b/camel-core/src/main/java/org/apache/camel/Route.java @@ -46,6 +46,13 @@ public interface Route extends EndpointAware { String getId(); /** + * Gets the uptime in a human readable format + * + * @return the uptime in days/hours/minutes + */ + String getUptime(); + + /** * Gets the inbound {@link Consumer} * * @return the inbound consumer http://git-wip-us.apache.org/repos/asf/camel/blob/92c5fe5a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java index 7083a0f..9d9e9b8 100644 --- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java +++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteMBean.java @@ -33,6 +33,9 @@ public interface ManagedRouteMBean extends ManagedPerformanceCounterMBean { @ManagedAttribute(description = "Route State") String getState(); + @ManagedAttribute(description = "Route Uptime") + String getUptime(); + /** * @deprecated use {@link #getExchangesInflight()} */ http://git-wip-us.apache.org/repos/asf/camel/blob/92c5fe5a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java index c7207fe..5935f52 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java @@ -2654,7 +2654,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon public String getUptime() { // compute and log uptime if (startDate == null) { - return "not started"; + return ""; } long delta = new Date().getTime() - startDate.getTime(); return TimeUtils.printDuration(delta); http://git-wip-us.apache.org/repos/asf/camel/blob/92c5fe5a/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java index 0d214c0..2b280e7 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultRoute.java @@ -17,6 +17,7 @@ package org.apache.camel.impl; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -26,6 +27,7 @@ import org.apache.camel.Route; import org.apache.camel.Service; import org.apache.camel.spi.RouteContext; import org.apache.camel.support.ServiceSupport; +import org.apache.camel.util.TimeUtils; /** * Default implementation of {@link Route}. @@ -42,6 +44,7 @@ public abstract class DefaultRoute extends ServiceSupport implements Route { private final Map<String, Object> properties = new HashMap<String, Object>(); private final List<Service> services = new ArrayList<Service>(); private final RouteContext routeContext; + private Date startDate; public DefaultRoute(RouteContext routeContext, Endpoint endpoint) { this.routeContext = routeContext; @@ -64,6 +67,16 @@ public abstract class DefaultRoute extends ServiceSupport implements Route { return (String) properties.get(Route.ID_PROPERTY); } + @Override + public String getUptime() { + // compute and log uptime + if (startDate == null) { + return ""; + } + long delta = new Date().getTime() - startDate.getTime(); + return TimeUtils.printDuration(delta); + } + public Endpoint getEndpoint() { return endpoint; } @@ -122,15 +135,18 @@ public abstract class DefaultRoute extends ServiceSupport implements Route { } protected void doStart() throws Exception { - // noop + startDate = new Date(); } protected void doStop() throws Exception { - // noop + // and clear start date + startDate = null; } @Override protected void doShutdown() throws Exception { + // and clear start date + startDate = null; // clear services when shutting down services.clear(); } http://git-wip-us.apache.org/repos/asf/camel/blob/92c5fe5a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java index 50d041c..2f11b41 100644 --- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java +++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java @@ -113,6 +113,10 @@ public class ManagedRoute extends ManagedPerformanceCounter implements TimerList return status.name(); } + public String getUptime() { + return route.getUptime(); + } + public Integer getInflightExchanges() { return (int) super.getExchangesInflight(); } http://git-wip-us.apache.org/repos/asf/camel/blob/92c5fe5a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java index 7c42de1..4c82293 100644 --- a/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java +++ b/camel-core/src/test/java/org/apache/camel/management/ManagedRouteStopTest.java @@ -57,6 +57,10 @@ public class ManagedRouteStopTest extends ManagementTestSupport { String state = (String) mbeanServer.getAttribute(on, "State"); assertEquals("Should be started", ServiceStatus.Started.name(), state); + String uptime = (String) mbeanServer.getAttribute(on, "Uptime"); + assertNotNull(uptime); + log.info("Uptime: {}", uptime); + mbeanServer.invoke(on, "stop", null, null); registered = mbeanServer.isRegistered(on); @@ -65,6 +69,9 @@ public class ManagedRouteStopTest extends ManagementTestSupport { // should be stopped, eg its removed state = (String) mbeanServer.getAttribute(on, "State"); assertEquals("Should be stopped", ServiceStatus.Stopped.name(), state); + + uptime = (String) mbeanServer.getAttribute(on, "Uptime"); + assertEquals("", uptime); } @Override