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
