Thanks! It would be great to have some filtering functionality as well. I've added an example as a comment on the blog.
Regards, /Johan Claus Ibsen-2 wrote: > > Hi > > I posted a blog entry about the new feature in 2.2 > http://davsclaus.blogspot.com/2010/01/apache-camel-22-improved-test-kit.html > > > > On Wed, Jan 13, 2010 at 8:14 PM, Johan Haleby <[email protected]> > wrote: >> >> That looks really neat and would as far as I can see really help. It >> would be >> simple for me to wrap this in a test base class exposing something like >> "awaitCompletion("direct:foo")". >> >> Would be desirable/possible to have something similar to modify or extend >> an >> already defined route? Something like: >> RouteModificationBuilder builder = new >> RouteModificationBuilder(camelContext); >> builder.from("direct:foo").append(new Processor(..)).apply(); >> >> Or can you do this already? >> >> Thanks, >> /Johan >> >> >> Claus Ibsen-2 wrote: >>> >>> Hi >>> >>> I think CAMEL-2357 is what you are looking for >>> https://issues.apache.org/activemq/browse/CAMEL-2357 >>> >>> If you could take a look and maybe if you got some ideas or how you >>> would like the API to be to support your use-case. >>> There are some code snippets of my prototype in there. >>> >>> >>> On Wed, Jan 13, 2010 at 9:11 AM, Johan Haleby <[email protected]> >>> wrote: >>>> >>>> Hi, >>>> >>>> Thank you very much your suggestion with event notifiers worked! But I >>>> hope >>>> the changes in 2.2 can make it even better since now the >>>> ExchangeCompletedEvent is sent several times (once per "from" in the >>>> route >>>> definition") and thus it's hard to know the count in the latch when >>>> you're >>>> not sure to which endpoint the users sends the first message. >>>> >>>> Would you recommend using a snapshot of version 2.2 right now? (We'd >>>> also >>>> like to use Spring 3 in our project). >>>> >>>> /Johan >>>> >>>> >>>> Johan Haleby wrote: >>>>> >>>>> Hi, >>>>> >>>>> Thanks for your quick response. Sorry for not mentioning it in the >>>>> previous mail but I'm using Camel 2.1 just as you suspected. >>>>> Unfortunately >>>>> the first solution you posted (using async send and latches) won't >>>>> work >>>>> "out of the box" for me because the producer template is wrapped in an >>>>> anti-corruption layer and the test should use this anti-corruption >>>>> layer >>>>> to send the message. >>>>> >>>>> I'll look into your suggestion by subscribing to the >>>>> ExchangeDoneEvent. >>>>> Is >>>>> there anywhere I can find some documentation or example of how to do >>>>> this? >>>>> Or was it this that you went through in chapter 6 in the book? >>>>> >>>>> I look forward to the changes you mention in version 2.2, seems really >>>>> useful and looks to fit very well with what I'm trying to do here. Is >>>>> there an expected date when 2.2 may be available? >>>>> >>>>> Regards, >>>>> /Johan >>>>> >>>>> The first option won't work >>>>> >>>>> Claus Ibsen-2 wrote: >>>>>> >>>>>> On Tue, Jan 12, 2010 at 5:56 PM, Johan Haleby >>>>>> <[email protected]> >>>>>> wrote: >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I'm configuring routes using the Java DSL and it works very well. >>>>>>> However >>>>>>> during testing I'd like to somehow hook into the end of an already >>>>>>> defined >>>>>>> route to add notification support. The reason is that in my test I'm >>>>>>> creating a message and pass it to a queue using Camel and this >>>>>>> message >>>>>>> is >>>>>>> handled by a processor. After this processor has finished executing >>>>>>> I'd >>>>>>> like >>>>>>> to receive some sort of notification but only during testing. The >>>>>>> reason >>>>>>> is >>>>>>> that I'd like my test to wait until the processor has finished >>>>>>> executing >>>>>>> in >>>>>>> my test case so that I can verify the result of the processor. For >>>>>>> example: >>>>>>> >>>>>>> public void test() { >>>>>>> 1. send a message to queue // just as you would in production >>>>>>> 2. wait for the processor to finish // this is where I'd like to >>>>>>> get >>>>>>> a >>>>>>> notification that the processor has finished so that it's ok to >>>>>>> continue >>>>>>> to >>>>>>> the next step >>>>>>> 3. verify result >>>>>>> } >>>>>>> >>>>>>> The route may look something like: >>>>>>> from("jms:queue:myqueue).process(new MyProcessor()); // A >>>>>>> simplification >>>>>>> of >>>>>>> the production route >>>>>>> >>>>>>> Is there a preferred way of doing this in Camel without changing the >>>>>>> code >>>>>>> making up the "production route"? Or is there a better way to >>>>>>> achieve >>>>>>> it? >>>>>>> >>>>>> >>>>>> Chapter 6 in the book go over this issue and how to address that: >>>>>> http://www.manning.com/ibsen/ (will be updated in next MEAP due this >>>>>> month) >>>>>> >>>>>> However we made it easier to do nice and easy from an unit test in >>>>>> 2.2 >>>>>> which I assume is not the version of Camel you are using. >>>>>> In 2.2 you can advice and route by adding additional cross cutting >>>>>> concerns such as onCompletion, interceptors etc. which you would then >>>>>> be able to use to know when its done. >>>>>> >>>>>> In Camel 2.1 you got the EventNotification which you actually can use >>>>>> for that to get notified when an Exchange is done as it emits a >>>>>> ExchangeDoneEvent. >>>>>> I am currently improving that for 2.2 to let you filter out of the >>>>>> box >>>>>> the notifier so you only receive interesting events. But that should >>>>>> not hold you back from using that in 2.1. >>>>>> >>>>>> We may improve this situation even more to make it easy as it can get >>>>>> for testing production routes with test methods. So kinda inject >>>>>> mocks >>>>>> at end of routes etc. so you can use that to verify behavior etc. >>>>>> >>>>>> >>>>>>> /Johan >>>>>>> >>>>>>> -- >>>>>>> View this message in context: >>>>>>> http://old.nabble.com/Intercept-a-processor--tp27130672p27130672.html >>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Claus Ibsen >>>>>> Apache Camel Committer >>>>>> >>>>>> Author of Camel in Action: http://www.manning.com/ibsen/ >>>>>> Open Source Integration: http://fusesource.com >>>>>> Blog: http://davsclaus.blogspot.com/ >>>>>> Twitter: http://twitter.com/davsclaus >>>>>> >>>>>> >>>>> >>>>> >>>> >>>> -- >>>> View this message in context: >>>> http://old.nabble.com/Intercept-a-processor--tp27130672p27140999.html >>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>> >>>> >>> >>> >>> >>> -- >>> Claus Ibsen >>> Apache Camel Committer >>> >>> Author of Camel in Action: http://www.manning.com/ibsen/ >>> Open Source Integration: http://fusesource.com >>> Blog: http://davsclaus.blogspot.com/ >>> Twitter: http://twitter.com/davsclaus >>> >>> >> >> -- >> View this message in context: >> http://old.nabble.com/Intercept-a-processor--tp27130672p27148815.html >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> > > > > -- > Claus Ibsen > Apache Camel Committer > > Author of Camel in Action: http://www.manning.com/ibsen/ > Open Source Integration: http://fusesource.com > Blog: http://davsclaus.blogspot.com/ > Twitter: http://twitter.com/davsclaus > > -- View this message in context: http://old.nabble.com/Intercept-a-processor--tp27130672p27173286.html Sent from the Camel - Users mailing list archive at Nabble.com.
