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 2010/12/18 19:46:46 UTC
svn commit: r1050691 -
/camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionWithInterceptSendToEndpointIssueWithPredicateTest.java
Author: davsclaus
Date: Sat Dec 18 18:46:46 2010
New Revision: 1050691
URL: http://svn.apache.org/viewvc?rev=1050691&view=rev
Log:
Added test based on user forum issue
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionWithInterceptSendToEndpointIssueWithPredicateTest.java
- copied, changed from r1050690, camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionWithInterceptSendToEndpointIssueTest.java
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionWithInterceptSendToEndpointIssueWithPredicateTest.java (from r1050690, camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionWithInterceptSendToEndpointIssueTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionWithInterceptSendToEndpointIssueWithPredicateTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionWithInterceptSendToEndpointIssueWithPredicateTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionWithInterceptSendToEndpointIssueTest.java&r1=1050690&r2=1050691&rev=1050691&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionWithInterceptSendToEndpointIssueTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionWithInterceptSendToEndpointIssueWithPredicateTest.java Sat Dec 18 18:46:46 2010
@@ -17,10 +17,14 @@
package org.apache.camel.issues;
import java.net.ConnectException;
+import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.camel.CamelExecutionException;
import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
+import org.apache.camel.Predicate;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.PredicateBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.model.RouteDefinition;
@@ -29,33 +33,43 @@ import org.apache.camel.model.RouteDefin
*
* @version $Revision$
*/
-public class RouteScopedOnExceptionWithInterceptSendToEndpointIssueTest extends ContextTestSupport {
+public class RouteScopedOnExceptionWithInterceptSendToEndpointIssueWithPredicateTest extends ContextTestSupport {
+
+ private final AtomicInteger invoked = new AtomicInteger();
public void testIssue() throws Exception {
+ final Predicate fail = PredicateBuilder.or(
+ header(Exchange.REDELIVERY_COUNTER).isNull(),
+ header(Exchange.REDELIVERY_COUNTER).isLessThan(5));
+
RouteDefinition route = context.getRouteDefinitions().get(0);
route.adviceWith(context, new RouteBuilder() {
@Override
public void configure() throws Exception {
interceptSendToEndpoint("seda:*")
.skipSendToOriginalEndpoint()
- .throwException(new ConnectException("Forced"));
+ .process(new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ invoked.incrementAndGet();
+
+ if (fail.matches(exchange)) {
+ throw new ConnectException("Forced");
+ }
+ }
+ }).to("mock:ok");
}
});
getMockEndpoint("mock:global").expectedMessageCount(0);
- getMockEndpoint("mock:seda").expectedMessageCount(0);
- // we fail all redeliveries so after that we send to mock:exhausted
- getMockEndpoint("mock:exhausted").expectedMessageCount(1);
-
- try {
- template.sendBody("direct:start", "Hello World");
- fail("Should thrown an exception");
- } catch (CamelExecutionException e) {
- ConnectException cause = assertIsInstanceOf(ConnectException.class, e.getCause());
- assertEquals("Forced", cause.getMessage());
- }
+ getMockEndpoint("mock:ok").expectedMessageCount(1);
+ getMockEndpoint("mock:exhausted").expectedMessageCount(0);
+
+ template.sendBody("direct:start", "Hello World");
assertMockEndpointsSatisfied();
+
+ // 5 retry + 1 ok
+ assertEquals(6, invoked.get());
}
@Override
@@ -64,17 +78,17 @@ public class RouteScopedOnExceptionWithI
@Override
public void configure() throws Exception {
errorHandler(deadLetterChannel("mock:global")
- .maximumRedeliveries(2)
- .redeliveryDelay(5000));
+ .maximumRedeliveries(2)
+ .redeliveryDelay(5000));
from("direct:start")
- // no redelivery delay for faster unit tests
- .onException(ConnectException.class).maximumRedeliveries(5).redeliveryDelay(0)
- .logRetryAttempted(true).retryAttemptedLogLevel(LoggingLevel.WARN)
- // send to mock when we are exhausted
- .to("mock:exhausted")
- .end()
- .to("seda:foo");
+ // no redelivery delay for faster unit tests
+ .onException(ConnectException.class).maximumRedeliveries(5).redeliveryDelay(0)
+ .logRetryAttempted(true).retryAttemptedLogLevel(LoggingLevel.WARN)
+ // send to mock when we are exhausted
+ .to("mock:exhausted")
+ .end()
+ .to("seda:foo");
}
};
}