You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by "kraythe ." <kr...@gmail.com> on 2013/09/27 08:54:45 UTC
CamelTestSupport Needs a New Method
There is a problem with the CamelTestSupport class in that if you call
getMockEndpoint on an endpoint that doesnt exist, it blithely returns you
an endpoint connected to nothing. The problem is you end up chasing endless
test failures when the fact is your endpoint is not even there. So I
suggest a method I added to my subclass of CamelTestSupport which is:
protected MockEndpoint assertAndGetMockEndpoint(final String uri) {
assertNotNull(context.hasEndpoint(uri));
return getMockEndpoint(uri);
}
This method will make sure that the endpoint is there before returning it
and it will make tests easier to write.
Re: CamelTestSupport Needs a New Method
Posted by "kraythe ." <kr...@gmail.com>.
https://issues.apache.org/jira/browse/CAMEL-6792 created.
I disagree about the test support making assertions. If we are calling a
method appropriately named, there is no reason it shouldn't make the assert
call. This is, after all, a Camel*TestSupport* class. If we do it with a
different signature and return null then every time I call mock =
getMockEndpoint(), I need another line of code which is
assertNotNull(mock). If I miss one, I am with a ghost endpoint and my tests
give invalid results. If we dont want to use an assert, I would at least
suggest an IllegalArgumentException which will have the same effect. In
fact I cant conceive of a use case for getMockEndpoint that should create a
ghost mock not attached to anything. I expected the existing method to
throw if I gave it a wrong URI.
On Fri, Sep 27, 2013 at 9:16 AM, Jan Matèrne (jhm) <ap...@materne.de>wrote:
> Instead of overloading the method I would prefer another one:
> - getMockEndpoint will return the endpoint or null
> - createMockEndpoint will return the endpoint and create one if required
> But that would change the existing API of getMockEndpoint() :(
>
> Having a 2nd argument would result in
> getMockEndpoint(uri) {
> // use 'false' as it is the current implementation
> return getMockEndpoint(uri,false)
> }
> getMockEndpoint(uri,boolean create) ...
>
> Maybe it is just enough to improve the javadoc of getMockEndpoint(),
> describe the
> "auto-creation" behaviour and link to context.hasEndpoint(uri) ...
>
>
> Jan
>
>
> > -----Ursprüngliche Nachricht-----
> > Von: Raul Kripalani [mailto:raul@evosent.com]
> > Gesendet: Freitag, 27. September 2013 15:36
> > An: users@camel.apache.org
> > Betreff: Re: CamelTestSupport Needs a New Method
> >
> > I would prefer to add another signature for that method such that it
> > accepts a 2nd argument "create" which is a boolean. If true, it will
> > create the endpoint; else it will return null.
> >
> > I don't think CamelTestSupport should make the assertion; it should be
> > the user's code, if that's what he/she is after.
> >
> > Regards,
> >
> > *Raúl Kripalani*
> > Apache Camel PMC Member & Committer | Enterprise Architect, Open Source
> > Integration specialist http://about.me/raulkripalani |
> > http://www.linkedin.com/in/raulkripalani
> > http://blog.raulkr.net | twitter: @raulvk
> >
> > On Fri, Sep 27, 2013 at 9:11 AM, Willem jiang
> > <wi...@gmail.com>wrote:
> >
> > > Yeah, it's a good suggestion.
> > > Please feel free to fill a JIRA[1] for it :)
> > >
> > > [1]http://issues.apache.org/jira/browse/CAMEL
> > >
> > > --
> > > Willem Jiang
> > >
> > > Red Hat, Inc.
> > > Web: http://www.redhat.com
> > > Blog: http://willemjiang.blogspot.com
> > > (http://willemjiang.blogspot.com/)
> > > (English)
> > > http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
> > > Twitter: willemjiang
> > > Weibo: 姜宁willem
> > >
> > >
> > >
> > >
> > >
> > > On Friday, September 27, 2013 at 7:54 AM, kraythe . wrote:
> > >
> > > > There is a problem with the CamelTestSupport class in that if you
> > > > call getMockEndpoint on an endpoint that doesnt exist, it blithely
> > > > returns you an endpoint connected to nothing. The problem is you
> > end
> > > > up chasing
> > > endless
> > > > test failures when the fact is your endpoint is not even there. So
> > I
> > > > suggest a method I added to my subclass of CamelTestSupport which
> > is:
> > > >
> > > > protected MockEndpoint assertAndGetMockEndpoint(final String uri) {
> > > >
> > > > assertNotNull(context.hasEndpoint(uri));
> > > >
> > > > return getMockEndpoint(uri);
> > > >
> > > > }
> > > >
> > > > This method will make sure that the endpoint is there before
> > > > returning it and it will make tests easier to write.
> > >
> > >
> > >
> > >
>
>
Re: CamelTestSupport Needs a New Method
Posted by James Carman <ja...@carmanconsulting.com>.
Patch submitted.
https://issues.apache.org/jira/browse/CAMEL-6792
On Sat, Sep 28, 2013 at 4:40 AM, Claus Ibsen <cl...@gmail.com> wrote:
> Hi
>
> Yeah the getMockEndpoint with the 2nd boolean is much better
>
> On Fri, Sep 27, 2013 at 3:16 PM, Jan Matèrne (jhm) <ap...@materne.de> wrote:
>> Instead of overloading the method I would prefer another one:
>> - getMockEndpoint will return the endpoint or null
>> - createMockEndpoint will return the endpoint and create one if required
>> But that would change the existing API of getMockEndpoint() :(
>>
>> Having a 2nd argument would result in
>> getMockEndpoint(uri) {
>> // use 'false' as it is the current implementation
>> return getMockEndpoint(uri,false)
>> }
>> getMockEndpoint(uri,boolean create) ...
>>
>> Maybe it is just enough to improve the javadoc of getMockEndpoint(), describe the
>> "auto-creation" behaviour and link to context.hasEndpoint(uri) ...
>>
>>
>> Jan
>>
>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: Raul Kripalani [mailto:raul@evosent.com]
>>> Gesendet: Freitag, 27. September 2013 15:36
>>> An: users@camel.apache.org
>>> Betreff: Re: CamelTestSupport Needs a New Method
>>>
>>> I would prefer to add another signature for that method such that it
>>> accepts a 2nd argument "create" which is a boolean. If true, it will
>>> create the endpoint; else it will return null.
>>>
>>> I don't think CamelTestSupport should make the assertion; it should be
>>> the user's code, if that's what he/she is after.
>>>
>>> Regards,
>>>
>>> *Raúl Kripalani*
>>> Apache Camel PMC Member & Committer | Enterprise Architect, Open Source
>>> Integration specialist http://about.me/raulkripalani |
>>> http://www.linkedin.com/in/raulkripalani
>>> http://blog.raulkr.net | twitter: @raulvk
>>>
>>> On Fri, Sep 27, 2013 at 9:11 AM, Willem jiang
>>> <wi...@gmail.com>wrote:
>>>
>>> > Yeah, it's a good suggestion.
>>> > Please feel free to fill a JIRA[1] for it :)
>>> >
>>> > [1]http://issues.apache.org/jira/browse/CAMEL
>>> >
>>> > --
>>> > Willem Jiang
>>> >
>>> > Red Hat, Inc.
>>> > Web: http://www.redhat.com
>>> > Blog: http://willemjiang.blogspot.com
>>> > (http://willemjiang.blogspot.com/)
>>> > (English)
>>> > http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
>>> > Twitter: willemjiang
>>> > Weibo: 姜宁willem
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > On Friday, September 27, 2013 at 7:54 AM, kraythe . wrote:
>>> >
>>> > > There is a problem with the CamelTestSupport class in that if you
>>> > > call getMockEndpoint on an endpoint that doesnt exist, it blithely
>>> > > returns you an endpoint connected to nothing. The problem is you
>>> end
>>> > > up chasing
>>> > endless
>>> > > test failures when the fact is your endpoint is not even there. So
>>> I
>>> > > suggest a method I added to my subclass of CamelTestSupport which
>>> is:
>>> > >
>>> > > protected MockEndpoint assertAndGetMockEndpoint(final String uri) {
>>> > >
>>> > > assertNotNull(context.hasEndpoint(uri));
>>> > >
>>> > > return getMockEndpoint(uri);
>>> > >
>>> > > }
>>> > >
>>> > > This method will make sure that the endpoint is there before
>>> > > returning it and it will make tests easier to write.
>>> >
>>> >
>>> >
>>> >
>>
>
>
>
> --
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> Email: cibsen@redhat.com
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
Re: CamelTestSupport Needs a New Method
Posted by "kraythe ." <kr...@gmail.com>.
As long as it throws an exception (as I see you did in the jira) it will be
perfect. I just dont want to perpretually have to say:
final MockEndpoint xx = getMockEndpoint("mock:direct:xx", false);
assertNotNull(xx);
That adds an unnecessary line to every call. If the method throws a runtime
exception I can just let it percolate and get caught by the testng
framework.
*Robert Simmons Jr. MSc. - Lead Java Architect @ EA*
*Author of: Hardcore Java (2003) and Maintainable Java (2012)*
*LinkedIn: **http://www.linkedin.com/pub/robert-simmons/40/852/a39*
On Sat, Sep 28, 2013 at 3:40 AM, Claus Ibsen <cl...@gmail.com> wrote:
> Hi
>
> Yeah the getMockEndpoint with the 2nd boolean is much better
>
> On Fri, Sep 27, 2013 at 3:16 PM, Jan Matèrne (jhm) <ap...@materne.de>
> wrote:
> > Instead of overloading the method I would prefer another one:
> > - getMockEndpoint will return the endpoint or null
> > - createMockEndpoint will return the endpoint and create one if required
> > But that would change the existing API of getMockEndpoint() :(
> >
> > Having a 2nd argument would result in
> > getMockEndpoint(uri) {
> > // use 'false' as it is the current implementation
> > return getMockEndpoint(uri,false)
> > }
> > getMockEndpoint(uri,boolean create) ...
> >
> > Maybe it is just enough to improve the javadoc of getMockEndpoint(),
> describe the
> > "auto-creation" behaviour and link to context.hasEndpoint(uri) ...
> >
> >
> > Jan
> >
> >
> >> -----Ursprüngliche Nachricht-----
> >> Von: Raul Kripalani [mailto:raul@evosent.com]
> >> Gesendet: Freitag, 27. September 2013 15:36
> >> An: users@camel.apache.org
> >> Betreff: Re: CamelTestSupport Needs a New Method
> >>
> >> I would prefer to add another signature for that method such that it
> >> accepts a 2nd argument "create" which is a boolean. If true, it will
> >> create the endpoint; else it will return null.
> >>
> >> I don't think CamelTestSupport should make the assertion; it should be
> >> the user's code, if that's what he/she is after.
> >>
> >> Regards,
> >>
> >> *Raúl Kripalani*
> >> Apache Camel PMC Member & Committer | Enterprise Architect, Open Source
> >> Integration specialist http://about.me/raulkripalani |
> >> http://www.linkedin.com/in/raulkripalani
> >> http://blog.raulkr.net | twitter: @raulvk
> >>
> >> On Fri, Sep 27, 2013 at 9:11 AM, Willem jiang
> >> <wi...@gmail.com>wrote:
> >>
> >> > Yeah, it's a good suggestion.
> >> > Please feel free to fill a JIRA[1] for it :)
> >> >
> >> > [1]http://issues.apache.org/jira/browse/CAMEL
> >> >
> >> > --
> >> > Willem Jiang
> >> >
> >> > Red Hat, Inc.
> >> > Web: http://www.redhat.com
> >> > Blog: http://willemjiang.blogspot.com
> >> > (http://willemjiang.blogspot.com/)
> >> > (English)
> >> > http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
> >> > Twitter: willemjiang
> >> > Weibo: 姜宁willem
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > On Friday, September 27, 2013 at 7:54 AM, kraythe . wrote:
> >> >
> >> > > There is a problem with the CamelTestSupport class in that if you
> >> > > call getMockEndpoint on an endpoint that doesnt exist, it blithely
> >> > > returns you an endpoint connected to nothing. The problem is you
> >> end
> >> > > up chasing
> >> > endless
> >> > > test failures when the fact is your endpoint is not even there. So
> >> I
> >> > > suggest a method I added to my subclass of CamelTestSupport which
> >> is:
> >> > >
> >> > > protected MockEndpoint assertAndGetMockEndpoint(final String uri) {
> >> > >
> >> > > assertNotNull(context.hasEndpoint(uri));
> >> > >
> >> > > return getMockEndpoint(uri);
> >> > >
> >> > > }
> >> > >
> >> > > This method will make sure that the endpoint is there before
> >> > > returning it and it will make tests easier to write.
> >> >
> >> >
> >> >
> >> >
> >
>
>
>
> --
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> Email: cibsen@redhat.com
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
>
Re: CamelTestSupport Needs a New Method
Posted by Claus Ibsen <cl...@gmail.com>.
Hi
Yeah the getMockEndpoint with the 2nd boolean is much better
On Fri, Sep 27, 2013 at 3:16 PM, Jan Matèrne (jhm) <ap...@materne.de> wrote:
> Instead of overloading the method I would prefer another one:
> - getMockEndpoint will return the endpoint or null
> - createMockEndpoint will return the endpoint and create one if required
> But that would change the existing API of getMockEndpoint() :(
>
> Having a 2nd argument would result in
> getMockEndpoint(uri) {
> // use 'false' as it is the current implementation
> return getMockEndpoint(uri,false)
> }
> getMockEndpoint(uri,boolean create) ...
>
> Maybe it is just enough to improve the javadoc of getMockEndpoint(), describe the
> "auto-creation" behaviour and link to context.hasEndpoint(uri) ...
>
>
> Jan
>
>
>> -----Ursprüngliche Nachricht-----
>> Von: Raul Kripalani [mailto:raul@evosent.com]
>> Gesendet: Freitag, 27. September 2013 15:36
>> An: users@camel.apache.org
>> Betreff: Re: CamelTestSupport Needs a New Method
>>
>> I would prefer to add another signature for that method such that it
>> accepts a 2nd argument "create" which is a boolean. If true, it will
>> create the endpoint; else it will return null.
>>
>> I don't think CamelTestSupport should make the assertion; it should be
>> the user's code, if that's what he/she is after.
>>
>> Regards,
>>
>> *Raúl Kripalani*
>> Apache Camel PMC Member & Committer | Enterprise Architect, Open Source
>> Integration specialist http://about.me/raulkripalani |
>> http://www.linkedin.com/in/raulkripalani
>> http://blog.raulkr.net | twitter: @raulvk
>>
>> On Fri, Sep 27, 2013 at 9:11 AM, Willem jiang
>> <wi...@gmail.com>wrote:
>>
>> > Yeah, it's a good suggestion.
>> > Please feel free to fill a JIRA[1] for it :)
>> >
>> > [1]http://issues.apache.org/jira/browse/CAMEL
>> >
>> > --
>> > Willem Jiang
>> >
>> > Red Hat, Inc.
>> > Web: http://www.redhat.com
>> > Blog: http://willemjiang.blogspot.com
>> > (http://willemjiang.blogspot.com/)
>> > (English)
>> > http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
>> > Twitter: willemjiang
>> > Weibo: 姜宁willem
>> >
>> >
>> >
>> >
>> >
>> > On Friday, September 27, 2013 at 7:54 AM, kraythe . wrote:
>> >
>> > > There is a problem with the CamelTestSupport class in that if you
>> > > call getMockEndpoint on an endpoint that doesnt exist, it blithely
>> > > returns you an endpoint connected to nothing. The problem is you
>> end
>> > > up chasing
>> > endless
>> > > test failures when the fact is your endpoint is not even there. So
>> I
>> > > suggest a method I added to my subclass of CamelTestSupport which
>> is:
>> > >
>> > > protected MockEndpoint assertAndGetMockEndpoint(final String uri) {
>> > >
>> > > assertNotNull(context.hasEndpoint(uri));
>> > >
>> > > return getMockEndpoint(uri);
>> > >
>> > > }
>> > >
>> > > This method will make sure that the endpoint is there before
>> > > returning it and it will make tests easier to write.
>> >
>> >
>> >
>> >
>
--
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cibsen@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
AW: CamelTestSupport Needs a New Method
Posted by "Jan Matèrne (jhm)" <ap...@materne.de>.
Instead of overloading the method I would prefer another one:
- getMockEndpoint will return the endpoint or null
- createMockEndpoint will return the endpoint and create one if required
But that would change the existing API of getMockEndpoint() :(
Having a 2nd argument would result in
getMockEndpoint(uri) {
// use 'false' as it is the current implementation
return getMockEndpoint(uri,false)
}
getMockEndpoint(uri,boolean create) ...
Maybe it is just enough to improve the javadoc of getMockEndpoint(), describe the
"auto-creation" behaviour and link to context.hasEndpoint(uri) ...
Jan
> -----Ursprüngliche Nachricht-----
> Von: Raul Kripalani [mailto:raul@evosent.com]
> Gesendet: Freitag, 27. September 2013 15:36
> An: users@camel.apache.org
> Betreff: Re: CamelTestSupport Needs a New Method
>
> I would prefer to add another signature for that method such that it
> accepts a 2nd argument "create" which is a boolean. If true, it will
> create the endpoint; else it will return null.
>
> I don't think CamelTestSupport should make the assertion; it should be
> the user's code, if that's what he/she is after.
>
> Regards,
>
> *Raúl Kripalani*
> Apache Camel PMC Member & Committer | Enterprise Architect, Open Source
> Integration specialist http://about.me/raulkripalani |
> http://www.linkedin.com/in/raulkripalani
> http://blog.raulkr.net | twitter: @raulvk
>
> On Fri, Sep 27, 2013 at 9:11 AM, Willem jiang
> <wi...@gmail.com>wrote:
>
> > Yeah, it's a good suggestion.
> > Please feel free to fill a JIRA[1] for it :)
> >
> > [1]http://issues.apache.org/jira/browse/CAMEL
> >
> > --
> > Willem Jiang
> >
> > Red Hat, Inc.
> > Web: http://www.redhat.com
> > Blog: http://willemjiang.blogspot.com
> > (http://willemjiang.blogspot.com/)
> > (English)
> > http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
> > Twitter: willemjiang
> > Weibo: 姜宁willem
> >
> >
> >
> >
> >
> > On Friday, September 27, 2013 at 7:54 AM, kraythe . wrote:
> >
> > > There is a problem with the CamelTestSupport class in that if you
> > > call getMockEndpoint on an endpoint that doesnt exist, it blithely
> > > returns you an endpoint connected to nothing. The problem is you
> end
> > > up chasing
> > endless
> > > test failures when the fact is your endpoint is not even there. So
> I
> > > suggest a method I added to my subclass of CamelTestSupport which
> is:
> > >
> > > protected MockEndpoint assertAndGetMockEndpoint(final String uri) {
> > >
> > > assertNotNull(context.hasEndpoint(uri));
> > >
> > > return getMockEndpoint(uri);
> > >
> > > }
> > >
> > > This method will make sure that the endpoint is there before
> > > returning it and it will make tests easier to write.
> >
> >
> >
> >
Re: CamelTestSupport Needs a New Method
Posted by Raul Kripalani <ra...@evosent.com>.
I would prefer to add another signature for that method such that it
accepts a 2nd argument "create" which is a boolean. If true, it will create
the endpoint; else it will return null.
I don't think CamelTestSupport should make the assertion; it should be the
user's code, if that's what he/she is after.
Regards,
*Raúl Kripalani*
Apache Camel PMC Member & Committer | Enterprise Architect, Open Source
Integration specialist
http://about.me/raulkripalani | http://www.linkedin.com/in/raulkripalani
http://blog.raulkr.net | twitter: @raulvk
On Fri, Sep 27, 2013 at 9:11 AM, Willem jiang <wi...@gmail.com>wrote:
> Yeah, it's a good suggestion.
> Please feel free to fill a JIRA[1] for it :)
>
> [1]http://issues.apache.org/jira/browse/CAMEL
>
> --
> Willem Jiang
>
> Red Hat, Inc.
> Web: http://www.redhat.com
> Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/)
> (English)
> http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
> Twitter: willemjiang
> Weibo: 姜宁willem
>
>
>
>
>
> On Friday, September 27, 2013 at 7:54 AM, kraythe . wrote:
>
> > There is a problem with the CamelTestSupport class in that if you call
> > getMockEndpoint on an endpoint that doesnt exist, it blithely returns you
> > an endpoint connected to nothing. The problem is you end up chasing
> endless
> > test failures when the fact is your endpoint is not even there. So I
> > suggest a method I added to my subclass of CamelTestSupport which is:
> >
> > protected MockEndpoint assertAndGetMockEndpoint(final String uri) {
> >
> > assertNotNull(context.hasEndpoint(uri));
> >
> > return getMockEndpoint(uri);
> >
> > }
> >
> > This method will make sure that the endpoint is there before returning it
> > and it will make tests easier to write.
>
>
>
>
Re: CamelTestSupport Needs a New Method
Posted by Willem jiang <wi...@gmail.com>.
Yeah, it's a good suggestion.
Please feel free to fill a JIRA[1] for it :)
[1]http://issues.apache.org/jira/browse/CAMEL
--
Willem Jiang
Red Hat, Inc.
Web: http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang
Weibo: 姜宁willem
On Friday, September 27, 2013 at 7:54 AM, kraythe . wrote:
> There is a problem with the CamelTestSupport class in that if you call
> getMockEndpoint on an endpoint that doesnt exist, it blithely returns you
> an endpoint connected to nothing. The problem is you end up chasing endless
> test failures when the fact is your endpoint is not even there. So I
> suggest a method I added to my subclass of CamelTestSupport which is:
>
> protected MockEndpoint assertAndGetMockEndpoint(final String uri) {
>
> assertNotNull(context.hasEndpoint(uri));
>
> return getMockEndpoint(uri);
>
> }
>
> This method will make sure that the endpoint is there before returning it
> and it will make tests easier to write.