camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From davscl...@apache.org
Subject [1/2] camel git commit: CAMEL-9875 CamelBlueprintTestSupport lacks support for multiple PIDs
Date Fri, 22 Apr 2016 19:22:55 GMT
Repository: camel
Updated Branches:
  refs/heads/master 16163aa05 -> d59125097


CAMEL-9875 CamelBlueprintTestSupport lacks support for multiple PIDs


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c6b14ba1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c6b14ba1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c6b14ba1

Branch: refs/heads/master
Commit: c6b14ba1bb9cf0cadd5c78b11110db2f7b50a8ef
Parents: 16163aa
Author: Kevin Earls <kevin@kevinearls.com>
Authored: Fri Apr 22 11:47:28 2016 +0200
Committer: Claus Ibsen <davsclaus@apache.org>
Committed: Fri Apr 22 21:13:04 2016 +0200

----------------------------------------------------------------------
 .../blueprint/CamelBlueprintTestSupport.java    | 26 +++++--
 ...ultiConfigurationFileAndOverrideAltTest.java | 63 ++++++++++++++++
 ...adMultiConfigurationFileAndOverrideTest.java | 64 ++++++++++++++++
 .../src/test/resources/etc/otherstuff.cfg       | 20 +++++
 .../configadmin-loadmultifileoverride.xml       | 78 ++++++++++++++++++++
 5 files changed, 244 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/c6b14ba1/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
----------------------------------------------------------------------
diff --git a/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
b/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
index 35c05c4..3bbfbef 100644
--- a/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
+++ b/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java
@@ -57,7 +57,7 @@ import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
 
 /**
- * Base class for OSGi Blueprint unit tests with Camel.
+ * Base class for OSGi Blueprint unit tests with Camel
  */
 public abstract class CamelBlueprintTestSupport extends CamelTestSupport {
     /** Name of a system property that sets camel context creation timeout. */
@@ -97,24 +97,36 @@ public abstract class CamelBlueprintTestSupport extends CamelTestSupport
{
 
         // load configuration file
         String[] file = loadConfigAdminConfigurationFile();
+        String[][] configAdminPidFiles = new String[0][0];
         if (file != null) {
-            if (file.length != 2) {
-                throw new IllegalArgumentException("The returned String[] from loadConfigAdminConfigurationFile
must be of length 2, was " + file.length);
+            if (file.length % 2 !=0) {  // This needs to return pairs of filename and pid
+                throw new IllegalArgumentException("The length of the String[] returned from
loadConfigAdminConfigurationFile must divisible by 2, was " + file.length);
             }
-            if (!new File(file[0]).exists()) {
-                throw new IllegalArgumentException("The provided file \"" + file[0] + "\"
from loadConfigAdminConfigurationFile doesn't exist");
+            configAdminPidFiles = new String[file.length / 2 ][2];
+
+            int pair = 0;
+            for (int i=0; i < file.length; i+=2) {
+                String fileName = file[i];
+                String pid = file[i + 1];
+                if (!new File(fileName).exists()) {
+                    throw new IllegalArgumentException("The provided file \"" + fileName
+ "\" from loadConfigAdminConfigurationFile doesn't exist");
+                }
+                configAdminPidFiles[pair][0] = fileName;
+                configAdminPidFiles[pair][1] = pid;
+                pair++;
             }
         }
+
         // fetch initial configadmin configuration if provided programmatically
         Properties initialConfiguration = new Properties();
         String pid = setConfigAdminInitialConfiguration(initialConfiguration);
         if (pid != null) {
-            file = new String[] {prepareInitialConfigFile(initialConfiguration), pid};
+            configAdminPidFiles = new String[][] {{prepareInitialConfigFile(initialConfiguration),
pid}};
         }
 
         final String symbolicName = getClass().getSimpleName();
         final BundleContext answer = CamelBlueprintHelper.createBundleContext(symbolicName,
getBlueprintDescriptor(),
-            includeTestBundle(), getBundleFilter(), getBundleVersion(), getBundleDirectives(),
file);
+            includeTestBundle(), getBundleFilter(), getBundleVersion(), getBundleDirectives(),
configAdminPidFiles);
 
         boolean expectReload = expectBlueprintContainerReloadOnConfigAdminUpdate();
 

http://git-wip-us.apache.org/repos/asf/camel/blob/c6b14ba1/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadMultiConfigurationFileAndOverrideAltTest.java
----------------------------------------------------------------------
diff --git a/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadMultiConfigurationFileAndOverrideAltTest.java
b/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadMultiConfigurationFileAndOverrideAltTest.java
new file mode 100644
index 0000000..c12220e
--- /dev/null
+++ b/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadMultiConfigurationFileAndOverrideAltTest.java
@@ -0,0 +1,63 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.blueprint;
+
+import org.junit.Test;
+
+import java.util.Dictionary;
+
+/**
+ * This test should be run in tandem with ConfigAdminLoadConfigurationFileAndOverrideTest.
 These examples will load a
+ * Blueprint .cfg file with multiple property placeholders defined.   We need two tests to
make sure we
+ * process both of them correctly
+ */
+public class ConfigAdminLoadMultiConfigurationFileAndOverrideAltTest extends CamelBlueprintTestSupport
{
+    @Override
+    protected String getBlueprintDescriptor() {
+        // which blueprint XML file to use for this test
+        return "org/apache/camel/test/blueprint/configadmin-loadmultifileoverride.xml";
+    }
+
+    @Override
+    protected String[] loadConfigAdminConfigurationFile() {
+        // which .cfg files to use, and their corresponding persistence-ids
+        return new String[]{"src/test/resources/etc/stuff.cfg", "stuff", "src/test/resources/etc/otherstuff.cfg",
"otherstuff"};
+    }
+
+    @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();
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/c6b14ba1/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadMultiConfigurationFileAndOverrideTest.java
----------------------------------------------------------------------
diff --git a/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadMultiConfigurationFileAndOverrideTest.java
b/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadMultiConfigurationFileAndOverrideTest.java
new file mode 100644
index 0000000..72943e4
--- /dev/null
+++ b/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/ConfigAdminLoadMultiConfigurationFileAndOverrideTest.java
@@ -0,0 +1,64 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.blueprint;
+
+import org.junit.Test;
+
+import java.util.Dictionary;
+
+/**
+ * This is the first of two tests which will load a Blueprint .cfg file (which will initialize
configadmin), containing
+ * multiple property placeholders and also override its property placeholders directly (the
change will reload blueprint
+ * container).
+ */
+public class ConfigAdminLoadMultiConfigurationFileAndOverrideTest extends CamelBlueprintTestSupport
{
+
+    @Override
+    protected String getBlueprintDescriptor() {
+        // which blueprint XML file to use for this test
+        return "org/apache/camel/test/blueprint/configadmin-loadmultifileoverride.xml";
+    }
+
+    @Override
+    protected String[] loadConfigAdminConfigurationFile() {
+        // which .cfg files to use, and their corresponding persistence-ids
+        return new String[]{"src/test/resources/etc/stuff.cfg", "stuff", "src/test/resources/etc/otherstuff.cfg",
"otherstuff"};
+    }
+
+    @Override
+    protected String useOverridePropertiesWithConfigAdmin(Dictionary properties) throws Exception
{
+        // override / add extra properties
+        properties.put("arrive", "mock:otherExtra");
+
+        // return the persistence-id to use
+        return "otherstuff";
+    }
+
+    @Test
+    public void testConfigAdminWithMultiplePids() throws Exception {
+        // mock:otherOriginal comes from <cm:default-properties>/<cm:property name="arrive"
value="mock:otherOriginal" />
+        getMockEndpoint("mock:otherOriginal").setExpectedMessageCount(0);
+        // mock:result comes from loadConfigAdminConfigurationFile()
+        getMockEndpoint("mock:otherResult").setExpectedMessageCount(0);
+        // mock:extra comes from useOverridePropertiesWithConfigAdmin()
+        getMockEndpoint("mock:otherExtra").expectedBodiesReceived("Adieu World", "tiens!
Adieu Worldtiens! Adieu World");
+
+        template.sendBody("direct:otherStart", "World");
+
+        assertMockEndpointsSatisfied();
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/c6b14ba1/components/camel-test-blueprint/src/test/resources/etc/otherstuff.cfg
----------------------------------------------------------------------
diff --git a/components/camel-test-blueprint/src/test/resources/etc/otherstuff.cfg b/components/camel-test-blueprint/src/test/resources/etc/otherstuff.cfg
new file mode 100644
index 0000000..cb1d44f
--- /dev/null
+++ b/components/camel-test-blueprint/src/test/resources/etc/otherstuff.cfg
@@ -0,0 +1,20 @@
+## ------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ------------------------------------------------------------------------
+
+salutation=Adieu
+resonner=tiens!
+arrive=mock:otherResult

http://git-wip-us.apache.org/repos/asf/camel/blob/c6b14ba1/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-loadmultifileoverride.xml
----------------------------------------------------------------------
diff --git a/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-loadmultifileoverride.xml
b/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-loadmultifileoverride.xml
new file mode 100644
index 0000000..dd3f5d9
--- /dev/null
+++ b/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/configadmin-loadmultifileoverride.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<!-- START SNIPPET: e1 -->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+           xmlns:cm="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/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd
+             http://www.osgi.org/xmlns/blueprint/v1.0.0 https://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>
+
+  <!-- blueprint property placeholders, that will use etc/otherstuff.cfg as the properties
file -->
+  <cm:property-placeholder persistent-id="otherstuff" update-strategy="reload" placeholder-prefix="["
placeholder-suffix="]">
+    <cm:default-properties>
+      <cm:property name="salutation" value="Salut" />
+      <cm:property name="resonner" value="Hep" />
+      <cm:property name="arrive" value="mock:otherOriginal" />
+    </cm:default-properties>
+  </cm:property-placeholder>
+
+  <!-- a bean that uses a blueprint property placeholder -->
+  <bean id="myCoolBean" class="org.apache.camel.test.blueprint.MyCoolBean">
+    <property name="say" value="${greeting}"/>
+    <property name="echo" value="${echo}"/>
+  </bean>
+
+  <!-- a bean that uses a different blueprint property placeholder -->
+  <bean id="myOtherCoolBean" class="org.apache.camel.test.blueprint.MyCoolBean">
+    <property name="say" value="[salutation]"/>
+    <property name="echo" value="[resonner]"/>
+  </bean>
+
+
+  <camelContext xmlns="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>
+
+    <route>
+      <from uri="direct:otherStart"/>
+      <bean ref="myOtherCoolBean" method="saySomething"/>
+      <to uri="{{arrive}}"/>
+      <bean ref="myOtherCoolBean" method="echoSomething"/>
+      <to uri="{{arrive}}"/>
+    </route>
+
+  </camelContext>
+
+</blueprint>
+<!-- END SNIPPET: e1 -->
\ No newline at end of file


Mime
View raw message