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/09/07 07:10:34 UTC

svn commit: r811997 - in /camel/trunk/components/camel-spring/src/test: java/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.java resources/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.xml

Author: davsclaus
Date: Mon Sep  7 05:10:34 2009
New Revision: 811997

URL: http://svn.apache.org/viewvc?rev=811997&view=rev
Log:
Added unit test based on user forum issue

Added:
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.java
      - copied, changed from r811825, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/SpringCharlesSplitAndTryCatchRollbackIssueTest.java
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.xml   (contents, props changed)
      - copied, changed from r811825, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringCharlesSplitAndTryCatchRollbackIssueTest.xml

Copied: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.java (from r811825, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/SpringCharlesSplitAndTryCatchRollbackIssueTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.java?p2=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.java&p1=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/SpringCharlesSplitAndTryCatchRollbackIssueTest.java&r1=811825&r2=811997&rev=811997&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/SpringCharlesSplitAndTryCatchRollbackIssueTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.java Mon Sep  7 05:10:34 2009
@@ -16,17 +16,55 @@
  */
 package org.apache.camel.spring.issues;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.issues.CharlesSplitAndTryCatchRollbackIssueTest;
-import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spring.SpringTestSupport;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 /**
  * @version $Revision$
  */
-public class SpringCharlesSplitAndTryCatchRollbackIssueTest extends CharlesSplitAndTryCatchRollbackIssueTest {
+public class SpringChristianDLCLoseMessageIssueTest extends SpringTestSupport {
 
-    protected CamelContext createCamelContext() throws Exception {
-        return createSpringCamelContext(this, "org/apache/camel/spring/issues/SpringCharlesSplitAndTryCatchRollbackIssueTest.xml");
+    protected AbstractXmlApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.xml");
     }
 
-}
+    public void testDLCThrowException() throws Exception {
+        MockEndpoint result = getMockEndpoint("mock:result");
+        result.expectedMessageCount(2);
+
+        MockEndpoint error = getMockEndpoint("mock:error");
+        error.expectedMessageCount(2);
+
+        // should newer get a message as DLC handles it
+        MockEndpoint kaboom = getMockEndpoint("mock:kaboom");
+        kaboom.expectedMessageCount(0);
+
+        template.sendBody("direct:start", "Hello World");
+        template.sendBody("direct:start", "Kaboom");
+
+        template.sendBody("direct:start", "Hello World");
+        template.sendBody("direct:start", "Kaboom");
+
+        assertMockEndpointsSatisfied();
+    }
+
+    public void testDLCQueueFull() throws Exception {
+        MockEndpoint result = getMockEndpoint("mock:result");
+        result.expectedMessageCount(2);
+
+        // should get 1 message when seda:bye is full
+        MockEndpoint error = getMockEndpoint("mock:error");
+        error.expectedMessageCount(1);
+
+        template.sendBody("direct:start", "Hello World");
+        template.sendBody("direct:start", "Bye World");
+
+        template.sendBody("direct:start", "Hello World");
+        template.sendBody("direct:start", "Bye World");
+
+        assertMockEndpointsSatisfied();
+    }
+
+}
\ No newline at end of file

Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.xml (from r811825, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringCharlesSplitAndTryCatchRollbackIssueTest.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringCharlesSplitAndTryCatchRollbackIssueTest.xml&r1=811825&r2=811997&rev=811997&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringCharlesSplitAndTryCatchRollbackIssueTest.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.xml Mon Sep  7 05:10:34 2009
@@ -22,28 +22,55 @@
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
     ">
 
-    <bean id="myProcessor" class="org.apache.camel.issues.CharlesSplitAndTryCatchRollbackIssueTest$MyProcessor"/>
+    <camelContext id="camel" errorHandlerRef="dlc" xmlns="http://camel.apache.org/schema/spring">
+
+        <endpoint id="kaboom" uri="seda:kaboom?size=1"/>
+        <endpoint id="hello" uri="seda:hello?size=1"/>
+        <endpoint id="bye" uri="seda:bye?size=1"/>
 
-    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
         <route>
             <from uri="direct:start"/>
-            <split stopOnException="true">
-                <tokenize token=","/>
-                <doTry>
-                    <process ref="myProcessor"/>
-                    <to uri="mock:split"/>
-                    <doCatch>
-                        <exception>java.lang.IllegalArgumentException</exception>
-                        <to uri="mock:ile"/>
-                    </doCatch>
-                    <doCatch>
-                        <exception>java.lang.Exception</exception>
-                        <to uri="mock:exception"/>
-                        <rollback/>
-                    </doCatch>
-                </doTry>
-            </split>
+            <choice>
+                <when>
+                    <simple>${in.body} == 'Hello World'</simple>
+                    <to ref="hello"/>
+                </when>
+                <when>
+                    <simple>${in.body} == 'Bye World'</simple>
+                    <to ref="bye"/>
+                </when>
+                <when>
+                    <simple>${in.body} == 'Kaboom'</simple>
+                    <to ref="kaboom"/>
+                </when>
+                <otherwise>
+                    <to uri="mock:result"/>
+                </otherwise>
+            </choice>
+        </route>
+
+        <route>
+            <from ref="kaboom"/>
+            <throwException ref="myException"/>
+            <to uri="mock:kaboom"/>
+        </route>
+
+        <route>
+            <from ref="hello"/>
+            <to uri="mock:result"/>
         </route>
+
+        <!-- seda:bye has no consumers -->
+
     </camelContext>
 
+    <bean id="myException" class="java.lang.IllegalArgumentException">
+        <constructor-arg index="0" value="Forced"/>
+    </bean>
+
+    <bean id="dlc" class="org.apache.camel.builder.DeadLetterChannelBuilder">
+        <property name="deadLetterUri" value="mock:error"/>
+    </bean>
+
+
 </beans>

Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringChristianDLCLoseMessageIssueTest.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml