Weird ;) I'll check it - sounds interesting! regards Grzegorz
2016-01-15 17:16 GMT+01:00 Quinn Stevenson <qu...@pronoia-solutions.com>: > Hi Grzegorz - > > Sorry I missed you on the IRC - I left my client open last night. > > I put the project I’m using on GitHub > https://github.com/hqstevenson/camel-blueprint-test-properties.git > <https://github.com/hqstevenson/camel-blueprint-test-properties.git> > > The results for me are indeterminate - I have had the simple test pass almost > as much as it fails, but I still get somewhat random failures. The one thing > that is very consistent is the number of times the camel context is created. > When the blueprint file is in src/test/resources/… it gets created twice, but > when the blueprint file is in src/main/resources/…. I’ve seen the camel > context created up to 30 times - the exact number varies, but it’s always > more than 2. > > Here’s a snipped from the log the last time I ran this and the test passed. > > [ main] BlueprintCamelContext INFO Apache > Camel 2.17-SNAPSHOT (CamelContext: camel-27) is shutdown in 0.001 seconds > [ main] BlueprintExtender INFO > Destroying BlueprintContainer for bundle > ConfigAdminLoadConfigurationFileAndOverrideTest/1.0.0 > > Quinn Stevenson > qu...@pronoia-solutions.com > (801) 244-7758 > > > >> On Jan 15, 2016, at 3:23 AM, Grzegorz Grzybek <gr.grzy...@gmail.com> wrote: >> >> Hello Quinn >> >> Hmm... I've run `for n in `seq 1 30`; do echo $n; mvn test >> -Dtest=ConfigAdminLoadConfigurationFileAndOverrideTest|grep BUILD; >> done` after moving `configadmin-loadfileoverride.xml` from >> src/test/resources to src/main/resources and everything is fine. >> >> Are you doing it in your own project? Maybe you've set maven filtering >> on src/main/resources? >> >> regards >> Grzegorz >> >> 2016-01-14 16:48 GMT+01:00 Grzegorz Grzybek <gr.grzy...@gmail.com>: >>> Hello Quinn >>> >>> Excuse me that I've missed your emails - your findings are interesting >>> - I'll try to test your scenarios tomorrow (Friday) morning CET. ok? >>> >>> regards >>> Grzegorz >>> >>> 2016-01-14 16:42 GMT+01:00 Quinn Stevenson <qu...@pronoia-solutions.com>: >>>> Hi Grzegorz - >>>> >>>> So is this a bug? It seems like it is to me, but I don’t want to waste >>>> anybody’s time with the JIRA if it isn’t and I’m just doing something >>>> stupid. >>>> >>>> Quinn Stevenson >>>> >>>> >>>>> On Jan 6, 2016, at 3:30 PM, Quinn Stevenson <qu...@pronoia-solutions.com> >>>>> wrote: >>>>> >>>>> I just re-ran the test against several versions of Camel and I’ve updated >>>>> the POM in the unit test with the results. >>>>> >>>>> To summarize: >>>>> - When the blueprint.xml is in src/test/resources/OSGI-INF/blueprint - >>>>> these versions work >>>>> - 2.17-SNAPSHOT >>>>> - 2.16.1 >>>>> - 2.16.0 >>>>> - 2.15.5 >>>>> - 2.15.4 >>>>> and these versions fail >>>>> - 2.15.3 >>>>> - 2.15.2 >>>>> - 2.15.1 >>>>> - 2.15.0 >>>>> - 2.14.4 >>>>> - 2.14.3 >>>>> - 2.14.2 >>>>> - 2.14.1 >>>>> - 2.14.0 >>>>> - When the blueprint.xml is in src/main/resources/OSGI-INF/blueprint - >>>>> these versions were tested and all failed >>>>> - 2.17-SNAPSHOT >>>>> - 2.16.1 >>>>> - 2.16.0 >>>>> - 2.15.5 >>>>> - 2.15.4 >>>>> >>>>> Here is the blueprint I’m using >>>>> >>>>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0 >>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0>" >>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance >>>>> <http://www.w3.org/2001/XMLSchema-instance>" >>>>> >>>>> xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0 >>>>> <http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0>" >>>>> xsi:schemaLocation=" >>>>> http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0 >>>>> <http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0> >>>>> http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd >>>>> <http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd> >>>>> http://www.osgi.org/xmlns/blueprint/v1.0.0 >>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0> >>>>> http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd >>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd>"> >>>>> >>>>> <!-- blueprint property placeholders, that will use etc/stuff.cfg as >>>>> the properties file --> >>>>> <cm:property-placeholder persistent-id="stuff" >>>>> update-strategy="reload"> >>>>> <cm:default-properties> >>>>> <cm:property name="greeting" value="Hello" /> >>>>> <cm:property name="echo" value="Hey" /> >>>>> <cm:property name="destination" value="mock:original" /> >>>>> </cm:default-properties> >>>>> </cm:property-placeholder> >>>>> >>>>> <!-- a bean that uses a blueprint property placeholder --> >>>>> <bean id="myCoolBean" class="org.apache.camel.beans.MyCoolBean"> >>>>> <property name="say" value="${greeting}"/> >>>>> <property name="echo" value="${echo}"/> >>>>> </bean> >>>>> >>>>> <camelContext xmlns="http://camel.apache.org/schema/blueprint >>>>> <http://camel.apache.org/schema/blueprint>"> >>>>> >>>>> <route> >>>>> <from uri="direct:start"/> >>>>> <bean ref="myCoolBean" method="saySomething"/> >>>>> <to uri="{{destination}}"/> >>>>> <bean ref="myCoolBean" method="echoSomething"/> >>>>> <to uri="{{destination}}"/> >>>>> </route> >>>>> >>>>> </camelContext> >>>>> >>>>> </blueprint> >>>>> >>>>> And here is the JUnit test >>>>> >>>>> public class ConfigAdminLoadConfigurationFileAndOverrideTest extends >>>>> CamelBlueprintTestSupport { >>>>> >>>>> @Override >>>>> protected String getBlueprintDescriptor() { >>>>> // which blueprint XML file to use for this test >>>>> // If this file is in src/main/resources/OSGI-INF/blueprint, the test >>>>> will fail most of the time >>>>> // If this file is in src/test/resources/OSGI-INF/blueprint, the test >>>>> passes >>>>> return "/OSGI-INF/blueprint/configadmin-loadfileoverride.xml"; >>>>> } >>>>> >>>>> @Override >>>>> protected String[] loadConfigAdminConfigurationFile() { >>>>> // which .cfg file to use, and the name of the persistence-id >>>>> return new String[]{"src/test/resources/etc/stuff.cfg", "stuff"}; >>>>> } >>>>> >>>>> @Override >>>>> protected String useOverridePropertiesWithConfigAdmin(Dictionary >>>>> props) throws Exception { >>>>> // override / add extra properties >>>>> props.put("destination", "mock:extra"); >>>>> >>>>> // return the persistence-id to use >>>>> return "stuff"; >>>>> } >>>>> >>>>> @Test >>>>> public void testConfigAdmin() throws Exception { >>>>> // mock:original comes from <cm:default-properties>/<cm:property >>>>> name="destination" value="mock:original" /> >>>>> getMockEndpoint("mock:original").setExpectedMessageCount(0); >>>>> // mock:result comes from loadConfigAdminConfigurationFile() >>>>> getMockEndpoint("mock:result").setExpectedMessageCount(0); >>>>> // mock:extra comes from useOverridePropertiesWithConfigAdmin() >>>>> getMockEndpoint("mock:extra").expectedBodiesReceived("Bye World", >>>>> "Yay Bye WorldYay Bye World"); >>>>> >>>>> template.sendBody("direct:start", "World"); >>>>> >>>>> assertMockEndpointsSatisfied(); >>>>> } >>>>> >>>>> } >>>>> >>>>> >>>>> Quinn Stevenson >>>>> qu...@pronoia-solutions.com <mailto:qu...@pronoia-solutions.com> >>>>> (801) 244-7758 >>>>> >>>>> >>>>> >>>>>> On Jan 6, 2016, at 2:35 PM, Quinn Stevenson <qu...@pronoia-solutions.com >>>>>> <mailto:qu...@pronoia-solutions.com>> wrote: >>>>>> >>>>>> Hi Grzegorz - >>>>>> >>>>>> Thank you for the link - I’ve read through it many times - it is very >>>>>> very helpful. From what I understand, this should work - the location >>>>>> of the blueprint file shouldn’t effect the way the test runs, should it? >>>>>> Maybe I’m missing something simple. >>>>>> >>>>>> It looks like my unit test attachment didn’t come through. Sorry - I >>>>>> didn’t think about the mailing list filtering out attachments. You can >>>>>> get to the test here >>>>>> https://github.com/hqstevenson/camel-blueprint-test-properties.git >>>>>> <https://github.com/hqstevenson/camel-blueprint-test-properties.git> >>>>>> >>>>>> I've been testing this primary against 2.17-SNAPSHOT, but I’ve tested >>>>>> against several versions. The POM for the unit test has the versions >>>>>> listed that I tested, but I was messing with the test a little so I’m >>>>>> not sure the list is completely accurate. I’ll verify those and update >>>>>> the POM if needed. >>>>>> >>>>>> Quinn Stevenson >>>>>> >>>>>> >>>>>>> On Jan 6, 2016, at 12:21 PM, Grzegorz Grzybek <gr.grzy...@gmail.com >>>>>>> <mailto:gr.grzy...@gmail.com>> wrote: >>>>>>> >>>>>>> Hello Quinn >>>>>>> >>>>>>> What Camel version do you use? I wrote a thorough explanation of >>>>>>> CamelTestBlueprint and the changes we've made to how tests are >>>>>>> performed and synchronized. >>>>>>> Here: >>>>>>> http://ggrzybek.blogspot.com/2015/12/camel-blueprint-test-support.html >>>>>>> <http://ggrzybek.blogspot.com/2015/12/camel-blueprint-test-support.html> >>>>>>> You can find there links to JIRA issues describing exactly the same >>>>>>> problems you have with `update-strategy="reload"`. >>>>>>> >>>>>>> best regards >>>>>>> Grzegorz Grzybek >>>>>>> >>>>>>> 2016-01-06 19:16 GMT+01:00 Quinn Stevenson <qu...@pronoia-solutions.com >>>>>>> <mailto:qu...@pronoia-solutions.com>>: >>>>>>>> I’ve encountered an issue, but I’m not sure if this is a bug or a user >>>>>>>> error. >>>>>>>> >>>>>>>> I’m trying to write some tests using CamelBlueprintTestSupport for >>>>>>>> bundles where the blueprint file is in >>>>>>>> src/main/resources/OSGI-INF/blueprint. However, I’m getting random >>>>>>>> failures in the test on startup. >>>>>>>> >>>>>>>> I’ve narrowed it down to using update-strategy = “reload” and >>>>>>>> overriding properties in the test. The tests fail (most of the time) >>>>>>>> when the actual blueprint file is in >>>>>>>> src/main/resources/OSGI-INF/blueprint. Even when the test doesn’t >>>>>>>> fail, you’ll see multiple camel contexts get created during the test, >>>>>>>> while the test this is based on from camel-test-blueprint only creates >>>>>>>> two camel contexts. >>>>>>>> >>>>>>>> However, if I move the blueprint file to >>>>>>>> src/test/resources/OSGI-INF/blueprint, the test passes. >>>>>>>> >>>>>>>> Since I need the blueprint packaged in the bundle in >>>>>>>> OSGI-INF/blueprint, I can’t move the blueprint file to the src/test/… >>>>>>>> area. >>>>>>>> >>>>>>>> Is there another way I should be testing this sort of thing? >>>>>>>> >>>>>>>> I’ve created a unit test based on the >>>>>>>> ConfigAdminLoadConfigurationFileAndOverrideTest from the >>>>>>>> camel-test-blueprint module that demonstrates the issue. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Quinn Stevenson >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>> >>>>> >>>> >