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