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