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 2011/03/05 15:16:03 UTC
svn commit: r1078291 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/builder/
camel-core/src/main/java/org/apache/camel/impl/
camel-core/src/test/java/org/apache/camel/issues/
camel-core/src/test/java/org/apache/camel/processor/interceptor...
Author: davsclaus
Date: Sat Mar 5 14:16:03 2011
New Revision: 1078291
URL: http://svn.apache.org/viewvc?rev=1078291&view=rev
Log:
CAMEL-3757: Fixed mocking existing endpoints, stripping off parameters.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedErrorHandlerAndOnExceptionTest.java
- copied, changed from r1078258, camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionWithInterceptSendToEndpointIssueTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithMockEndpointsHavingParameterTest.java
- copied, changed from r1078258, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithMockEndpointsTest.java
camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsFileTest.java
- copied, changed from r1078258, camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsJUnit4Test.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java?rev=1078291&r1=1078290&r2=1078291&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/AdviceWithRouteBuilder.java Sat Mar 5 14:16:03 2011
@@ -68,7 +68,6 @@ public abstract class AdviceWithRouteBui
* @throws Exception can be thrown if error occurred
*/
public void mockEndpoints() throws Exception {
- getContext().removeEndpoints("*");
getContext().addRegisterEndpointCallback(new InterceptSendToMockEndpointStrategy(null));
}
@@ -80,7 +79,6 @@ public abstract class AdviceWithRouteBui
* @see org.apache.camel.util.EndpointHelper#matchEndpoint(String, String)
*/
public void mockEndpoints(String pattern) throws Exception {
- getContext().removeEndpoints(pattern);
getContext().addRegisterEndpointCallback(new InterceptSendToMockEndpointStrategy(pattern));
}
@@ -95,7 +93,6 @@ public abstract class AdviceWithRouteBui
*/
public AdviceWithBuilder weaveById(String pattern) {
ObjectHelper.notNull(originalRoute, "originalRoute", this);
-
return new AdviceWithBuilder(this, pattern, null);
}
@@ -110,7 +107,6 @@ public abstract class AdviceWithRouteBui
*/
public AdviceWithBuilder weaveByToString(String pattern) {
ObjectHelper.notNull(originalRoute, "originalRoute", this);
-
return new AdviceWithBuilder(this, null, pattern);
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java?rev=1078291&r1=1078290&r2=1078291&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToEndpoint.java Sat Mar 5 14:16:03 2011
@@ -114,6 +114,7 @@ public class InterceptSendToEndpoint imp
if (LOG.isDebugEnabled()) {
LOG.debug("Sending to endpoint: " + getEndpointUri() + " is intercepted and detoured to: " + detour + " for exchange: " + exchange);
}
+ LOG.info("Sending to endpoint: " + getEndpointUri() + " is intercepted and detoured to: " + detour + " for exchange: " + exchange);
// add header with the real endpoint uri
exchange.getIn().setHeader(Exchange.INTERCEPTED_ENDPOINT, delegate.getEndpointUri());
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java?rev=1078291&r1=1078290&r2=1078291&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/InterceptSendToMockEndpointStrategy.java Sat Mar 5 14:16:03 2011
@@ -21,6 +21,7 @@ import org.apache.camel.Processor;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.spi.EndpointStrategy;
import org.apache.camel.util.EndpointHelper;
+import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -73,6 +74,10 @@ public class InterceptSendToMockEndpoint
// create mock endpoint which we will use as interceptor
// replace :// from scheme to make it easy to lookup the mock endpoint without having double :// in uri
String key = "mock:" + endpoint.getEndpointKey().replaceFirst("://", ":");
+ // strip off parameters as well
+ if (key.contains("?")) {
+ key = ObjectHelper.before(key, "?");
+ }
LOG.info("Adviced endpoint [" + uri + "] with mock endpoint [" + key + "]");
MockEndpoint mock = endpoint.getCamelContext().getEndpoint(key, MockEndpoint.class);
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedErrorHandlerAndOnExceptionTest.java (from r1078258, 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/RouteScopedErrorHandlerAndOnExceptionTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedErrorHandlerAndOnExceptionTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/issues/RouteScopedOnExceptionWithInterceptSendToEndpointIssueTest.java&r1=1078258&r2=1078291&rev=1078291&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/RouteScopedErrorHandlerAndOnExceptionTest.java Sat Mar 5 14:16:03 2011
@@ -16,6 +16,7 @@
*/
package org.apache.camel.issues;
+import java.io.FileNotFoundException;
import java.net.ConnectException;
import org.apache.camel.CamelExecutionException;
@@ -29,9 +30,9 @@ import org.apache.camel.model.RouteDefin
*
* @version
*/
-public class RouteScopedOnExceptionWithInterceptSendToEndpointIssueTest extends ContextTestSupport {
+public class RouteScopedErrorHandlerAndOnExceptionTest extends ContextTestSupport {
- public void testIssue() throws Exception {
+ public void testOnException() throws Exception {
RouteDefinition route = context.getRouteDefinitions().get(0);
route.adviceWith(context, new RouteBuilder() {
@Override
@@ -42,7 +43,7 @@ public class RouteScopedOnExceptionWithI
}
});
- getMockEndpoint("mock:global").expectedMessageCount(0);
+ getMockEndpoint("mock:local").expectedMessageCount(0);
getMockEndpoint("mock:seda").expectedMessageCount(0);
// we fail all redeliveries so after that we send to mock:exhausted
getMockEndpoint("mock:exhausted").expectedMessageCount(1);
@@ -58,16 +59,36 @@ public class RouteScopedOnExceptionWithI
assertMockEndpointsSatisfied();
}
+ public void testErrorHandler() throws Exception {
+ RouteDefinition route = context.getRouteDefinitions().get(0);
+ route.adviceWith(context, new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ interceptSendToEndpoint("seda:*")
+ .skipSendToOriginalEndpoint()
+ .throwException(new FileNotFoundException("Forced"));
+ }
+ });
+
+ getMockEndpoint("mock:local").expectedMessageCount(1);
+ getMockEndpoint("mock:seda").expectedMessageCount(0);
+ getMockEndpoint("mock:exhausted").expectedMessageCount(0);
+
+ template.sendBody("direct:start", "Hello World");
+
+ assertMockEndpointsSatisfied();
+ }
+
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- errorHandler(deadLetterChannel("mock:global")
- .maximumRedeliveries(2)
- .redeliveryDelay(5000));
from("direct:start")
+ .errorHandler(deadLetterChannel("mock:local")
+ .maximumRedeliveries(2)
+ .redeliveryDelay(0))
// no redelivery delay for faster unit tests
.onException(ConnectException.class).maximumRedeliveries(5).redeliveryDelay(0)
.logRetryAttempted(true).retryAttemptedLogLevel(LoggingLevel.WARN)
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithMockEndpointsHavingParameterTest.java (from r1078258, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithMockEndpointsTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithMockEndpointsHavingParameterTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithMockEndpointsHavingParameterTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithMockEndpointsTest.java&r1=1078258&r2=1078291&rev=1078291&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithMockEndpointsTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/AdviceWithMockEndpointsHavingParameterTest.java Sat Mar 5 14:16:03 2011
@@ -23,32 +23,34 @@ import org.apache.camel.builder.RouteBui
/**
* @version
*/
-public class AdviceWithMockEndpointsTest extends ContextTestSupport {
+public class AdviceWithMockEndpointsHavingParameterTest extends ContextTestSupport {
public void testNoAdvised() throws Exception {
- getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
+ getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+ getMockEndpoint("mock:foo").expectedBodiesReceived("Bye World");
template.sendBody("direct:start", "Hello World");
assertMockEndpointsSatisfied();
}
- // START SNIPPET: e1
public void testAdvisedMockEndpoints() throws Exception {
// advice the first route using the inlined AdviceWith route builder
// which has extended capabilities than the regular route builder
context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
- // mock all endpoints
+ // mock all endpoints (will mock in all routes)
mockEndpoints();
}
});
+ getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+ getMockEndpoint("mock:foo").expectedBodiesReceived("Bye World");
+
getMockEndpoint("mock:direct:start").expectedBodiesReceived("Hello World");
- getMockEndpoint("mock:direct:foo").expectedBodiesReceived("Hello World");
- getMockEndpoint("mock:log:foo").expectedBodiesReceived("Bye World");
- getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
+ getMockEndpoint("mock:log:start").expectedBodiesReceived("Hello World");
+ getMockEndpoint("mock:seda:foo").expectedBodiesReceived("Hello World");
template.sendBody("direct:start", "Hello World");
@@ -56,61 +58,34 @@ public class AdviceWithMockEndpointsTest
// additional test to ensure correct endpoints in registry
assertNotNull(context.hasEndpoint("direct:start"));
- assertNotNull(context.hasEndpoint("direct:foo"));
- assertNotNull(context.hasEndpoint("log:foo"));
+ assertNotNull(context.hasEndpoint("seda:foo"));
+ assertNotNull(context.hasEndpoint("log:foo?showHeaders=false"));
+ assertNotNull(context.hasEndpoint("log:start?showAll=true"));
assertNotNull(context.hasEndpoint("mock:result"));
// all the endpoints was mocked
assertNotNull(context.hasEndpoint("mock:direct:start"));
- assertNotNull(context.hasEndpoint("mock:direct:foo"));
- assertNotNull(context.hasEndpoint("mock:log:foo"));
- }
- // END SNIPPET: e1
-
- // START SNIPPET: e2
- public void testAdvisedMockEndpointsWithPattern() throws Exception {
- // advice the first route using the inlined AdviceWith route builder
- // which has extended capabilities than the regular route builder
- context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() {
- @Override
- public void configure() throws Exception {
- // mock only log endpoints
- mockEndpoints("log*");
- }
- });
-
- // now we can refer to log:foo as a mock and set our expectations
- getMockEndpoint("mock:log:foo").expectedBodiesReceived("Bye World");
-
- getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
-
- template.sendBody("direct:start", "Hello World");
-
- assertMockEndpointsSatisfied();
-
- // additional test to ensure correct endpoints in registry
- assertNotNull(context.hasEndpoint("direct:start"));
- assertNotNull(context.hasEndpoint("direct:foo"));
- assertNotNull(context.hasEndpoint("log:foo"));
- assertNotNull(context.hasEndpoint("mock:result"));
- // only the log:foo endpoint was mocked
+ assertNotNull(context.hasEndpoint("mock:seda:foo"));
+ assertNotNull(context.hasEndpoint("mock:log:start"));
assertNotNull(context.hasEndpoint("mock:log:foo"));
- assertNull(context.hasEndpoint("mock:direct:start"));
- assertNull(context.hasEndpoint("mock:direct:foo"));
}
- // END SNIPPET: e2
-
- // START SNIPPET: route
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start").to("direct:foo").to("log:foo").to("mock:result");
-
- from("direct:foo").transform(constant("Bye World"));
+ from("direct:start")
+ .to("seda:foo")
+ .to("log:start?showAll=true")
+ .to("mock:result");
+
+ from("seda:foo?size=20")
+ .transform(constant("Bye World"))
+ .log("We transformed ${body}")
+ .to("log:foo?showHeaders=false")
+ .to("mock:foo");
}
};
}
- // END SNIPPET: route
+
}
Copied: camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsFileTest.java (from r1078258, camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsJUnit4Test.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsFileTest.java?p2=camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsFileTest.java&p1=camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsJUnit4Test.java&r1=1078258&r2=1078291&rev=1078291&view=diff
==============================================================================
--- camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsJUnit4Test.java (original)
+++ camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsFileTest.java Sat Mar 5 14:16:03 2011
@@ -16,44 +16,43 @@
*/
package org.apache.camel.test.patterns;
+import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;
/**
* @version
*/
-// START SNIPPET: e1
-public class IsMockEndpointsJUnit4Test extends CamelTestSupport {
+public class IsMockEndpointsFileTest extends CamelTestSupport {
+
+ @Override
+ public void setUp() throws Exception {
+ deleteDirectory("target/input");
+ deleteDirectory("target/messages");
+ super.setUp();
+ }
@Override
public String isMockEndpoints() {
// override this method and return the pattern for which endpoints to mock.
- // use * to indicate all
- return "*";
+ return "file:target*";
}
@Test
- public void testMockAllEndpoints() throws Exception {
+ public void testMockFileEndpoints() throws Exception {
// notice we have automatic mocked all endpoints and the name of the endpoints is "mock:uri"
- getMockEndpoint("mock:direct:start").expectedBodiesReceived("Hello World");
- getMockEndpoint("mock:direct:foo").expectedBodiesReceived("Hello World");
- getMockEndpoint("mock:log:foo").expectedBodiesReceived("Bye World");
- getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
+ MockEndpoint camel = getMockEndpoint("mock:file:target/messages/camel");
+ camel.expectedMessageCount(1);
- template.sendBody("direct:start", "Hello World");
+ MockEndpoint other = getMockEndpoint("mock:file:target/messages/others");
+ other.expectedMessageCount(1);
- assertMockEndpointsSatisfied();
+ template.sendBodyAndHeader("file:target/input", "Hello Camel", Exchange.FILE_NAME, "camel.txt");
+ template.sendBodyAndHeader("file:target/input", "Hello World", Exchange.FILE_NAME, "world.txt");
- // additional test to ensure correct endpoints in registry
- assertNotNull(context.hasEndpoint("direct:start"));
- assertNotNull(context.hasEndpoint("direct:foo"));
- assertNotNull(context.hasEndpoint("log:foo"));
- assertNotNull(context.hasEndpoint("mock:result"));
- // all the endpoints was mocked
- assertNotNull(context.hasEndpoint("mock:direct:start"));
- assertNotNull(context.hasEndpoint("mock:direct:foo"));
- assertNotNull(context.hasEndpoint("mock:log:foo"));
+ assertMockEndpointsSatisfied();
}
@Override
@@ -61,11 +60,11 @@ public class IsMockEndpointsJUnit4Test e
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start").to("direct:foo").to("log:foo").to("mock:result");
-
- from("direct:foo").transform(constant("Bye World"));
+ from("file:target/input")
+ .choice()
+ .when(body(String.class).contains("Camel")).to("file:target/messages/camel")
+ .otherwise().to("file:target/messages/others");
}
};
}
}
-// END SNIPPET: e1