Author: davsclaus
Date: Sun Dec 18 08:48:04 2011
New Revision: 1220357

URL: http://svn.apache.org/viewvc?rev=1220357&view=rev
Log:
CAMEL-4791: Added details about first/last exchangeId for completed/failued to 
JMX stats.

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedRedeliverTest.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java?rev=1220357&r1=1220356&r2=1220357&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedPerformanceCounterMBean.java
 Sun Dec 18 08:48:04 2011
@@ -56,15 +56,27 @@ public interface ManagedPerformanceCount
     @ManagedAttribute(description = "Last Exchange Completed Timestamp")
     Date getLastExchangeCompletedTimestamp();
 
+    @ManagedAttribute(description = "Last Exchange Completed ExchangeId")
+    String getLastExchangeCompletedExchangeId();
+
     @ManagedAttribute(description = "First Exchange Completed Timestamp")
     Date getFirstExchangeCompletedTimestamp();
 
+    @ManagedAttribute(description = "First Exchange Completed ExchangeId")
+    String getFirstExchangeCompletedExchangeId();
+
     @ManagedAttribute(description = "Last Exchange Failed Timestamp")
     Date getLastExchangeFailureTimestamp();
 
+    @ManagedAttribute(description = "Last Exchange Failed ExchangeId")
+    String getLastExchangeFailureExchangeId();
+
     @ManagedAttribute(description = "First Exchange Failed Timestamp")
     Date getFirstExchangeFailureTimestamp();
 
+    @ManagedAttribute(description = "First Exchange Failed ExchangeId")
+    String getFirstExchangeFailureExchangeId();
+
     @ManagedAttribute(description = "Statistics enabled")
     boolean isStatisticsEnabled();
 

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java?rev=1220357&r1=1220356&r2=1220357&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java
 Sun Dec 18 08:48:04 2011
@@ -37,9 +37,13 @@ public abstract class ManagedPerformance
     private Statistic lastProcessingTime;
     private Statistic meanProcessingTime;
     private Statistic firstExchangeCompletedTimestamp;
+    private String firstExchangeCompletedExchangeId;
     private Statistic firstExchangeFailureTimestamp;
+    private String firstExchangeFailureExchangeId;
     private Statistic lastExchangeCompletedTimestamp;
+    private String lastExchangeCompletedExchangeId;
     private Statistic lastExchangeFailureTimestamp;
+    private String lastExchangeFailureExchangeId;
     private boolean statisticsEnabled = true;
 
     public void init(ManagementStrategy strategy) {
@@ -75,9 +79,13 @@ public abstract class ManagedPerformance
         lastProcessingTime.reset();
         meanProcessingTime.reset();
         firstExchangeCompletedTimestamp.reset();
+        firstExchangeCompletedExchangeId = null;
         firstExchangeFailureTimestamp.reset();
+        firstExchangeFailureExchangeId = null;
         lastExchangeCompletedTimestamp.reset();
+        lastExchangeCompletedExchangeId = null;
         lastExchangeFailureTimestamp.reset();
+        lastExchangeFailureExchangeId = null;
     }
 
     public long getExchangesCompleted() throws Exception {
@@ -121,21 +129,37 @@ public abstract class ManagedPerformance
         return value > 0 ? new Date(value) : null;
     }
 
+    public String getLastExchangeCompletedExchangeId() {
+        return lastExchangeCompletedExchangeId;
+    }
+
     public Date getFirstExchangeCompletedTimestamp() {
         long value = firstExchangeCompletedTimestamp.getValue();
         return value > 0 ? new Date(value) : null;
     }
 
+    public String getFirstExchangeCompletedExchangeId() {
+        return firstExchangeCompletedExchangeId;
+    }
+
     public Date getLastExchangeFailureTimestamp() {
         long value = lastExchangeFailureTimestamp.getValue();
         return value > 0 ? new Date(value) : null;
     }
 
+    public String getLastExchangeFailureExchangeId() {
+        return lastExchangeFailureExchangeId;
+    }
+
     public Date getFirstExchangeFailureTimestamp() {
         long value = firstExchangeFailureTimestamp.getValue();
         return value > 0 ? new Date(value) : null;
     }
 
+    public String getFirstExchangeFailureExchangeId() {
+        return firstExchangeFailureExchangeId;
+    }
+
     public boolean isStatisticsEnabled() {
         return statisticsEnabled;
     }
@@ -163,6 +187,10 @@ public abstract class ManagedPerformance
         }
 
         lastExchangeCompletedTimestamp.updateValue(now);
