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 >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>> >>>> >>>