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

Reply via email to