Also - if I change the test xml to

        <route>
            <from uri="direct:start"/>
            <to uri="activemq:blah"/>
        </route>

and the test to :

  public void testAdvisedMockEndpoints() throws Exception {
        getMockEndpoint("mock:direct:start").expectedBodiesReceived("Hello
World");
        template.sendBody("direct:start", "Hello World");
        assertMockEndpointsSatisfied();
 }

the test hangs.. - and never completes.



On Mon, Mar 28, 2011 at 5:29 PM, Tom Howe <[email protected]> wrote:

> ok, I have copied the test from
>
>
> https://svn.apache.org/repos/asf/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/mock/InterceptSendToMockEndpointStrategyTest.java
>
> and got that working by changing from SpringTestSupport to
> CamelSpringTestSupport.
>
> Then I tried to reduce it down to my example and found that when I remove
> the route that consumes from direct:foo, the test fails with:
>
> org.apache.camel.CamelExchangeException: No consumers available on
> endpoint: Endpoint[direct://foo]. Exchange[Message: Hello World]
>
> Why is this? Do you have to have a consumer for every endpoint you wish to
> mock?
>
>
>
>
>
>
> On Mon, Mar 28, 2011 at 5:08 PM, Claus Ibsen <[email protected]>wrote:
>
>> Use
>>          template.sendBody("direct:start", "blah");
>>
>> Instead of
>> >         template.sendBody("mock:direct:start", "blah");
>>
>>
>> And mind that the test your picked is using the new auto mock feature
>> (mock existing endpoints) from Camel 2.7
>> http://camel.apache.org/mock.html
>>
>>
>>
>>
>> On Mon, Mar 28, 2011 at 5:50 PM, Tom Howe <[email protected]> wrote:
>> > The spring-testing.html doesnt mention CamelSpringTestSupport. Im not
>> sure
>> > where to look in camel test suite.
>> >
>> > I tried this..
>> >
>> > public class SimpleRouteTest extends CamelSpringTestSupport {
>> >
>> >     @Override
>> >     protected AbstractXmlApplicationContext createApplicationContext() {
>> >         return new
>> ClassPathXmlApplicationContext("/CamelRoutesSimple.xml");
>> >     }
>> >
>> >     public String isMockEndpoints() {
>> >         return "*";
>> >     }
>> >
>> >     @Test
>> >     public void testSendMessage() throws Exception {
>> >         getMockEndpoint("mock:direct:end").expectedMessageCount(1);
>> >         template.sendBody("mock:direct:start", "blah");
>> >         assertMockEndpointsSatisfied();
>> >     }
>> > }
>> >
>> > It doesnt work though...
>> >
>> > From the log it looks like my route is started but then a fresh camel
>> > context without route is started for the tests.
>> >
>> > 2011-03-28 16:46:22,976 [main] INFO
>> > org.apache.camel.spring.SpringCamelContext  - Apache Camel 2.7.0
>> > (CamelContext: camel-1) is starting
>> > 2011-03-28 16:46:22,976 [main] INFO
>> > org.apache.camel.spring.SpringCamelContext  - JMX enabled. Using
>> > ManagedManagementStrategy.
>> > 2011-03-28 16:46:23,533 [main] INFO
>> > org.apache.camel.spring.SpringCamelContext  - Route: route1 started and
>> > consuming from: Endpoint[direct://start]
>> > 2011-03-28 16:46:23,538 [main] INFO
>> > org.apache.camel.spring.SpringCamelContext  - Total 1 routes, of which 1
>> is
>> > started.
>> > 2011-03-28 16:46:23,539 [main] INFO
>> > org.apache.camel.spring.SpringCamelContext  - Apache Camel 2.7.0
>> > (CamelContext: camel-1) started in 0.562 seconds
>> > 2011-03-28 16:46:23,542 [main] INFO  agentsmith.routes.SimpleRouteTest
>> -
>> >
>> ********************************************************************************
>> > 2011-03-28 16:46:23,543 [main] INFO  agentsmith.routes.SimpleRouteTest
>> -
>> > Testing: testSendMessage(agentsmith.routes.SimpleRouteTest)
>> > 2011-03-28 16:46:23,543 [main] INFO  agentsmith.routes.SimpleRouteTest
>> -
>> >
>> ********************************************************************************
>> > 2011-03-28 16:46:23,547 [main] INFO
>> > org.apache.camel.impl.InterceptSendToMockEndpointStrategy  - Adviced
>> > endpoint [direct://start] with mock endpoint [mock:direct:start]
>> > 2011-03-28 16:46:23,557 [main] INFO
>> > org.apache.camel.impl.InterceptSendToMockEndpointStrategy  - Adviced
>> > endpoint [direct://end] with mock endpoint [mock:direct:end]
>> > 2011-03-28 16:46:23,558 [main] INFO
>> > org.apache.camel.impl.InterceptSendToMockEndpointStrategy  - Adviced
>> > endpoint [spring-event://default] with mock endpoint
>> > [mock:spring-event:default]
>> > 2011-03-28 16:46:23,577 [main] INFO
>> > org.apache.camel.component.mock.MockEndpoint  - Asserting:
>> > Endpoint[mock://spring-event:default] is satisfied
>> > 2011-03-28 16:46:23,577 [main] INFO
>> > org.apache.camel.component.mock.MockEndpoint  - Asserting:
>> > Endpoint[mock://direct:end] is satisfied
>> >
>> > java.lang.AssertionError: mock://direct:end Received message count.
>> > Expected: <1> but was: <0>
>> >     at
>> >
>> org.apache.camel.component.mock.MockEndpoint.fail(MockEndpoint.java:1086)
>> > ....
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > On Mon, Mar 28, 2011 at 4:37 PM, Claus Ibsen <[email protected]>
>> wrote:
>> >>
>> >> On Mon, Mar 28, 2011 at 5:34 PM, Tom Howe <[email protected]> wrote:
>> >> > I've read the testing page but it doesnt give any good eaxmple of
>> using
>> >> > spring xml routes
>> >> >
>> >>
>> >> There is more here
>> >> http://camel.apache.org/spring-testing.html
>> >>
>> >>
>> >> > Can you point me to an example of CamelSpringTestSupport ? I cant see
>> >> > any
>> >> > docs on it's usage?
>> >> >
>> >>
>> >> Just try to extend this class and it forces you to implement a method
>> >> where you load the Spring XML file.
>> >> There are many examples in the source code, eg in camel-spring module.
>> >> https://svn.apache.org/repos/asf/camel/trunk/components/camel-spring/
>> >>
>> >>
>> >> Btw the Camel in Action book chapter 6 covers all about testing.
>> >>
>> >>
>> >>
>> >>
>> >> > Thanks, Tom
>> >> >
>> >> > On Mon, Mar 28, 2011 at 4:27 PM, Claus Ibsen <[email protected]>
>> >> > wrote:
>> >> >
>> >> >> Hi
>> >> >>
>> >> >> Check out this page
>> >> >> http://camel.apache.org/testing
>> >> >>
>> >> >> You can then use any IoC means to inject the mocks, such as
>> >> >> @EndpointInjected or any of the Spring or the new @Resource from
>> JDK6
>> >> >> etc.
>> >> >>
>> >> >> Also you can extend CamelSpringTestSupport which allows you to load
>> a
>> >> >> Spring XML file.
>> >> >> Thats often what we do to test Camel as CamelXXTestSupport is easy
>> to
>> >> >> get mocks, producer template and whatnot without having to IoC them.
>> >> >>
>> >> >>
>> >> >> On Mon, Mar 28, 2011 at 5:11 PM, Tom Howe <[email protected]>
>> wrote:
>> >> >> > I have a routes defined in CamelRoutes.xml and I would like to
>> test
>> >> >> > them
>> >> >> by
>> >> >> > using the wrapping technique described at the bottom of
>> >> >> > http://camel.apache.org/mock.html.
>> >> >> >
>> >> >> > My CamelRoutes.xml
>> >> >> >     <route autoStartup="true"  xmlns="
>> >> >> http://camel.apache.org/schema/spring
>> >> >> > ">
>> >> >> >            <from uri="direct:start"/>
>> >> >> >            <to uri="direct:end"/>
>> >> >> >        </route>
>> >> >> >
>> >> >> > So I created CamelRoutesTest.xml containing:
>> >> >> >
>> >> >> >    <import resource="CamelRoutes.xml"/>
>> >> >> >    <bean id="mockAllEndpoints"
>> >> >> >
>> class="org.apache.camel.impl.InterceptSendToMockEndpointStrategy"/>
>> >> >> >
>> >> >> > but I am not sure how to create a test that both loads the spring
>> xml
>> >> >> > AND
>> >> >> > provides access to the mock endpoints.
>> >> >> >
>> >> >> > If I use..
>> >> >> >
>> >> >> > @ContextConfiguration( locations=("/CamelRoutesTest"))
>> >> >> > public class CamelTest extends AbstractJUnit38SpringContextTests
>> >> >> >
>> >> >> > }
>> >> >> >
>> >> >> > then I have no idea how to *get* the mock endpoints
>> >> >> >
>> >> >> > If I use..
>> >> >> >
>> >> >> > public class CamelTest extends CamelTestSupport
>> >> >> >
>> >> >> > }
>> >> >> >
>> >> >> > then I dont know how to load my camel context..
>> >> >> >
>> >> >> >
>> >> >> > I can't seem to find an example test on the website that uses
>> >> >> > CamelTestSupport AND loads routes from spring xml.
>> >> >> >
>> >> >> > thanks, Tom
>> >> >> >
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Claus Ibsen
>> >> >> -----------------
>> >> >> FuseSource
>> >> >> Email: [email protected]
>> >> >> Web: http://fusesource.com
>> >> >> Twitter: davsclaus
>> >> >> Blog: http://davsclaus.blogspot.com/
>> >> >> Author of Camel in Action: http://www.manning.com/ibsen/
>> >> >>
>> >> >
>> >>
>> >>
>> >>
>> >> --
>> >> Claus Ibsen
>> >> -----------------
>> >> FuseSource
>> >> Email: [email protected]
>> >> Web: http://fusesource.com
>> >> Twitter: davsclaus
>> >> Blog: http://davsclaus.blogspot.com/
>> >> Author of Camel in Action: http://www.manning.com/ibsen/
>> >
>> >
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> FuseSource
>> Email: [email protected]
>> Web: http://fusesource.com
>> Twitter: davsclaus
>> Blog: http://davsclaus.blogspot.com/
>> Author of Camel in Action: http://www.manning.com/ibsen/
>>
>
>

Reply via email to