Thank You Grzegorz!! I created the sample project using the camel-archetype-blueprint, and it introduced that configuration. I’ve verified that the configuration for the maven-bundle-plugin changed between v 2.14 and 2.15.0.
I created https://issues.apache.org/jira/browse/CAMEL-9519 <https://issues.apache.org/jira/browse/CAMEL-9519> to fix the archetype, and I’m working on a PR for it now. I’m going to include Blueprint property placeholders in the archetype and test so the fix can be verified. Fixing the archetype is sufficient for me, but should I be creating another JIRA for the behavior when the maven-bundle-plugin is configured in the manner below? Quinn Stevenson > On Jan 15, 2016, at 11:07 AM, Grzegorz Grzybek <gr.grzy...@gmail.com> wrote: > > The problem is that your example lead to two bundles in felix-connect > OSGi registy: > 2016-01-15 18:32:54,172 DEBUG CamelBlueprintHelper - Bundle #0 -> > jar:file:/data/ggrzybek/sources/github.com/_other/camel-blueprint-test-properties/target/test-bundles/configadminloadconfigurationfileandoverridetest-1452879174127.jar!/ > 2016-01-15 18:32:54,172 DEBUG CamelBlueprintHelper - Bundle #1 -> > file:/data/ggrzybek/sources/github.com/_other/camel-blueprint-test-properties/target/classes/ > > both entries had blueprint XML inside. > you should not use: > <executions> > <execution> > <id>bundle-manifest</id> > <phase>process-classes</phase> > <goals> > <goal>manifest</goal> > </goals> > </execution> > </executions> > > this goal generates target/classes/META-INF/MANIFEST.MF and it > (target/classes directory) is scanned by felix-connect as > fully-fledged bundle. looks like it confuses the test. > > and because you've generated using camel archetype, looks like we have > to change the archetype... > > regards > Grzegorz > > 2016-01-15 17:17 GMT+01:00 Grzegorz Grzybek <gr.grzy...@gmail.com>: >> 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 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>