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/07/12 18:31:23 UTC

svn commit: r793373 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/component/mock/ camel-core/src/main/java/org/apache/camel/processor/ camel-core/src/test/java/org/apache/camel/processor/ components/camel-spring/src/main/java/org/apache/...

Author: davsclaus
Date: Sun Jul 12 16:31:23 2009
New Revision: 793373

URL: http://svn.apache.org/viewvc?rev=793373&view=rev
Log:
CAMEL-1817: Part of patch merged. Eg stuff not so much about performance. Added option to mock endpoint to avoid collection exchanges in case you want test as fast as you can go.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java?rev=793373&r1=793372&r2=793373&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java Sun Jul 12 16:31:23 2009
@@ -81,6 +81,7 @@
     private Object propertyValue;
     private Object actualProperty;
     private Processor reporter;
+    private int collectMaximumExchanges = -1;
 
     public MockEndpoint(String endpointUri, Component component) {
         super(endpointUri, component);
@@ -678,7 +679,7 @@
     }
 
     public int getReceivedCounter() {
-        return getReceivedExchanges().size();
+        return counter;
     }
 
     public List<Exchange> getReceivedExchanges() {
@@ -767,6 +768,14 @@
         this.reporter = reporter;
     }
 
+    public int getCollectMaximumExchanges() {
+        return collectMaximumExchanges;
+    }
+
+    public void setCollectMaximumExchanges(int collectMaximumExchanges) {
+        this.collectMaximumExchanges = collectMaximumExchanges;
+    }
+
     // Implementation methods
     // -------------------------------------------------------------------------
     private void init() {
@@ -783,6 +792,7 @@
         expectedMinimumCount = -1;
         expectedBodyValues = null;
         actualBodyValues = new ArrayList();
+        collectMaximumExchanges = -1;
     }
 
     protected synchronized void onExchange(Exchange exchange) {
@@ -828,7 +838,10 @@
 
         LOG.debug(getEndpointUri() + " >>>> " + (++counter) + " : " + exchange + " with body: " + actualBody);
 
-        receivedExchanges.add(exchange);
+        // only collect if needed
+        if (collectMaximumExchanges == -1 || counter < collectMaximumExchanges) {
+            receivedExchanges.add(exchange);
+        }
 
         Processor processor = processors.get(getReceivedCounter()) != null
                 ? processors.get(getReceivedCounter()) : defaultProcessor;

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java?rev=793373&r1=793372&r2=793373&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Pipeline.java Sun Jul 12 16:31:23 2009
@@ -77,20 +77,23 @@
 
             // check for error if so we should break out
             boolean exceptionHandled = hasExceptionBeenHandledByErrorHandler(nextExchange);
-            if (nextExchange.isFailed() || exceptionHandled) {
+            if (nextExchange.isFailed() || nextExchange.isRollbackOnly() ||  exceptionHandled) {
                 // The Exchange.ERRORHANDLED_HANDLED property is only set if satisfactory handling was done
                 // by the error handler. It's still an exception, the exchange still failed.
                 if (LOG.isDebugEnabled()) {
                     StringBuilder sb = new StringBuilder();
                     sb.append("Message exchange has failed so breaking out of pipeline: ").append(nextExchange);
+                    if (nextExchange.isRollbackOnly()) {
+                        sb.append(" Marked as rollback only.");
+                    }
                     if (nextExchange.getException() != null) {
-                        sb.append(" exception: ").append(nextExchange.getException());
+                        sb.append(" Exception: ").append(nextExchange.getException());
                     }
                     if (nextExchange.hasFault()) {
-                        sb.append(" fault: ").append(nextExchange.getFault());
+                        sb.append(" Fault: ").append(nextExchange.getFault());
                     }
                     if (exceptionHandled) {
-                        sb.append(" handled by the error handler");
+                        sb.append(" Handled by the error handler.");
                     }
                     LOG.debug(sb.toString());
                 }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java?rev=793373&r1=793372&r2=793373&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java Sun Jul 12 16:31:23 2009
@@ -33,6 +33,8 @@
 
     private int size = 10000;
     private SimpleDataSet dataSet = new SimpleDataSet(size);
+    // do not collect exchanges to go as fast as we can
+    private String uri = "mock:results?collectMaximumExchanges=0";
 
     public void testPerformance() throws Exception {
         if (!canRunOnThisPlatform()) {
@@ -41,7 +43,7 @@
 
         long start = System.currentTimeMillis();
 
-        MockEndpoint endpoint = getMockEndpoint("mock:results");
+        MockEndpoint endpoint = getMockEndpoint(uri);
         endpoint.expectedMessageCount((int) dataSet.getSize());
         endpoint.expectedHeaderReceived("foo", 123);
 
@@ -79,8 +81,8 @@
                 from("direct:start").to("log:a?level=OFF", "log:b?level=OFF", "direct:c");
                 from("direct:c")
                     .choice()
-                        .when().header("foo").to("mock:results", "dataset:foo")
-                        .otherwise().to("mock:results", "dataset:foo")
+                        .when().header("foo").to(uri, "dataset:foo")
+                        .otherwise().to(uri, "dataset:foo")
                     .end();
             }
         };

Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java?rev=793373&r1=793372&r2=793373&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java Sun Jul 12 16:31:23 2009
@@ -167,6 +167,7 @@
             // the exception back by rehtrowing it. We cannot mark it on the exchange as Camel
             // uses copies of exchanges in its pipeline and the data isnt copied back in case
             // when an exception occured
+            // TODO: revist if/when we avoid doing the copying in the pipeline
             return new TransactedRuntimeCamelException(exception, true);
         }
     }