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>