camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Sprint Unit test fails when OnCompletion configured
Date Sun, 29 Oct 2017 14:26:27 GMT
On Sun, 29 Oct 2017 at 14.54, Oliver Wulff <owulff@talend.com> wrote:

> Hi Claus
>
>
> I've successfully tested the fix against 2.19.4-SNAPSHOT. Thanks for the
> fix.
>
>
> Just for clarification. I have to implement the isUseAdviceWith() and
> return true only if I use adviceWith within my test methods. Thus Camel
> Test prevents starting the context in the test initialization phase. If I
> use adviceWith in doPostSetup() I don't have to return true in
> isUseAdviceWith() and let the context start by Camel and not by my test
> method.
>


Yes correct. But doPostSetup is only one method. You may have 2+ test
mergods where you can advice the routes differently and then you need to do
that isUseAdviceWith thingy


>
> Thanks
>
> Oli
>
> ________________________________
> Von: Claus Ibsen <claus.ibsen@gmail.com>
> Gesendet: Samstag, 28. Oktober 2017 11:09:19
> An: users@camel.apache.org
> Betreff: Re: Sprint Unit test fails when OnCompletion configured
>
> Hi
>
> Yeah I have reproduced the issue and logged a ticket
> https://issues.apache.org/jira/browse/CAMEL-11962
>
> On Fri, Oct 27, 2017 at 9:13 PM, Oliver Wulff <owulff@talend.com> wrote:
> > I've added the following snippet to my test class but still face the
> same issue
> >
> >     @Override
> >     public boolean isUseAdviceWith() {
> >         return true;
> >     }
> >
> >
> > BTW, I extend the class
> org.apache.camel.test.spring.CamelSpringTestSupport.
> >
> >
> > I've found the documentation in the last section here:
> >
> > http://camel.apache.org/advicewith.html
> >
> >
> > The mentioned example is slightly different because the Java DSL is used
> and not Spring DSL so the starting of the route is controlled by
> CamelSpringTestSupport after the advice with.
> >
> >
> > Any ideas?
> >
> >
> > ________________________________
> > Von: Claus Ibsen <claus.ibsen@gmail.com>
> > Gesendet: Freitag, 27. Oktober 2017 17:36:50
> > An: users@camel.apache.org
> > Betreff: Re: Sprint Unit test fails when OnCompletion configured
> >
> > Make sure to configure your unit test that you are using advice with
> >
> > There is a alert box about this in the docs
> >
> > On Fri, Oct 27, 2017 at 5:31 PM, Oliver Wulff <owulff@talend.com> wrote:
> >> It's failing with the same error in version 2.18.5, 2.19.3 and 2.20.0
> as well.
> >>
> >> ________________________________
> >> Von: Oliver Wulff
> >> Gesendet: Freitag, 27. Oktober 2017 17:27:06
> >> An: users@camel.apache.org
> >> Betreff: AW: Sprint Unit test fails when OnCompletion configured
> >>
> >>
> >> Sorry for missing this important information. It's 2.17.6
> >>
> >> ________________________________
> >> Von: Claus Ibsen <claus.ibsen@gmail.com>
> >> Gesendet: Freitag, 27. Oktober 2017 16:51:27
> >> An: users@camel.apache.org
> >> Betreff: Re: Sprint Unit test fails when OnCompletion configured
> >>
> >> What version of CAmel do you use
> >>
> >> On Fri, Oct 27, 2017 at 4:12 PM, Oliver Wulff <owulff@talend.com>
> wrote:
> >>> Hi all
> >>>
> >>>
> >>> I've got a very simple route which reads from a file, does some
> processing and then sends it by mail. I've also created a unit test based
> on CamelSpringTestSupport where I mock the smtp endpoint and update the
> consuming endpoint:
> >>>
> >>>
> >>>          @Override
> >>>          protected void doPostSetup() throws Exception {
> >>>
> >>>
> >>>
> context.getRouteDefinition(ROUTE_ID).adviceWith(context, new
> AdviceWithRouteBuilder() {
> >>>                     @Override
> >>>                     public void configure() throws Exception {
> >>>                         replaceFromWith("direct:teststart");
> >>>                         weaveAddFirst().convertBodyTo(String.class);
> >>>                         weaveAddLast().log(LoggingLevel.DEBUG, "End:
> ${body}");
> >>>
> >>>                     }
> >>>                 });
> >>>
> >>>
> >>>     @Override
> >>>     public String isMockEndpointsAndSkip() {
> >>>         return "smtp*";
> >>>     }
> >>>
> >>>
> >>>
> >>> This is the route:
> >>>
> >>>
> >>>         <onCompletion>
> >>>             <to uri="jms:topic:MON?disableReplyTo=true" />
> >>>         </onCompletion>
> >>>
> >>>         <route id="email-deliver">
> >>>             <from uri="file://{{src.folder}}?include=.*.xml" />
> >>>             <unmarshal>
> >>>                 <jaxb contextPath="com.example.email.jaxb"/>
> >>>             </unmarshal>
> >>>             <process ref="dummy" />
> >>>             <to uri="smtp://{{smtp.hostname}}?contentType=text/html"
/>
> >>>         </route>
> >>>
> >>>
> >>>
> >>> When I run the maven project without <onCompletion> it works but if
I
> activate <onCompletion> it fails with the following error:
> >>>
> >>>
> >>>
> >>> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.577
> sec <<< FAILURE! - in com.example.email.CamelRouteTest
> >>> testSendingMail(com.example.email.CamelRouteTest)  Time elapsed: 4.514
> sec  <<< ERROR!
> >>> java.lang.IllegalArgumentException: There are no outputs which
> matches: * in the route: Route(email-deliver)[[From[direct:teststart]] ->
> [onCompletion[[To[jms:topic:MON?disableReplyTo=true]]],
> Unmarshal[org.apache.camel.model.dataformat.JaxbDataFormat@7ea08277],
> process[ref:dummy], To[smtp://{{smtp.hostname}}?contentType=text/html]]]
> >>>         at
> org.apache.camel.builder.AdviceWithTasks$3.task(AdviceWithTasks.java:305)
> >>>         at
> org.apache.camel.model.RouteDefinition.adviceWith(RouteDefinition.java:281)
> >>>         at
> com.example.email.CamelRouteTest.doPostSetup(CamelRouteTest.java:37)
> >>>
> >>>
> >>> Results :
> >>>
> >>> Tests in error:
> >>>   CamelRouteTest>CamelTestSupport.setUp:240->doPostSetup:37 ยป
> IllegalArgument Th...
> >>>
> >>> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
> >>>
> >>>
> >>>
> >>> I've searched in the internet for this error "There are no outputs
> which matches: *" but haven't found anything which explains why I've
> discovered this behaviour.
> >>>
> >>>
> >>> What do I have to change to fix the unit test.
> >>>
> >>>
> >>> Thanks for your feedback
> >>>
> >>> Oli
> >>>
> >>>
> >>
> >>
> >>
> >> --
> >> Claus Ibsen
> >> -----------------
> >> http://davsclaus.com @davsclaus
> >> Camel in Action 2: https://www.manning.com/ibsen2
> >
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > http://davsclaus.com @davsclaus
> > Camel in Action 2: https://www.manning.com/ibsen2
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>
-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message