+        if (firstExchangeCompletedExchangeId == null) {
+            firstExchangeCompletedExchangeId = exchange.getExchangeId();
+        }
+        lastExchangeCompletedExchangeId = exchange.getExchangeId();
 
         // update mean
         long count = exchangesCompleted.getValue();
@@ -184,6 +212,10 @@ public abstract class ManagedPerformance
         }
 
         lastExchangeFailureTimestamp.updateValue(now);
+        if (firstExchangeFailureExchangeId == null) {
+            firstExchangeFailureExchangeId = exchange.getExchangeId();
+        }
+        lastExchangeFailureExchangeId = exchange.getExchangeId();
     }
 
 }

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedRedeliverTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedRedeliverTest.java?rev=1220357&r1=1220356&r2=1220357&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedRedeliverTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedRedeliverTest.java
 Sun Dec 18 08:48:04 2011
@@ -22,6 +22,7 @@ import javax.management.ObjectName;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
 
 /**
  *
@@ -31,7 +32,8 @@ public class ManagedRedeliverTest extend
     public void testRedeliver() throws Exception {
         MBeanServer mbeanServer = getMBeanServer();
 
-        getMockEndpoint("mock:foo").expectedMessageCount(1);
+        MockEndpoint mock = getMockEndpoint("mock:foo");
+        mock.expectedMessageCount(1);
 
         Object out = template.requestBody("direct:start", "Hello World");
         assertEquals("Error", out);
@@ -54,11 +56,22 @@ public class ManagedRedeliverTest extend
         num = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
         assertEquals(0, num.longValue());
 
-        num = (Long) mbeanServer.getAttribute(on, "ExchangesFailed");
+        num = (Long) mbeanServer.getAttribute(on, "ExchangesTotal");
         assertEquals(5, num.longValue());
 
+        // there should be 5 failed exchanges (1 first time, and 4 redelivery 
attempts)
+        num = (Long) mbeanServer.getAttribute(on, "ExchangesFailed");
+        assertEquals(5, num.longValue());
+        
+        // and we tried to redeliver the exchange 4 times, before it failed
         num = (Long) mbeanServer.getAttribute(on, "Redeliveries");
         assertEquals(4, num.longValue());
+
+        String first = (String) mbeanServer.getAttribute(on, 
"FirstExchangeFailureExchangeId");
+        assertEquals(mock.getReceivedExchanges().get(0).getExchangeId(), 
first);
+
+        String last = (String) mbeanServer.getAttribute(on, 
"LastExchangeFailureExchangeId");
+        assertEquals(mock.getReceivedExchanges().get(0).getExchangeId(), last);
     }
 
     @Override

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsTest.java?rev=1220357&r1=1220356&r2=1220357&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsTest.java
 Sun Dec 18 08:48:04 2011
@@ -21,6 +21,7 @@ import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
 
 /**
  * @version 
@@ -39,6 +40,9 @@ public class ManagedStatisticsTest exten
         // use route to get the total time
         Long completed = (Long) mbeanServer.getAttribute(on, 
"ExchangesCompleted");
         assertEquals(0, completed.longValue());
+        
+        MockEndpoint result = getMockEndpoint("mock:result");
+        result.expectedMessageCount(5);
 
         // send in 5 messages
         template.sendBody("direct:start", "A");
@@ -47,9 +51,23 @@ public class ManagedStatisticsTest exten
         template.sendBody("direct:start", "D");
         template.sendBody("direct:start", "E");
 
+        assertMockEndpointsSatisfied();
+        
         // should be 5 on the route
         completed = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
         assertEquals(5, completed.longValue());
+        
+        String first = (String) mbeanServer.getAttribute(on, 
"FirstExchangeCompletedExchangeId");
+        assertEquals(result.getReceivedExchanges().get(0).getExchangeId(), 
first);
+
+        String firstFail = (String) mbeanServer.getAttribute(on, 
"FirstExchangeFailureExchangeId");
+        assertNull(firstFail);
+
+        String last = (String) mbeanServer.getAttribute(on, 
"LastExchangeCompletedExchangeId");
+        assertEquals(result.getReceivedExchanges().get(4).getExchangeId(), 
last);
+
+        String lastFail = (String) mbeanServer.getAttribute(on, 
"LastExchangeFailureExchangeId");
+        assertNull(lastFail);
 
         // should be 5 on the processors
         ObjectName foo = 
ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=processors,name=\"foo\"");


Reply via email to