You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ge...@apache.org on 2008/11/17 12:55:27 UTC
svn commit: r718227 - in
/servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test:
java/org/apache/servicemix/camel/ java/org/apache/servicemix/camel/su8/
java/org/apache/servicemix/camel/su9/ resources/org/apache/s...
Author: gertv
Date: Mon Nov 17 03:55:26 2008
New Revision: 718227
URL: http://svn.apache.org/viewvc?rev=718227&view=rev
Log:
SM-1673: Adding tests for robust-in-only exchanges
Modified:
servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyCamelErrorHandlingTest.java
servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyWithErrorHandledTrueSpringDSLTest.java
servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyWithFaultHandledTrueSpringDSLTest.java
servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su8/HandleFaultProcessor.java
servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su9/HandleFaultProcessor.java
servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su8-src/camel-context.xml
servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su9-src/camel-context.xml
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyCamelErrorHandlingTest.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyCamelErrorHandlingTest.java?rev=718227&r1=718226&r2=718227&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyCamelErrorHandlingTest.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyCamelErrorHandlingTest.java Mon Nov 17 03:55:26 2008
@@ -18,6 +18,9 @@
import javax.jbi.messaging.ExchangeStatus;
import javax.jbi.messaging.InOnly;
+import javax.jbi.messaging.MessageExchange;
+import javax.jbi.messaging.MessagingException;
+import javax.jbi.messaging.RobustInOnly;
import javax.xml.namespace.QName;
import org.apache.camel.builder.RouteBuilder;
@@ -33,7 +36,7 @@
public class JbiInOnlyCamelErrorHandlingTest extends JbiCamelErrorHandlingTestSupport {
private static final String MESSAGE = "<just><a>test</a></just>";
-
+
public void testInOnlyWithNoHandleFault() throws Exception {
MockEndpoint errors = getMockEndpoint("mock:errors");
errors.expectedMessageCount(1);
@@ -45,6 +48,25 @@
client.sendSync(exchange);
assertEquals(ExchangeStatus.ERROR, exchange.getStatus());
assertTrue("A FaultException was expected", exchange.getError() instanceof FaultException);
+
+ receiverComponent.getMessageList().assertMessagesReceived(0);
+
+ errors.assertIsSatisfied();
+ }
+
+ public void testRobustInOnlyWithNoHandleFault() throws Exception {
+ MockEndpoint errors = getMockEndpoint("mock:errors");
+ errors.expectedMessageCount(0);
+
+ ServiceMixClient client = new DefaultServiceMixClient(jbiContainer);
+ RobustInOnly exchange = client.createRobustInOnlyExchange();
+ exchange.setService(new QName("urn:test", "no-handle-fault"));
+ exchange.getInMessage().setContent(new StringSource(MESSAGE));
+ client.sendSync(exchange);
+ assertEquals(ExchangeStatus.DONE, exchange.getStatus());
+ assertNotNull(exchange.getFault());
+
+ receiverComponent.getMessageList().assertMessagesReceived(0);
errors.assertIsSatisfied();
}
@@ -61,70 +83,93 @@
assertEquals(ExchangeStatus.ERROR, exchange.getStatus());
assertTrue("A FaultException was expected", exchange.getError() instanceof FaultException);
+ receiverComponent.getMessageList().assertMessagesReceived(0);
+
errors.assertIsSatisfied();
}
- public void testInOnlyWithErrorNotHandled() throws Exception {
+ public void testRobustInOnlyWithHandleFault() throws Exception {
MockEndpoint errors = getMockEndpoint("mock:errors");
errors.expectedMessageCount(1);
ServiceMixClient client = new DefaultServiceMixClient(jbiContainer);
- InOnly exchange = client.createInOnlyExchange();
- exchange.setService(new QName("urn:test", "error-not-handled"));
+ RobustInOnly exchange = client.createRobustInOnlyExchange();
+ exchange.setService(new QName("urn:test", "handle-fault"));
exchange.getInMessage().setContent(new StringSource(MESSAGE));
client.sendSync(exchange);
- assertEquals(ExchangeStatus.ERROR, exchange.getStatus());
- assertTrue("A IllegalArgumentException was expected", exchange.getError() instanceof IllegalArgumentException);
+ assertEquals(ExchangeStatus.DONE, exchange.getStatus());
+ assertNotNull(exchange.getFault());
+ receiverComponent.getMessageList().assertMessagesReceived(0);
+
errors.assertIsSatisfied();
}
- public void testInOnlyWithErrorHandledFalse() throws Exception {
+ public void testInOnlyAndRobustInOnlyWithErrorNotHandled() throws Exception {
MockEndpoint errors = getMockEndpoint("mock:errors");
- errors.expectedMessageCount(0);
+ errors.expectedMessageCount(2);
ServiceMixClient client = new DefaultServiceMixClient(jbiContainer);
- InOnly exchange = client.createInOnlyExchange();
- exchange.setService(new QName("urn:test", "error-handled-false"));
- exchange.getInMessage().setContent(new StringSource(MESSAGE));
- client.sendSync(exchange);
- assertEquals(ExchangeStatus.ERROR, exchange.getStatus());
- assertTrue("A IllegalStateException was expected", exchange.getError() instanceof IllegalStateException);
+ for (MessageExchange exchange : createInOnlyAndRobustInOnly(client)) {
+ exchange.setService(new QName("urn:test", "error-not-handled"));
+ exchange.getMessage("in").setContent(new StringSource(MESSAGE));
+ client.sendSync(exchange);
+ assertEquals(ExchangeStatus.ERROR, exchange.getStatus());
+ assertTrue("A IllegalArgumentException was expected", exchange.getError() instanceof IllegalArgumentException);
+ }
+ errors.assertIsSatisfied();
+ }
- receiverComponent.getMessageList().assertMessagesReceived(1);
+ public void testInOnlyAndRobustInOnlyWithErrorHandledFalse() throws Exception {
+ MockEndpoint errors = getMockEndpoint("mock:errors");
+ errors.expectedMessageCount(0);
+
+ ServiceMixClient client = new DefaultServiceMixClient(jbiContainer);
+ for (MessageExchange exchange : createInOnlyAndRobustInOnly(client)) {
+ exchange.setService(new QName("urn:test", "error-handled-false"));
+ exchange.getMessage("in").setContent(new StringSource(MESSAGE));
+ client.sendSync(exchange);
+ assertEquals(ExchangeStatus.ERROR, exchange.getStatus());
+ assertTrue("A IllegalStateException was expected", exchange.getError() instanceof IllegalStateException);
+ }
+ receiverComponent.getMessageList().assertMessagesReceived(2);
errors.assertIsSatisfied();
}
- public void testInOnlyWithErrorHandledTrue() throws Exception {
+ public void testInOnlyAndRobustInOnlyWithErrorHandledTrue() throws Exception {
MockEndpoint errors = getMockEndpoint("mock:errors");
errors.expectedMessageCount(0);
ServiceMixClient client = new DefaultServiceMixClient(jbiContainer);
- InOnly exchange = client.createInOnlyExchange();
- exchange.setService(new QName("urn:test", "error-handled-true"));
- exchange.getInMessage().setContent(new StringSource(MESSAGE));
- client.sendSync(exchange);
- assertEquals(ExchangeStatus.DONE, exchange.getStatus());
-
- receiverComponent.getMessageList().assertMessagesReceived(1);
+ for (MessageExchange exchange : createInOnlyAndRobustInOnly(client)) {
+ exchange.setService(new QName("urn:test", "error-handled-true"));
+ exchange.getMessage("in").setContent(new StringSource(MESSAGE));
+ client.sendSync(exchange);
+ assertEquals(ExchangeStatus.DONE, exchange.getStatus());
+ }
+ receiverComponent.getMessageList().assertMessagesReceived(2);
errors.assertIsSatisfied();
}
+
+ private MessageExchange[] createInOnlyAndRobustInOnly(ServiceMixClient client) throws MessagingException {
+ return new MessageExchange[] {client.createInOnlyExchange(), client.createRobustInOnlyExchange()};
+ }
@Override
protected RouteBuilder createRoutes() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- onException(IllegalStateException.class).handled(false).to("jbi:service:urn:test:receiver-service?mep=in-only");
- onException(NullPointerException.class).handled(true).to("jbi:service:urn:test:receiver-service?mep=in-only");
+ onException(IllegalStateException.class).handled(false).to("jbi:service:urn:test:receiver-service");
+ onException(NullPointerException.class).handled(true).to("jbi:service:urn:test:receiver-service");
errorHandler(deadLetterChannel("mock:errors").maximumRedeliveries(1).initialRedeliveryDelay(300));
- from("jbi:service:urn:test:no-handle-fault").to("jbi:service:urn:test:faulty-service?mep=in-only");
- from("jbi:service:urn:test:handle-fault").handleFault().to("jbi:service:urn:test:faulty-service?mep=in-only");
- from("jbi:service:urn:test:error-not-handled").to("jbi:service:urn:test:iae-error-service?mep=in-only");
- from("jbi:service:urn:test:error-handled-false").to("jbi:service:urn:test:ise-error-service?mep=in-only");
- from("jbi:service:urn:test:error-handled-true").to("jbi:service:urn:test:npe-error-service?mep=in-only");
+ from("jbi:service:urn:test:no-handle-fault").to("jbi:service:urn:test:faulty-service");
+ from("jbi:service:urn:test:handle-fault").handleFault().to("jbi:service:urn:test:faulty-service");
+ from("jbi:service:urn:test:error-not-handled").to("jbi:service:urn:test:iae-error-service");
+ from("jbi:service:urn:test:error-handled-false").to("jbi:service:urn:test:ise-error-service");
+ from("jbi:service:urn:test:error-handled-true").to("jbi:service:urn:test:npe-error-service");
}
};
}
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyWithErrorHandledTrueSpringDSLTest.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyWithErrorHandledTrueSpringDSLTest.java?rev=718227&r1=718226&r2=718227&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyWithErrorHandledTrueSpringDSLTest.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyWithErrorHandledTrueSpringDSLTest.java Mon Nov 17 03:55:26 2008
@@ -19,7 +19,6 @@
import java.util.List;
import javax.jbi.messaging.ExchangeStatus;
-import javax.jbi.messaging.InOnly;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.MessagingException;
import javax.xml.namespace.QName;
@@ -49,15 +48,18 @@
public void testErrorHandledByExceptionClause() throws Exception {
ServiceMixClient smxClient = getServicemixClient();
- InOnly exchange = smxClient.createInOnlyExchange();
- exchange.setEndpoint(jbiContainer.getRegistry().getEndpointsForService(TEST_SERVICE)[0]);
- smxClient.send(exchange);
+ MessageExchange[] exchanges = new MessageExchange[] {smxClient.createInOnlyExchange(), smxClient.createRobustInOnlyExchange()};
+ for (MessageExchange exchange : exchanges) {
+ exchange.setService(TEST_SERVICE);
- exchange = (InOnly) smxClient.receive();
- assertEquals(ExchangeStatus.DONE, exchange.getStatus());
-
- receiver.getMessageList().assertMessagesReceived(1);
+ smxClient.send(exchange);
+
+ exchange = smxClient.receive();
+ assertEquals(ExchangeStatus.DONE, exchange.getStatus());
+ }
+
+ receiver.getMessageList().assertMessagesReceived(2);
deadLetter.getMessageList().assertMessagesReceived(0);
}
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyWithFaultHandledTrueSpringDSLTest.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyWithFaultHandledTrueSpringDSLTest.java?rev=718227&r1=718226&r2=718227&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyWithFaultHandledTrueSpringDSLTest.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/JbiInOnlyWithFaultHandledTrueSpringDSLTest.java Mon Nov 17 03:55:26 2008
@@ -23,6 +23,7 @@
import javax.jbi.messaging.InOnly;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.MessagingException;
+import javax.jbi.messaging.RobustInOnly;
import javax.xml.namespace.QName;
import org.apache.camel.converter.jaxp.StringSource;
@@ -50,7 +51,7 @@
super.setUp();
}
- public void testFaultHandledByExceptionClause() throws Exception {
+ public void testInOnlyWithFaultHandledByExceptionClause() throws Exception {
ServiceMixClient smxClient = getServicemixClient();
InOnly exchange = smxClient.createInOnlyExchange();
exchange.setEndpoint(jbiContainer.getRegistry().getEndpointsForService(TEST_SERVICE)[0]);
@@ -64,6 +65,20 @@
deadLetter.getMessageList().assertMessagesReceived(0);
}
+ public void testRobustInOnlyWithFaultHandledByExceptionClause() throws Exception {
+ ServiceMixClient smxClient = getServicemixClient();
+ RobustInOnly exchange = smxClient.createRobustInOnlyExchange();
+ exchange.setEndpoint(jbiContainer.getRegistry().getEndpointsForService(TEST_SERVICE)[0]);
+
+ smxClient.send(exchange);
+
+ exchange = (RobustInOnly) smxClient.receive();
+ assertEquals(ExchangeStatus.DONE, exchange.getStatus());
+
+ receiver.getMessageList().assertMessagesReceived(1);
+ deadLetter.getMessageList().assertMessagesReceived(0);
+ }
+
@Override
protected String getServiceUnitName() {
return "su9";
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su8/HandleFaultProcessor.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su8/HandleFaultProcessor.java?rev=718227&r1=718226&r2=718227&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su8/HandleFaultProcessor.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su8/HandleFaultProcessor.java Mon Nov 17 03:55:26 2008
@@ -47,7 +47,7 @@
return ((AsyncProcessor)processor).process(exchange, new AsyncCallback() {
public void done(boolean doneSynchronously) {
- callback.done(doneSynchronously);
+ // Take the fault message out before we keep on going
Message faultMessage = exchange.getFault(false);
if (faultMessage != null) {
final Object faultBody = faultMessage.getBody();
@@ -61,6 +61,7 @@
}
}
}
+ callback.done(doneSynchronously);
}
});
}
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su9/HandleFaultProcessor.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su9/HandleFaultProcessor.java?rev=718227&r1=718226&r2=718227&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su9/HandleFaultProcessor.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/java/org/apache/servicemix/camel/su9/HandleFaultProcessor.java Mon Nov 17 03:55:26 2008
@@ -47,7 +47,7 @@
return ((AsyncProcessor)processor).process(exchange, new AsyncCallback() {
public void done(boolean doneSynchronously) {
- callback.done(doneSynchronously);
+ // Take the fault message out before we keep on going
Message faultMessage = exchange.getFault(false);
if (faultMessage != null) {
final Object faultBody = faultMessage.getBody();
@@ -61,6 +61,7 @@
}
}
}
+ callback.done(doneSynchronously);
}
});
}
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su8-src/camel-context.xml
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su8-src/camel-context.xml?rev=718227&r1=718226&r2=718227&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su8-src/camel-context.xml (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su8-src/camel-context.xml Mon Nov 17 03:55:26 2008
@@ -34,10 +34,10 @@
<handled>
<constant>true</constant>
</handled>
- <to uri="jbi:service:urn:test:receiver-service?mep=in-only"/>
+ <to uri="jbi:service:urn:test:receiver-service"/>
</onException>
<interceptor ref="handleFaultProcessor">
- <to uri="jbi:service:urn:test:npe-error-service?mep=in-only"/>
+ <to uri="jbi:service:urn:test:npe-error-service"/>
</interceptor>
</route>
</camelContext>
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su9-src/camel-context.xml
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su9-src/camel-context.xml?rev=718227&r1=718226&r2=718227&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su9-src/camel-context.xml (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-camel/src/test/resources/org/apache/servicemix/camel/su9-src/camel-context.xml Mon Nov 17 03:55:26 2008
@@ -29,21 +29,31 @@
<route errorHandlerRef="deadLetterErrorHandler">
<from uri="jbi:service:urn:test:fault-handled-true"/>
<onException>
+ <!-- Catch exception from in-only message exchange -->
<exception>org.apache.servicemix.jbi.FaultException</exception>
<redeliveryPolicy maximumRedeliveries="0"/>
<handled>
<constant>true</constant>
</handled>
- <to uri="jbi:service:urn:test:receiver-service?mep=in-only"/>
+ <to uri="jbi:service:urn:test:receiver-service"/>
+ </onException>
+ <onException>
+ <!-- Catch exception from robust-in-only message exchange -->
+ <exception>org.apache.camel.CamelException</exception>
+ <redeliveryPolicy maximumRedeliveries="0"/>
+ <handled>
+ <constant>true</constant>
+ </handled>
+ <to uri="jbi:service:urn:test:receiver-service"/>
</onException>
<interceptor ref="handleFaultProcessor">
- <to uri="jbi:service:urn:test:faulty-service?mep=in-only"/>
+ <to uri="jbi:service:urn:test:faulty-service"/>
</interceptor>
</route>
</camelContext>
<bean id="deadLetterErrorHandler" class="org.apache.camel.builder.DeadLetterChannelBuilder">
- <property name="defaultDeadLetterEndpointUri" value="jbi:service:urn:test:deadLetter-service?mep=in-only"/>
+ <property name="defaultDeadLetterEndpointUri" value="jbi:service:urn:test:deadLetter-service"/>
<property name="redeliveryPolicy" ref="redeliveryPolicyConfig" />
</bean>