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 2009/09/07 11:22:18 UTC
svn commit: r812052 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/impl/ main/java/org/apache/camel/management/
main/java/org/apache/camel/management/mbean/
test/java/org/apache/camel/management/
Author: davsclaus
Date: Mon Sep 7 09:22:18 2009
New Revision: 812052
URL: http://svn.apache.org/viewvc?rev=812052&view=rev
Log:
CAMEL-1933: Statistics can now be enabled/disabled from JMX management.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java
- copied, changed from r812001, camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedDelayerTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedPerformanceCounter.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java?rev=812052&r1=812051&r2=812052&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java Mon Sep 7 09:22:18 2009
@@ -29,10 +29,10 @@
import org.apache.camel.ServicePoolAware;
import org.apache.camel.spi.ServicePool;
import org.apache.camel.util.LRUCache;
-import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
import org.apache.camel.util.ServiceHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
/**
* Cache containing created {@link Producer}.
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java?rev=812052&r1=812051&r2=812052&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/InstrumentationProcessor.java Mon Sep 7 09:22:18 2009
@@ -57,8 +57,8 @@
public void process(Exchange exchange) throws Exception {
if (processor != null) {
- long startTime = 0;
- if (counter != null) {
+ long startTime = -1;
+ if (counter != null && counter.isStatisticsEnabled()) {
startTime = System.currentTimeMillis();
}
@@ -68,7 +68,7 @@
exchange.setException(e);
}
- if (counter != null) {
+ if (startTime != -1) {
recordTime(exchange, System.currentTimeMillis() - startTime);
}
}
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=812052&r1=812051&r2=812052&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 Mon Sep 7 09:22:18 2009
@@ -37,6 +37,7 @@
private Statistic firstExchangeFailureTime;
private Statistic lastExchangeCompletedTime;
private Statistic lastExchangeFailureTime;
+ private boolean statisticsEnabled = true;
public ManagedPerformanceCounter(ManagementStrategy strategy) {
super(strategy);
@@ -129,6 +130,16 @@
return value > 0 ? new Date(value) : null;
}
+ @ManagedAttribute(description = "Statistics enabled")
+ public boolean isStatisticsEnabled() {
+ return statisticsEnabled;
+ }
+
+ @ManagedAttribute(description = "Statistics enabled")
+ public void setStatisticsEnabled(boolean statisticsEnabled) {
+ this.statisticsEnabled = statisticsEnabled;
+ }
+
/**
* This method is called when an exchange has been processed successfully.
*
@@ -166,4 +177,5 @@
lastExchangeFailureTime.updateValue(now);
}
+
}
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java (from r812001, camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedDelayerTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedDelayerTest.java&r1=812001&r2=812052&rev=812052&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedDelayerTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedStatisticsDisabledTest.java Mon Sep 7 09:22:18 2009
@@ -16,6 +16,8 @@
*/
package org.apache.camel.management;
+import java.util.Set;
+import javax.management.Attribute;
import javax.management.MBeanServer;
import javax.management.ObjectName;
@@ -26,7 +28,7 @@
/**
* @version $Revision$
*/
-public class ManagedDelayerTest extends ContextTestSupport {
+public class ManagedStatisticsDisabledTest extends ContextTestSupport {
@Override
protected CamelContext createCamelContext() throws Exception {
@@ -38,46 +40,51 @@
}
@SuppressWarnings("unchecked")
- public void testManageDelay() throws Exception {
- getMockEndpoint("mock:result").expectedMessageCount(1);
-
+ public void testManageStatisticsDisabled() throws Exception {
template.sendBody("direct:start", "Hello World");
-
- assertMockEndpointsSatisfied();
+ template.sendBody("direct:start", "Bye World");
// get the stats for the route
MBeanServer mbeanServer = context.getManagementStrategy().getManagementAgent().getMBeanServer();
- // get the object name for the delayer
- ObjectName delayerName = ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=processors,name=\"mydelayer\"");
+ Set<ObjectName> set = mbeanServer.queryNames(new ObjectName("*:type=routes,*"), null);
+ assertEquals(1, set.size());
+
+ ObjectName on = set.iterator().next();
// use route to get the total time
- ObjectName routeName = ObjectName.getInstance("org.apache.camel:context=localhost/camel-1,type=routes,name=\"route1\"");
- Long completed = (Long) mbeanServer.getAttribute(routeName, "ExchangesCompleted");
- assertEquals(1, completed.longValue());
+ Long completed = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
+ assertEquals(2, completed.longValue());
+
+ // disable statistics
+ mbeanServer.setAttribute(on, new Attribute("StatisticsEnabled", false));
- Long last = (Long) mbeanServer.getAttribute(routeName, "LastProcessingTime");
- Long total = (Long) mbeanServer.getAttribute(routeName, "TotalProcessingTime");
+ // send in another message
+ template.sendBody("direct:start", "Goodday World");
- assertTrue("Should take around 1 sec: was " + last, last > 900);
- assertTrue("Should take around 1 sec: was " + total, total > 900);
+ // should stay at 2
+ completed = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
+ assertEquals(2, completed.longValue());
- // change the delay time using JMX
- mbeanServer.invoke(delayerName, "constantDelay", new Object[]{2000}, new String[]{"java.lang.Integer"});
+ // enable statistics
+ mbeanServer.setAttribute(on, new Attribute("StatisticsEnabled", true));
// send in another message
- template.sendBody("direct:start", "Bye World");
+ template.sendBody("direct:start", "Hi World");
- Long delay = (Long) mbeanServer.getAttribute(delayerName, "Delay");
- assertNotNull(delay);
+ // should now be 3
+ completed = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
+ assertEquals(3, completed.longValue());
- completed = (Long) mbeanServer.getAttribute(routeName, "ExchangesCompleted");
- assertEquals(2, completed.longValue());
- last = (Long) mbeanServer.getAttribute(routeName, "LastProcessingTime");
- total = (Long) mbeanServer.getAttribute(routeName, "TotalProcessingTime");
+ // now reset it
+ mbeanServer.invoke(on, "reset", null, null);
- assertTrue("Should take around 2 sec: was " + last, last > 1900);
- assertTrue("Should be around 3 sec now: was " + total, total > 2900);
+ // send in another message
+ template.sendBody("direct:start", "Hallo World");
+
+ // should now be 1
+ completed = (Long) mbeanServer.getAttribute(on, "ExchangesCompleted");
+ assertEquals(1, completed.longValue());
}
@Override
@@ -85,12 +92,9 @@
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start")
- .to("log:foo")
- .delay(1000).id("mydelayer")
- .to("mock:result");
+ from("direct:start").to("mock:result");
}
};
}
-}
+}
\ No newline at end of file