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: frustration with multiple mock endpoints in 1 unit test.
Date Wed, 26 Aug 2009 12:16:38 GMT
On Tue, Aug 25, 2009 at 7:41 PM, Mick Knutson<mknutson@baselogic.com> wrote:
> I started to create a blog to talk about what I am trying to do. I also talk
> about the current issues I have for testing.
>
> http://www.baselogic.com/blog/java/testing-activemq-virtualtopics-using-camel-and-junit
>
>

Nice blog.

Anyway I will suggest to start simple and do not use AOP, spring
testing etc. to get a simple test working as you want.
Then grow from there.

And are you sure that the virtual topic works as you want, sounds as
if there are competing consumers. Are the topic durable so you are
guaranteed that every subscriber gets a copy?

Maybe try a test without this virtual topic and try with a regular
durable topic and / or a few queues to get the hang on it.


>
> ---
> Thank You…
>
> Mick Knutson, President
>
> BASE Logic, Inc.
> Enterprise Architecture, Design, Mentoring & Agile Consulting
> p. (866) BLiNC-411: (254-6241-1)
> f. (415) 685-4233
>
> Website: http://baselogic.com
> Linked IN: http://linkedin.com/in/mickknutson
> Vacation Rental: http://tahoe.baselogic.com
> ---
>
>
>
> On Mon, Aug 24, 2009 at 9:47 AM, Mick Knutson <mknutson@baselogic.com>wrote:
>
>> I appreciate your observation, as all too often the net is, and can be
>> misinterpreted. Again, please accept my apology.
>>
>> I am currently writing something more formal, that I will be able to use
>> now, and going forward, and again, I respectfully appreciate everyone's help
>> and time.
>>
>> ---
>> Thank You…
>>
>> Mick Knutson, President
>>
>> BASE Logic, Inc.
>> Enterprise Architecture, Design, Mentoring & Agile Consulting
>> p. (866) BLiNC-411: (254-6241-1)
>> f. (415) 685-4233
>>
>> Website: http://baselogic.com
>> Linked IN: http://linkedin.com/in/mickknutson
>> Vacation Rental: http://tahoe.baselogic.com
>> ---
>>
>>
>>
>> On Mon, Aug 24, 2009 at 9:40 AM, Claus Ibsen <claus.ibsen@gmail.com>wrote:
>>
>>> Hi
>>>
>>> Thanks for understanding.
>>>
>>> And I may have been a bit harsh but its just to easy to write and
>>> press the send button :)
>>> Lets start over when we got a better understanding what you want to do
>>> so we can give better advice.
>>>
>>> And btw I am not a moderator or hold any special privileges or
>>> anything at this mailinglist.
>>> What I did write was my personal observations.
>>>
>>>
>>> On Mon, Aug 24, 2009 at 3:04 PM, Mick Knutson<mknutson@baselogic.com>
>>> wrote:
>>> > 1. I am going to create a blog as I promised, and I am going to start
>>> > writing it this minute to help describe the entire picture and all the
>>> piece
>>> > involved. Sorry I have not done this before.
>>> >
>>> > 2. I feel incredibly _bad_ that I have ever come across as yelling
>>> > _ever_.... I would have never consciously done so, and am extremely
>>> grateful
>>> > for your help. Again, very, very sorry...
>>> >
>>> >
>>> >
>>> > ---
>>> > Thank You…
>>> >
>>> > Mick Knutson, President
>>> >
>>> > BASE Logic, Inc.
>>> > Enterprise Architecture, Design, Mentoring & Agile Consulting
>>> > p. (866) BLiNC-411: (254-6241-1)
>>> > f. (415) 685-4233
>>> >
>>> > Website: http://baselogic.com
>>> > Linked IN: http://linkedin.com/in/mickknutson
>>> > Vacation Rental: http://tahoe.baselogic.com
>>> > ---
>>> >
>>> >
>>> >
>>> > On Mon, Aug 24, 2009 at 3:20 AM, Claus Ibsen <claus.ibsen@gmail.com>
>>> wrote:
>>> >
>>> >> Hi
>>> >>
>>> >> Maybe you should start over and explain to us what you want to test?
>>> >>
>>> >> Its not easy / motivating to help when people shout and post all kind
>>> >> of code and expecting the community to use time / take time to dig
>>> >> into a haystack.
>>> >> Sorry I could not resist stating this.
>>> >>
>>> >> So I suggest to start easy and create a small unit test and maybe
>>> >> instead of JMS try out with pure seda to get the hang of the mock
>>> >> endpoints and how to use them. Then later write unit tests based on
>>> >> JMS.
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> On Mon, Aug 24, 2009 at 8:55 AM, Willem Jiang<willem.jiang@gmail.com>
>>> >> wrote:
>>> >> > Hi
>>> >> >
>>> >> > I still don't know how do you send the message to
>>> "seda:resultClient1",
>>> >> > "seda:resultClient2" etc.
>>> >> > BTW
>>> >> >
>>> >> > "seda:resultClient1" is not the same endpoint of "mock:resultClient1"
>>> >> >
>>> >> > Willem
>>> >> > Mick Knutson wrote:
>>> >> >>
>>> >> >> There is only 1 test right now, but I added:
>>> >> >>
>>> >> >>    @Before
>>> >> >>    public void testBefore() throws Exception {
>>> >> >>        log.info("*** Before ***");
>>> >> >>        //assertNotNull(context);
>>> >> >>
>>> >> >>        resultClient1.reset();
>>> >> >>        resultClient2.reset();
>>> >> >>        resultClient3.reset();
>>> >> >>        resultClient4.reset();
>>> >> >>        //resultAllClients.reset();
>>> >> >>    }
>>> >> >>
>>> >> >> already. But I sent another mail a second ago about the tracer.
>>> >> >>
>>> >> >> The strange issue is not getting too many message, but the
FIRST
>>> mock
>>> >> just
>>> >> >> not getting any messages.
>>> >> >>
>>> >> >> I have even played with commenting out client 1, then I get
client 2
>>> >> stops
>>> >> >> getting message randomly. I say randomly, because I have had
the
>>> test
>>> >> >> working, then I change nothing. But I try to run through 10+
>>> iterations
>>> >> >> through the same test. It will work for several, then just
stop.
>>> Then it
>>> >> >> might start again. if I keep going, but most of the time not.
>>> >> >>
>>> >> >> I am looking for a pattern to deduce the issue, but it is alluding
>>> me.
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> ---
>>> >> >> Thank You…
>>> >> >>
>>> >> >> Mick Knutson, President
>>> >> >>
>>> >> >> BASE Logic, Inc.
>>> >> >> Enterprise Architecture, Design, Mentoring & Agile Consulting
>>> >> >> p. (866) BLiNC-411: (254-6241-1)
>>> >> >> f. (415) 685-4233
>>> >> >>
>>> >> >> Website: http://baselogic.com
>>> >> >> Linked IN: http://linkedin.com/in/mickknutson
>>> >> >> Vacation Rental: http://tahoe.baselogic.com
>>> >> >> ---
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> On Sun, Aug 23, 2009 at 6:14 AM, Willem Jiang
>>> >> >> <willem.jiang@gmail.com>wrote:
>>> >> >>
>>> >> >>> Mick Knutson wrote:
>>> >> >>>
>>> >> >>>> I have a unit test that has a wiretap that routes the
message to a
>>> >> mock
>>> >> >>>> endpoint.
>>> >> >>>> Here is what works:
>>> >> >>>>
>>> >> >>>>   @EndpointInject(uri = "mock:resultAllClients")
>>> >> >>>>   protected MockEndpoint resultAllClients;
>>> >> >>>>
>>> >> >>>>   @EndpointInject(uri = "mock:resultClient1")
>>> >> >>>>   protected MockEndpoint resultClient1;
>>> >> >>>>   @EndpointInject(uri = "mock:resultClient2")
>>> >> >>>>   protected MockEndpoint resultClient2;
>>> >> >>>>   @EndpointInject(uri = "mock:resultClient3")
>>> >> >>>>   protected MockEndpoint resultClient3;
>>> >> >>>>   @EndpointInject(uri = "mock:resultClient4")
>>> >> >>>>   protected MockEndpoint resultClient4;
>>> >> >>>>
>>> >> >>>>   @Test
>>> >> >>>>   public void testSendBetMessage() throws Exception
{
>>> >> >>>>       log.info("Send a test message to Table Service");
>>> >> >>>>
>>> >> >>>>       //resultAllClients.expectedMinimumMessageCount(3);
>>> >> >>>>       resultClient1.expectedMessageCount(1);
>>> >> >>>>       resultClient2.expectedMessageCount(1);
>>> >> >>>>       //resultClient3.expectedMessageCount(1);
>>> >> >>>>       //resultClient4.expectedMessageCount(1);
>>> >> >>>>
>>> >> >>>>
>>> >> >>>>       // Send the test message to make Server Service
create our
>>> >> Status
>>> >> >>>> Message
>>> >> >>>>       producerTemplate.sendBody("jms:queue:bets",
>>> >> >>>>               ExchangePattern.InOnly, 22);
>>> >> >>>>
>>> >> >>>>       // now lets assert that the mock endpoint
received messages
>>> >> >>>>       resultClient1.assertIsSatisfied();
>>> >> >>>>       resultClient2.assertIsSatisfied();
>>> >> >>>>       //resultClient3.assertIsSatisfied();
>>> >> >>>>       //resultClient4.assertIsSatisfied();
>>> >> >>>>
>>> >> >>>>       //resultAllClients.assertIsSatisfied();
>>> >> >>>>       log.info("XXXXXXXXXX DONE
>>> >> >>>> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
>>> >> >>>>
>>> >> >>>>   }
>>> >> >>>>
>>> >> >>>>   /*@After
>>> >> >>>>   public void finalizeTests() {
>>> >> >>>>       // resultAllClients.reset();
>>> >> >>>>       resultClient1.reset();
>>> >> >>>>       resultClient2.reset();
>>> >> >>>>       resultClient3.reset();
>>> >> >>>>       // resultClient4.reset();
>>> >> >>>>   }*/
>>> >> >>>>
>>> >> >>>>
>>> >> >>>>
>>> >> >>>> This is in 1 unit test class and the way it is above
has all
>>> >> assertions
>>> >> >>>> pass.
>>> >> >>>> If any of the following things change, I get:
>>> >> >>>>
>>> >> >>>> java.lang.AssertionError: mock://resultClient1 Received
message
>>> count.
>>> >> >>>> Expected: <1> but was: <0>
>>> >> >>>>
>>> >> >>>>
>>> >> >>>> 1. If I uncomment the finalizeTests() method, the error
starts.
>>> >> >>>>
>>> >> >>> Since the mock endpoints are injected into your unit test,
if there
>>> are
>>> >> >>> more than one unit test method , you need to reset the
mock
>>> endpoints
>>> >> to
>>> >> >>> make sure the message count values are right.
>>> >> >>>
>>> >> >>>
>>> >> >>>> 2. If I uncomment resultClient3, resultClient4 it might
start
>>> working,
>>> >> >>>> then
>>> >> >>>> randomly it will show up again and I have to comment
them out in
>>> order
>>> >> >>>> for
>>> >> >>>> the test to pass again.
>>> >> >>>>
>>> >> >>> I don't know how your mock:resultClient3, mock:resultClient4
can
>>> >> receive
>>> >> >>> the message from the route file that you showed me.
>>> >> >>>
>>> >> >>>
>>> >> >>>
>>> >> >>>> Is there some bug/defect in the Mock that I have not
googled?
>>> >> >>>>
>>> >> >>>>
>>> >> >>>>
>>> >> >>>> ---
>>> >> >>>> Thank You…
>>> >> >>>>
>>> >> >>>> Mick Knutson, President
>>> >> >>>>
>>> >> >>>> BASE Logic, Inc.
>>> >> >>>> Enterprise Architecture, Design, Mentoring & Agile
Consulting
>>> >> >>>> p. (866) BLiNC-411: (254-6241-1)
>>> >> >>>> f. (415) 685-4233
>>> >> >>>>
>>> >> >>>> Website: http://baselogic.com
>>> >> >>>> Linked IN: http://linkedin.com/in/mickknutson
>>> >> >>>> Vacation Rental: http://tahoe.baselogic.com
>>> >> >>>> ---
>>> >> >>>>
>>> >> >>>>
>>> >> >>> Willem
>>> >> >>>
>>> >> >>
>>> >> >
>>> >> >
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Claus Ibsen
>>> >> Apache Camel Committer
>>> >>
>>> >> Open Source Integration: http://fusesource.com
>>> >> Blog: http://davsclaus.blogspot.com/
>>> >> Twitter: http://twitter.com/davsclaus
>>> >>
>>> >
>>>
>>>
>>>
>>> --
>>> Claus Ibsen
>>> Apache Camel Committer
>>>
>>> Open Source Integration: http://fusesource.com
>>> Blog: http://davsclaus.blogspot.com/
>>> Twitter: http://twitter.com/davsclaus
>>>
>>
>>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Mime
View raw message