You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Geert Vanheusden <ge...@aviovision.com> on 2014/11/04 11:13:23 UTC
direct-vm mocking bug
Hi Guys,
I wanted to mock a "direct-vm" endpoint with the "block=true" option
but it fails.
Here you can find a unit test to reproduce this:
===================================
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.impl.DefaultExchange;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;
public class DirectVmTest extends CamelTestSupport {
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:in1")
.to("direct-vm:out1");
from("direct:in2")
.to("direct-vm:out2?block=true");
}
};
}
@Override
public String isMockEndpointsAndSkip() {
return "(direct-vm:out1|direct-vm:out2)";
}
// @Override
// public String isMockEndpointsAndSkip() {
// return "*";
// }
// @Override
// public String isMockEndpoints() {
// return "(direct-vm:out1|direct-vm:out2)";
// }
// @Override
// public String isMockEndpoints() {
// return "*";
// }
@Test
public void directVmEndpointShouldBeMocked() throws InterruptedException {
MockEndpoint mockEndpoint = getMockEndpoint("mock:direct-vm:out1");
mockEndpoint.expectedMessageCount(1);
template.send("direct:in1", new DefaultExchange(context));
mockEndpoint.assertIsSatisfied();
}
@Test
public void directVmEndpointWithBlockShouldBeMocked() throws
InterruptedException {
MockEndpoint mockEndpoint = getMockEndpoint("mock:direct-vm:out2");
mockEndpoint.expectedMessageCount(1);
template.send("direct:in2", new DefaultExchange(context));
mockEndpoint.assertIsSatisfied();
}
}
===================================
The first test without the block succeeds but the second one with the
block option fails.
I tested it on version 2.14.0.
Please also try to uncomment the code block to enable auto mocking and
see the different test results.
Seems to me like a bug. What do you guys think?
Kind regards,
Geert
Re: direct-vm mocking bug
Posted by Geert Vanheusden <ge...@aviovision.com>.
Thanks Claus!
Didn't know I had to add the option to the "isMockEndpointsAndSkip" method
as well...
Kind regards,
Geert
On Thu, Nov 6, 2014 at 9:16 AM, Claus Ibsen <cl...@gmail.com> wrote:
> Your regexp pattern does not match direct-vm:out2 as you have a
> parameter, so adjust the regular exp to match using wildcards etc.
>
> On Thu, Nov 6, 2014 at 9:10 AM, Geert Vanheusden <ge...@aviovision.com>
> wrote:
> > Any thoughts on this issue or should I just create a ticket for it?
> >
> > Kind regards,
> >
> > Geert
> >
> > On Tue, Nov 4, 2014 at 11:13 AM, Geert Vanheusden <
> geertvh@aviovision.com>
> > wrote:
> >
> >> Hi Guys,
> >>
> >> I wanted to mock a "direct-vm" endpoint with the "block=true" option
> >> but it fails.
> >>
> >> Here you can find a unit test to reproduce this:
> >>
> >> ===================================
> >>
> >> import org.apache.camel.builder.RouteBuilder;
> >> import org.apache.camel.component.mock.MockEndpoint;
> >> import org.apache.camel.impl.DefaultExchange;
> >> import org.apache.camel.test.junit4.CamelTestSupport;
> >> import org.junit.Test;
> >>
> >> public class DirectVmTest extends CamelTestSupport {
> >>
> >> @Override
> >> protected RouteBuilder createRouteBuilder() throws Exception {
> >> return new RouteBuilder() {
> >>
> >> @Override
> >> public void configure() throws Exception {
> >> from("direct:in1")
> >> .to("direct-vm:out1");
> >>
> >> from("direct:in2")
> >> .to("direct-vm:out2?block=true");
> >> }
> >>
> >> };
> >> }
> >>
> >> @Override
> >> public String isMockEndpointsAndSkip() {
> >> return "(direct-vm:out1|direct-vm:out2)";
> >> }
> >>
> >> // @Override
> >> // public String isMockEndpointsAndSkip() {
> >> // return "*";
> >> // }
> >>
> >> // @Override
> >> // public String isMockEndpoints() {
> >> // return "(direct-vm:out1|direct-vm:out2)";
> >> // }
> >>
> >> // @Override
> >> // public String isMockEndpoints() {
> >> // return "*";
> >> // }
> >>
> >> @Test
> >> public void directVmEndpointShouldBeMocked() throws
> >> InterruptedException {
> >> MockEndpoint mockEndpoint =
> getMockEndpoint("mock:direct-vm:out1");
> >> mockEndpoint.expectedMessageCount(1);
> >>
> >> template.send("direct:in1", new DefaultExchange(context));
> >>
> >> mockEndpoint.assertIsSatisfied();
> >> }
> >>
> >> @Test
> >> public void directVmEndpointWithBlockShouldBeMocked() throws
> >> InterruptedException {
> >> MockEndpoint mockEndpoint =
> getMockEndpoint("mock:direct-vm:out2");
> >> mockEndpoint.expectedMessageCount(1);
> >>
> >> template.send("direct:in2", new DefaultExchange(context));
> >>
> >> mockEndpoint.assertIsSatisfied();
> >> }
> >> }
> >>
> >> ===================================
> >>
> >> The first test without the block succeeds but the second one with the
> >> block option fails.
> >>
> >> I tested it on version 2.14.0.
> >>
> >> Please also try to uncomment the code block to enable auto mocking and
> >> see the different test results.
> >>
> >> Seems to me like a bug. What do you guys think?
> >>
> >> Kind regards,
> >>
> >> Geert
> >>
>
>
>
> --
> 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
> hawtio: http://hawt.io/
> fabric8: http://fabric8.io/
>
Re: direct-vm mocking bug
Posted by Claus Ibsen <cl...@gmail.com>.
Your regexp pattern does not match direct-vm:out2 as you have a
parameter, so adjust the regular exp to match using wildcards etc.
On Thu, Nov 6, 2014 at 9:10 AM, Geert Vanheusden <ge...@aviovision.com> wrote:
> Any thoughts on this issue or should I just create a ticket for it?
>
> Kind regards,
>
> Geert
>
> On Tue, Nov 4, 2014 at 11:13 AM, Geert Vanheusden <ge...@aviovision.com>
> wrote:
>
>> Hi Guys,
>>
>> I wanted to mock a "direct-vm" endpoint with the "block=true" option
>> but it fails.
>>
>> Here you can find a unit test to reproduce this:
>>
>> ===================================
>>
>> import org.apache.camel.builder.RouteBuilder;
>> import org.apache.camel.component.mock.MockEndpoint;
>> import org.apache.camel.impl.DefaultExchange;
>> import org.apache.camel.test.junit4.CamelTestSupport;
>> import org.junit.Test;
>>
>> public class DirectVmTest extends CamelTestSupport {
>>
>> @Override
>> protected RouteBuilder createRouteBuilder() throws Exception {
>> return new RouteBuilder() {
>>
>> @Override
>> public void configure() throws Exception {
>> from("direct:in1")
>> .to("direct-vm:out1");
>>
>> from("direct:in2")
>> .to("direct-vm:out2?block=true");
>> }
>>
>> };
>> }
>>
>> @Override
>> public String isMockEndpointsAndSkip() {
>> return "(direct-vm:out1|direct-vm:out2)";
>> }
>>
>> // @Override
>> // public String isMockEndpointsAndSkip() {
>> // return "*";
>> // }
>>
>> // @Override
>> // public String isMockEndpoints() {
>> // return "(direct-vm:out1|direct-vm:out2)";
>> // }
>>
>> // @Override
>> // public String isMockEndpoints() {
>> // return "*";
>> // }
>>
>> @Test
>> public void directVmEndpointShouldBeMocked() throws
>> InterruptedException {
>> MockEndpoint mockEndpoint = getMockEndpoint("mock:direct-vm:out1");
>> mockEndpoint.expectedMessageCount(1);
>>
>> template.send("direct:in1", new DefaultExchange(context));
>>
>> mockEndpoint.assertIsSatisfied();
>> }
>>
>> @Test
>> public void directVmEndpointWithBlockShouldBeMocked() throws
>> InterruptedException {
>> MockEndpoint mockEndpoint = getMockEndpoint("mock:direct-vm:out2");
>> mockEndpoint.expectedMessageCount(1);
>>
>> template.send("direct:in2", new DefaultExchange(context));
>>
>> mockEndpoint.assertIsSatisfied();
>> }
>> }
>>
>> ===================================
>>
>> The first test without the block succeeds but the second one with the
>> block option fails.
>>
>> I tested it on version 2.14.0.
>>
>> Please also try to uncomment the code block to enable auto mocking and
>> see the different test results.
>>
>> Seems to me like a bug. What do you guys think?
>>
>> Kind regards,
>>
>> Geert
>>
--
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
hawtio: http://hawt.io/
fabric8: http://fabric8.io/
Re: direct-vm mocking bug
Posted by Geert Vanheusden <ge...@aviovision.com>.
Any thoughts on this issue or should I just create a ticket for it?
Kind regards,
Geert
On Tue, Nov 4, 2014 at 11:13 AM, Geert Vanheusden <ge...@aviovision.com>
wrote:
> Hi Guys,
>
> I wanted to mock a "direct-vm" endpoint with the "block=true" option
> but it fails.
>
> Here you can find a unit test to reproduce this:
>
> ===================================
>
> import org.apache.camel.builder.RouteBuilder;
> import org.apache.camel.component.mock.MockEndpoint;
> import org.apache.camel.impl.DefaultExchange;
> import org.apache.camel.test.junit4.CamelTestSupport;
> import org.junit.Test;
>
> public class DirectVmTest extends CamelTestSupport {
>
> @Override
> protected RouteBuilder createRouteBuilder() throws Exception {
> return new RouteBuilder() {
>
> @Override
> public void configure() throws Exception {
> from("direct:in1")
> .to("direct-vm:out1");
>
> from("direct:in2")
> .to("direct-vm:out2?block=true");
> }
>
> };
> }
>
> @Override
> public String isMockEndpointsAndSkip() {
> return "(direct-vm:out1|direct-vm:out2)";
> }
>
> // @Override
> // public String isMockEndpointsAndSkip() {
> // return "*";
> // }
>
> // @Override
> // public String isMockEndpoints() {
> // return "(direct-vm:out1|direct-vm:out2)";
> // }
>
> // @Override
> // public String isMockEndpoints() {
> // return "*";
> // }
>
> @Test
> public void directVmEndpointShouldBeMocked() throws
> InterruptedException {
> MockEndpoint mockEndpoint = getMockEndpoint("mock:direct-vm:out1");
> mockEndpoint.expectedMessageCount(1);
>
> template.send("direct:in1", new DefaultExchange(context));
>
> mockEndpoint.assertIsSatisfied();
> }
>
> @Test
> public void directVmEndpointWithBlockShouldBeMocked() throws
> InterruptedException {
> MockEndpoint mockEndpoint = getMockEndpoint("mock:direct-vm:out2");
> mockEndpoint.expectedMessageCount(1);
>
> template.send("direct:in2", new DefaultExchange(context));
>
> mockEndpoint.assertIsSatisfied();
> }
> }
>
> ===================================
>
> The first test without the block succeeds but the second one with the
> block option fails.
>
> I tested it on version 2.14.0.
>
> Please also try to uncomment the code block to enable auto mocking and
> see the different test results.
>
> Seems to me like a bug. What do you guys think?
>
> Kind regards,
>
> Geert
>