You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/03/10 15:24:47 UTC

[camel-performance-tests] branch master updated (a3595b8 -> f585f68)

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/camel-performance-tests.git.


    from a3595b8  CAMEL-16251 - Move Performance and jmh itests in a separated repository
     new bd8fbbb  CAMEL-16251 - Move Performance and jmh itests in a separated repository
     new f585f68  CAMEL-16251 - Move Performance and jmh itests in a separated repository

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 tests/camel-performance/README.adoc                |   8 +
 tests/camel-performance/pom.xml                    | 170 +++++++++++++++++++++
 .../src/test/data/1K_buyStocks.xml                 |  33 ++++
 .../test/perf/AbstractBasePerformanceTest.java     |  64 ++++++++
 .../perf/ContentBasedRoutingPerformanceTest.java   | 115 ++++++++++++++
 .../perf/HeaderBasedRoutingPerformanceTest.java    | 122 +++++++++++++++
 .../camel/test/perf/SplitterPerformanceTest.java   |  92 +++++++++++
 .../perf/XPathBasedRoutingPerformanceTest.java     |  81 ++++++++++
 .../perf/XQueryBasedRoutingPerformanceTest.java    |  81 ++++++++++
 .../camel/test/perf/XsltPerformanceTest.java       |  53 +++++++
 .../src/test/resources/1K_buyStocks.xml            |  33 ++++
 .../src/test/resources/1K_buyStocks_secure.xml     |  78 ++++++++++
 .../test/resources/META-INF/xslt/transform.xslt    |  35 +++++
 .../src/test/resources/log4j2.properties           |  15 +-
 .../camel-performance/src/test/resources/store.jks | Bin 0 -> 6377 bytes
 .../resources/wsdl/CBRWSDL-consumer-embedded.wsdl  | 126 +++++++++++++++
 .../resources/wsdl/CBRWSDL-provider-embedded.wsdl  | 126 +++++++++++++++
 .../wsdl/HBRSoapWSDL-consumer-embedded.wsdl        | 139 +++++++++++++++++
 .../wsdl/HBRSoapWSDL-provider-embedded.wsdl        | 126 +++++++++++++++
 .../wsdl/HBRTransportWSDL-consumer-embedded.wsdl   | 126 +++++++++++++++
 .../wsdl/HBRTransportWSDL-provider-embedded.wsdl   | 126 +++++++++++++++
 .../wsdl/ProxyWSDL-consumer-embedded.wsdl          | 126 +++++++++++++++
 .../wsdl/ProxyWSDL-provider-embedded.wsdl          | 126 +++++++++++++++
 .../wsdl/SecureProxyWSDL-consumer-embedded.wsdl    | 126 +++++++++++++++
 .../wsdl/SecureProxyWSDL-provider-embedded.wsdl    | 126 +++++++++++++++
 .../wsdl/TransformerWSDL-consumer-embedded.wsdl    | 126 +++++++++++++++
 .../wsdl/TransformerWSDL-provider-embedded.wsdl    | 126 +++++++++++++++
 .../src/test/resources/wssecurity.properties       |  19 +--
 .../src/test/resources/xslt/transform.xslt         |  35 +++++
 .../src/test/resources/xslt/transform_back.xslt    |  32 ++++
 tests/pom.xml                                      |   1 +
 31 files changed, 2571 insertions(+), 21 deletions(-)
 create mode 100644 tests/camel-performance/README.adoc
 create mode 100644 tests/camel-performance/pom.xml
 create mode 100644 tests/camel-performance/src/test/data/1K_buyStocks.xml
 create mode 100644 tests/camel-performance/src/test/java/org/apache/camel/test/perf/AbstractBasePerformanceTest.java
 create mode 100644 tests/camel-performance/src/test/java/org/apache/camel/test/perf/ContentBasedRoutingPerformanceTest.java
 create mode 100644 tests/camel-performance/src/test/java/org/apache/camel/test/perf/HeaderBasedRoutingPerformanceTest.java
 create mode 100644 tests/camel-performance/src/test/java/org/apache/camel/test/perf/SplitterPerformanceTest.java
 create mode 100644 tests/camel-performance/src/test/java/org/apache/camel/test/perf/XPathBasedRoutingPerformanceTest.java
 create mode 100644 tests/camel-performance/src/test/java/org/apache/camel/test/perf/XQueryBasedRoutingPerformanceTest.java
 create mode 100644 tests/camel-performance/src/test/java/org/apache/camel/test/perf/XsltPerformanceTest.java
 create mode 100644 tests/camel-performance/src/test/resources/1K_buyStocks.xml
 create mode 100644 tests/camel-performance/src/test/resources/1K_buyStocks_secure.xml
 create mode 100644 tests/camel-performance/src/test/resources/META-INF/xslt/transform.xslt
 copy tests/{camel-jmh => camel-performance}/src/test/resources/log4j2.properties (77%)
 create mode 100644 tests/camel-performance/src/test/resources/store.jks
 create mode 100644 tests/camel-performance/src/test/resources/wsdl/CBRWSDL-consumer-embedded.wsdl
 create mode 100644 tests/camel-performance/src/test/resources/wsdl/CBRWSDL-provider-embedded.wsdl
 create mode 100644 tests/camel-performance/src/test/resources/wsdl/HBRSoapWSDL-consumer-embedded.wsdl
 create mode 100644 tests/camel-performance/src/test/resources/wsdl/HBRSoapWSDL-provider-embedded.wsdl
 create mode 100644 tests/camel-performance/src/test/resources/wsdl/HBRTransportWSDL-consumer-embedded.wsdl
 create mode 100644 tests/camel-performance/src/test/resources/wsdl/HBRTransportWSDL-provider-embedded.wsdl
 create mode 100644 tests/camel-performance/src/test/resources/wsdl/ProxyWSDL-consumer-embedded.wsdl
 create mode 100644 tests/camel-performance/src/test/resources/wsdl/ProxyWSDL-provider-embedded.wsdl
 create mode 100644 tests/camel-performance/src/test/resources/wsdl/SecureProxyWSDL-consumer-embedded.wsdl
 create mode 100644 tests/camel-performance/src/test/resources/wsdl/SecureProxyWSDL-provider-embedded.wsdl
 create mode 100644 tests/camel-performance/src/test/resources/wsdl/TransformerWSDL-consumer-embedded.wsdl
 create mode 100644 tests/camel-performance/src/test/resources/wsdl/TransformerWSDL-provider-embedded.wsdl
 copy profiling/kafka-s3/src/main/resources/application.properties => tests/camel-performance/src/test/resources/wssecurity.properties (77%)
 create mode 100644 tests/camel-performance/src/test/resources/xslt/transform.xslt
 create mode 100644 tests/camel-performance/src/test/resources/xslt/transform_back.xslt


[camel-performance-tests] 02/02: CAMEL-16251 - Move Performance and jmh itests in a separated repository

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-performance-tests.git

commit f585f686cd54727febff5996ba2fef65f397e2a6
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Mar 10 16:22:02 2021 +0100

    CAMEL-16251 - Move Performance and jmh itests in a separated repository
---
 tests/camel-performance/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/camel-performance/pom.xml b/tests/camel-performance/pom.xml
index e97fc69..3e506f9 100644
--- a/tests/camel-performance/pom.xml
+++ b/tests/camel-performance/pom.xml
@@ -29,7 +29,7 @@
     </parent>
 
     <artifactId>camel-performance</artifactId>
-    <name>Camel :: Performance Tests :: Performance</name>
+    <name>Camel Performance :: Tests :: Performance</name>
     <description>Performs cross component performance tests</description>
 
     <dependencyManagement>


[camel-performance-tests] 01/02: CAMEL-16251 - Move Performance and jmh itests in a separated repository

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-performance-tests.git

commit bd8fbbbe7c57a4cce0d1737d209b4cd95d6519a4
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Mar 10 16:20:58 2021 +0100

    CAMEL-16251 - Move Performance and jmh itests in a separated repository
---
 tests/camel-performance/README.adoc                |   8 +
 tests/camel-performance/pom.xml                    | 170 +++++++++++++++++++++
 .../src/test/data/1K_buyStocks.xml                 |  33 ++++
 .../test/perf/AbstractBasePerformanceTest.java     |  64 ++++++++
 .../perf/ContentBasedRoutingPerformanceTest.java   | 115 ++++++++++++++
 .../perf/HeaderBasedRoutingPerformanceTest.java    | 122 +++++++++++++++
 .../camel/test/perf/SplitterPerformanceTest.java   |  92 +++++++++++
 .../perf/XPathBasedRoutingPerformanceTest.java     |  81 ++++++++++
 .../perf/XQueryBasedRoutingPerformanceTest.java    |  81 ++++++++++
 .../camel/test/perf/XsltPerformanceTest.java       |  53 +++++++
 .../src/test/resources/1K_buyStocks.xml            |  33 ++++
 .../src/test/resources/1K_buyStocks_secure.xml     |  78 ++++++++++
 .../test/resources/META-INF/xslt/transform.xslt    |  35 +++++
 .../src/test/resources/log4j2.properties           |  29 ++++
 .../camel-performance/src/test/resources/store.jks | Bin 0 -> 6377 bytes
 .../resources/wsdl/CBRWSDL-consumer-embedded.wsdl  | 126 +++++++++++++++
 .../resources/wsdl/CBRWSDL-provider-embedded.wsdl  | 126 +++++++++++++++
 .../wsdl/HBRSoapWSDL-consumer-embedded.wsdl        | 139 +++++++++++++++++
 .../wsdl/HBRSoapWSDL-provider-embedded.wsdl        | 126 +++++++++++++++
 .../wsdl/HBRTransportWSDL-consumer-embedded.wsdl   | 126 +++++++++++++++
 .../wsdl/HBRTransportWSDL-provider-embedded.wsdl   | 126 +++++++++++++++
 .../wsdl/ProxyWSDL-consumer-embedded.wsdl          | 126 +++++++++++++++
 .../wsdl/ProxyWSDL-provider-embedded.wsdl          | 126 +++++++++++++++
 .../wsdl/SecureProxyWSDL-consumer-embedded.wsdl    | 126 +++++++++++++++
 .../wsdl/SecureProxyWSDL-provider-embedded.wsdl    | 126 +++++++++++++++
 .../wsdl/TransformerWSDL-consumer-embedded.wsdl    | 126 +++++++++++++++
 .../wsdl/TransformerWSDL-provider-embedded.wsdl    | 126 +++++++++++++++
 .../src/test/resources/wssecurity.properties       |  21 +++
 .../src/test/resources/xslt/transform.xslt         |  35 +++++
 .../src/test/resources/xslt/transform_back.xslt    |  32 ++++
 tests/pom.xml                                      |   1 +
 31 files changed, 2608 insertions(+)

diff --git a/tests/camel-performance/README.adoc b/tests/camel-performance/README.adoc
new file mode 100644
index 0000000..a8f82fe
--- /dev/null
+++ b/tests/camel-performance/README.adoc
@@ -0,0 +1,8 @@
+= Camel Performance Tests
+
+== Overview
+
+This module is where you should add performance tests.
+
+All tests should be disabled by default to not run on the CI server because
+we expect performance test are time and CPU consuming.
\ No newline at end of file
diff --git a/tests/camel-performance/pom.xml b/tests/camel-performance/pom.xml
new file mode 100644
index 0000000..e97fc69
--- /dev/null
+++ b/tests/camel-performance/pom.xml
@@ -0,0 +1,170 @@
+<?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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.camel.tests</groupId>
+        <artifactId>tests</artifactId>
+        <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-performance</artifactId>
+    <name>Camel :: Performance Tests :: Performance</name>
+    <description>Performs cross component performance tests</description>
+
+    <dependencyManagement>
+        <dependencies>
+            <!-- Add Camel BOM -->
+            <dependency>
+                <groupId>org.apache.camel</groupId>
+                <artifactId>camel-bom</artifactId>
+                <version>${camel.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <!-- assuming camel is pulling aries 1.0.0, pull asm 4.0 first -->
+        <dependency>
+            <groupId>org.ow2.asm</groupId>
+            <artifactId>asm-all</artifactId>
+            <version>5.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.core</artifactId>
+            <scope>test</scope>
+            <version>${osgi-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.cmpn</artifactId>
+            <scope>test</scope>
+            <version>${osgi-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- logging -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <scope>test</scope>
+            <version>${log4j2-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-1.2-api</artifactId>
+            <scope>test</scope>
+            <version>${log4j2-version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>${commons-io-version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-http</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-saxon</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-cxf</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-ws-security</artifactId>
+            <scope>test</scope>
+            <version>${cxf-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.security</groupId>
+            <artifactId>wss4j</artifactId>
+            <version>1.6.17</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.bouncycastle</groupId>
+            <artifactId>bcpg-jdk15on</artifactId>
+            <version>${bouncycastle-version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.bouncycastle</groupId>
+            <artifactId>bcprov-jdk15on</artifactId>
+            <version>${bouncycastle-version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-server</artifactId>
+            <version>${jetty9-version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-servlet</artifactId>
+            <version>${jetty9-version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-util</artifactId>
+            <version>${jetty9-version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-io</artifactId>
+            <version>${jetty9-version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-transports-http</artifactId>
+            <scope>test</scope>
+            <version>${cxf-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-transports-http-jetty</artifactId>
+            <scope>test</scope>
+            <version>${cxf-version}</version>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/tests/camel-performance/src/test/data/1K_buyStocks.xml b/tests/camel-performance/src/test/data/1K_buyStocks.xml
new file mode 100644
index 0000000..c57a823
--- /dev/null
+++ b/tests/camel-performance/src/test/data/1K_buyStocks.xml
@@ -0,0 +1,33 @@
+<?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.
+
+-->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+<soapenv:Header><routing xmlns="http://someuri">xadmin;server1;community#1.0##</routing></soapenv:Header>
+<soapenv:Body>
+<m:buyStocks xmlns:m="http://services.samples/xsd">
+<order><symbol>IBM</symbol><buyerID>asankha</buyerID><price>140.34</price><volume>2000</volume></order>
+<order><symbol>MSFT</symbol><buyerID>ruwan</buyerID><price>23.56</price><volume>8030</volume></order>
+<order><symbol>SUN</symbol><buyerID>indika</buyerID><price>14.56</price><volume>500</volume></order>
+<order><symbol>GOOG</symbol><buyerID>chathura</buyerID><price>60.24</price><volume>40000</volume></order>
+<order><symbol>IBM</symbol><buyerID>asankha</buyerID><price>140.34</price><volume>2000</volume></order>
+<order><symbol>MSFT</symbol><buyerID>ruwan</buyerID><price>23.56</price><volume>803000</volume></order>
+<order><symbol>SUN</symbol><buyerID>indika</buyerID><price>14.56</price><volume>5000</volume></order>
+</m:buyStocks>
+</soapenv:Body>
+</soapenv:Envelope>
diff --git a/tests/camel-performance/src/test/java/org/apache/camel/test/perf/AbstractBasePerformanceTest.java b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/AbstractBasePerformanceTest.java
new file mode 100644
index 0000000..87a4fbb
--- /dev/null
+++ b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/AbstractBasePerformanceTest.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.perf;
+
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.TestInstance;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+public abstract class AbstractBasePerformanceTest extends CamelTestSupport {
+
+    protected static final String BODY_1KB_PAYLOAD
+            = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">"
+              + "<soapenv:Header><routing xmlns=\"http://someuri\">xadmin;server1;community#1.0##</routing></soapenv:Header>"
+              + "<soapenv:Body>"
+              + "<m:buyStocks xmlns:m=\"http://services.samples/xsd\">"
+              + "<order><symbol>IBM</symbol><buyerID>asankha</buyerID><price>140.34</price><volume>2000</volume></order>"
+              + "<order><symbol>MSFT</symbol><buyerID>ruwan</buyerID><price>23.56</price><volume>8030</volume></order>"
+              + "<order><symbol>SUN</symbol><buyerID>indika</buyerID><price>14.56</price><volume>500</volume></order>"
+              + "<order><symbol>GOOG</symbol><buyerID>chathura</buyerID><price>60.24</price><volume>40000</volume></order>"
+              + "<order><symbol>IBM</symbol><buyerID>asankha</buyerID><price>140.34</price><volume>2000</volume></order>"
+              + "<order><symbol>MSFT</symbol><buyerID>ruwan</buyerID><price>23.56</price><volume>803000</volume></order>"
+              + "<order><symbol>SUN</symbol><buyerID>indika</buyerID><price>14.56</price><volume>5000</volume></order>"
+              + "</m:buyStocks>"
+              + "</soapenv:Body>"
+              + "</soapenv:Envelope>";
+
+    protected final Logger log = LoggerFactory.getLogger(getClass());
+
+    protected String getPayload() {
+        return BODY_1KB_PAYLOAD;
+    }
+
+    protected void resetMock(int count) {
+        MockEndpoint mock = getMockEndpoint("mock:end");
+        mock.reset();
+        mock.setRetainFirst(0);
+        mock.setRetainLast(0);
+        mock.expectedMessageCount(count);
+    }
+
+    protected void execute(int count) {
+        for (int counter = 0; counter < count; counter++) {
+            template.sendBody(getPayload());
+        }
+    }
+
+}
diff --git a/tests/camel-performance/src/test/java/org/apache/camel/test/perf/ContentBasedRoutingPerformanceTest.java b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/ContentBasedRoutingPerformanceTest.java
new file mode 100644
index 0000000..622480c
--- /dev/null
+++ b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/ContentBasedRoutingPerformanceTest.java
@@ -0,0 +1,115 @@
+/*
+ * 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.perf;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.util.StopWatch;
+import org.junit.jupiter.api.Test;
+
+public class ContentBasedRoutingPerformanceTest extends AbstractBasePerformanceTest {
+
+    private final int count = 30000;
+
+    @Test
+    public void testChoiceSimple() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:choice-simple");
+
+        // warm up with 20.000 messages so that the JIT compiler kicks in
+        execute(20000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Test
+    public void testChoiceExpression() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:choice-expression");
+
+        // warm up with 20.000 messages so that the JIT compiler kicks in
+        execute(20000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Test
+    public void testFilterSimple() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:filter-simple");
+
+        // warm up with 20.000 messages so that the JIT compiler kicks in
+        execute(20000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Test
+    public void testFilterExpression() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:filter-expression");
+
+        // warm up with 20.000 messages so that the JIT compiler kicks in
+        execute(20000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                from("direct:filter-simple")
+                        .filter().simple("${body} contains 'xadmin;server1;community#1.0##'")
+                        .to("mock:end");
+
+                from("direct:filter-expression")
+                        .filter(body().contains("<order><symbol>IBM</symbol><buyerID>asankha</buyerID>"))
+                        .to("mock:end");
+
+                from("direct:choice-simple")
+                        .choice()
+                        .when().simple("${body} contains 'xadmin;server1;community#1.0##'")
+                        .to("mock:end");
+
+                from("direct:choice-expression")
+                        .choice()
+                        .when(body().contains("<order><symbol>IBM</symbol><buyerID>asankha</buyerID>"))
+                        .to("mock:end");
+            }
+        };
+    }
+}
diff --git a/tests/camel-performance/src/test/java/org/apache/camel/test/perf/HeaderBasedRoutingPerformanceTest.java b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/HeaderBasedRoutingPerformanceTest.java
new file mode 100644
index 0000000..eae43fa
--- /dev/null
+++ b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/HeaderBasedRoutingPerformanceTest.java
@@ -0,0 +1,122 @@
+/*
+ * 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.perf;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.util.StopWatch;
+import org.junit.jupiter.api.Test;
+
+public class HeaderBasedRoutingPerformanceTest extends AbstractBasePerformanceTest {
+
+    private final int count = 30000;
+
+    @Test
+    public void testChoiceSimple() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:choice-simple");
+
+        // warm up with 20.000 messages so that the JIT compiler kicks in
+        execute(20000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Test
+    public void testChoiceExpression() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:choice-expression");
+
+        // warm up with 20.000 messages so that the JIT compiler kicks in
+        execute(20000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Test
+    public void testFilterSimple() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:filter-simple");
+
+        // warm up with 20.000 messages so that the JIT compiler kicks in
+        execute(20000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Test
+    public void testFilterExpression() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:filter-expression");
+
+        // warm up with 20.000 messages so that the JIT compiler kicks in
+        execute(20000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Override
+    protected void execute(int count) {
+        for (int counter = 0; counter < count; counter++) {
+            template.sendBodyAndHeader(getPayload(), "routing", "xadmin;server1;community#1.0##");
+        }
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                from("direct:filter-simple")
+                        .filter(simple("${in.header.routing} == 'xadmin;server1;community#1.0##'"))
+                        .to("mock:end");
+
+                from("direct:filter-expression")
+                        .filter(header("routing").isEqualTo("xadmin;server1;community#1.0##"))
+                        .to("mock:end");
+
+                from("direct:choice-simple")
+                        .choice()
+                        .when(simple("${in.header.routing} == 'xadmin;server1;community#1.0##'"))
+                        .to("mock:end");
+
+                from("direct:choice-expression")
+                        .choice()
+                        .when(header("routing").isEqualTo("xadmin;server1;community#1.0##"))
+                        .to("mock:end");
+            }
+        };
+    }
+}
diff --git a/tests/camel-performance/src/test/java/org/apache/camel/test/perf/SplitterPerformanceTest.java b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/SplitterPerformanceTest.java
new file mode 100644
index 0000000..f0d0e68
--- /dev/null
+++ b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/SplitterPerformanceTest.java
@@ -0,0 +1,92 @@
+/*
+ * 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.perf;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.util.StopWatch;
+import org.junit.jupiter.api.Test;
+
+public class SplitterPerformanceTest extends AbstractBasePerformanceTest {
+
+    protected static final String HEADER = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">"
+                                           + "<soapenv:Header><routing xmlns=\"http://someuri\">xadmin;server1;community#1.0##</routing></soapenv:Header>"
+                                           + "<soapenv:Body>"
+                                           + "<m:buyStocks xmlns:m=\"http://services.samples/xsd\">";
+
+    protected static final String BODY
+            = "<order><symbol>IBM</symbol><buyerID>asankha</buyerID><price>140.34</price><volume>2000</volume></order>\n"
+              + "<order><symbol>MSFT</symbol><buyerID>ruwan</buyerID><price>23.56</price><volume>8030</volume></order>\n"
+              + "<order><symbol>SUN</symbol><buyerID>indika</buyerID><price>14.56</price><volume>500</volume></order>\n"
+              + "<order><symbol>GOOG</symbol><buyerID>chathura</buyerID><price>60.24</price><volume>40000</volume></order>\n"
+              + "<order><symbol>IBM</symbol><buyerID>asankha</buyerID><price>140.34</price><volume>2000</volume></order>\n"
+              + "<order><symbol>MSFT</symbol><buyerID>ruwan</buyerID><price>23.56</price><volume>803000</volume></order>\n"
+              + "<order><symbol>SUN</symbol><buyerID>indika</buyerID><price>14.56</price><volume>5000</volume></order>\n"
+              + "<order><symbol>GOOG</symbol><buyerID>chathura</buyerID><price>60.24</price><volume>40000</volume></order>\n"
+              + "<order><symbol>IBM</symbol><buyerID>asankha</buyerID><price>140.34</price><volume>2000</volume></order>\n"
+              + "<order><symbol>MSFT</symbol><buyerID>ruwan</buyerID><price>23.56</price><volume>803000</volume></order>\n";
+
+    protected static final String TRAILER = "</m:buyStocks>"
+                                            + "</soapenv:Body>"
+                                            + "</soapenv:Envelope>";
+
+    protected static final String PAYLOAD;
+
+    static {
+        StringBuilder builder = new StringBuilder(HEADER);
+
+        for (int i = 0; i < 2000; i++) {
+            builder.append(BODY);
+        }
+
+        builder.append(TRAILER);
+        PAYLOAD = builder.toString();
+    }
+
+    private final int count = 20001;
+
+    @Test
+    public void testTokenize() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:tokenize");
+
+        // warm up with 1 message so that the JIT compiler kicks in
+        execute(1);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(1);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Override
+    protected String getPayload() {
+        return PAYLOAD;
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                from("direct:tokenize")
+                        .split(body().tokenize("\n"))
+                        .to("mock:end");
+            }
+        };
+    }
+}
diff --git a/tests/camel-performance/src/test/java/org/apache/camel/test/perf/XPathBasedRoutingPerformanceTest.java b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/XPathBasedRoutingPerformanceTest.java
new file mode 100644
index 0000000..81bd5eb
--- /dev/null
+++ b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/XPathBasedRoutingPerformanceTest.java
@@ -0,0 +1,81 @@
+/*
+ * 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.perf;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.util.StopWatch;
+import org.junit.jupiter.api.Test;
+
+public class XPathBasedRoutingPerformanceTest extends AbstractBasePerformanceTest {
+
+    private final int count = 30000;
+
+    @Test
+    public void testChoice() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:choice");
+
+        // warm up with 20.000 messages so that the JIT compiler kicks in
+        execute(20000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Test
+    public void testFilter() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:filter");
+
+        // warm up with 20.000 messages so that the JIT compiler kicks in
+        execute(20000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                Map<String, String> namespaces = new HashMap<>();
+                namespaces.put("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
+                namespaces.put("m", "http://services.samples/xsd");
+
+                from("direct:filter")
+                        .filter().xpath("/soapenv:Envelope/soapenv:Body/m:buyStocks/order[1]/symbol='IBM'", namespaces)
+                        .to("mock:end");
+
+                from("direct:choice")
+                        .choice()
+                        .when().xpath("/soapenv:Envelope/soapenv:Body/m:buyStocks/order[1]/symbol='IBM'", namespaces)
+                        .to("mock:end");
+            }
+        };
+    }
+}
diff --git a/tests/camel-performance/src/test/java/org/apache/camel/test/perf/XQueryBasedRoutingPerformanceTest.java b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/XQueryBasedRoutingPerformanceTest.java
new file mode 100644
index 0000000..c501e7f
--- /dev/null
+++ b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/XQueryBasedRoutingPerformanceTest.java
@@ -0,0 +1,81 @@
+/*
+ * 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.perf;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.util.StopWatch;
+import org.junit.jupiter.api.Test;
+
+public class XQueryBasedRoutingPerformanceTest extends AbstractBasePerformanceTest {
+
+    private final int count = 30000;
+
+    @Test
+    public void testChoice() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:choice");
+
+        // warm up with 20.000 messages so that the JIT compiler kicks in
+        execute(20000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Test
+    public void testFilter() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:filter");
+
+        // warm up with 20.000 messages so that the JIT compiler kicks in
+        execute(20000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                Map<String, String> namespaces = new HashMap<>();
+                namespaces.put("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
+                namespaces.put("m", "http://services.samples/xsd");
+
+                from("direct:filter")
+                        .filter().xquery("/soapenv:Envelope/soapenv:Body/m:buyStocks/order[1]/symbol='IBM'", namespaces)
+                        .to("mock:end");
+
+                from("direct:choice")
+                        .choice()
+                        .when().xquery("/soapenv:Envelope/soapenv:Body/m:buyStocks/order[1]/symbol='IBM'", namespaces)
+                        .to("mock:end");
+            }
+        };
+    }
+}
diff --git a/tests/camel-performance/src/test/java/org/apache/camel/test/perf/XsltPerformanceTest.java b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/XsltPerformanceTest.java
new file mode 100644
index 0000000..b3d2aa7
--- /dev/null
+++ b/tests/camel-performance/src/test/java/org/apache/camel/test/perf/XsltPerformanceTest.java
@@ -0,0 +1,53 @@
+/*
+ * 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.perf;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.util.StopWatch;
+import org.junit.jupiter.api.Test;
+
+public class XsltPerformanceTest extends AbstractBasePerformanceTest {
+
+    private final int count = 10000;
+
+    @Test
+    public void testXslt() throws InterruptedException {
+        template.setDefaultEndpointUri("direct:xslt");
+
+        // warm up with 1.000 messages so that the JIT compiler kicks in
+        execute(1000);
+
+        resetMock(count);
+
+        StopWatch watch = new StopWatch();
+        execute(count);
+
+        assertMockEndpointsSatisfied();
+        log.warn("Ran {} tests in {}ms", count, watch.taken());
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                from("direct:xslt")
+                        .to("xslt://META-INF/xslt/transform.xslt")
+                        .to("mock:end");
+            }
+        };
+    }
+}
diff --git a/tests/camel-performance/src/test/resources/1K_buyStocks.xml b/tests/camel-performance/src/test/resources/1K_buyStocks.xml
new file mode 100644
index 0000000..c57a823
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/1K_buyStocks.xml
@@ -0,0 +1,33 @@
+<?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.
+
+-->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+<soapenv:Header><routing xmlns="http://someuri">xadmin;server1;community#1.0##</routing></soapenv:Header>
+<soapenv:Body>
+<m:buyStocks xmlns:m="http://services.samples/xsd">
+<order><symbol>IBM</symbol><buyerID>asankha</buyerID><price>140.34</price><volume>2000</volume></order>
+<order><symbol>MSFT</symbol><buyerID>ruwan</buyerID><price>23.56</price><volume>8030</volume></order>
+<order><symbol>SUN</symbol><buyerID>indika</buyerID><price>14.56</price><volume>500</volume></order>
+<order><symbol>GOOG</symbol><buyerID>chathura</buyerID><price>60.24</price><volume>40000</volume></order>
+<order><symbol>IBM</symbol><buyerID>asankha</buyerID><price>140.34</price><volume>2000</volume></order>
+<order><symbol>MSFT</symbol><buyerID>ruwan</buyerID><price>23.56</price><volume>803000</volume></order>
+<order><symbol>SUN</symbol><buyerID>indika</buyerID><price>14.56</price><volume>5000</volume></order>
+</m:buyStocks>
+</soapenv:Body>
+</soapenv:Envelope>
diff --git a/tests/camel-performance/src/test/resources/1K_buyStocks_secure.xml b/tests/camel-performance/src/test/resources/1K_buyStocks_secure.xml
new file mode 100644
index 0000000..c5aa7cc
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/1K_buyStocks_secure.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.
+
+-->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+<soapenv:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1"><xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="id-1357383968943278000-1391997743"><xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/><ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><wsse:SecurityTokenReference><wsse:KeyIdentifier EncodingType="http://docs.oasis-open.org/wss/2004/ [...]
+74Cg9Ot33to1CpQ4wl7SlszeomRx+AL3GA+QuouhO9eDJyAbjYIFy+FcUJ619P1AD1FR8VVdW5P4
+DvOxGfm+htl81tdP2kU=</xenc:CipherValue></xenc:CipherData><xenc:ReferenceList><xenc:DataReference URI="#id-1357383968943430000-1928238693"/></xenc:ReferenceList></xenc:EncryptedKey><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity- [...]
+DAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENBMB4XDTA1MDMxOTAwMDAwMFoX
+DTE4MDMxOTIzNTk1OVowQjEOMAwGA1UECgwFT0FTSVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3Ag
+VGVzdCBDZXJ0MQ4wDAYDVQQDDAVBbGljZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoqi9
+9By1VYo0aHrkKCNT4DkIgPL/SgahbeKdGhrbu3K2XG7arfD9tqIBIKMfrX4Gp90NJa85AV1yiNsE
+yvq+mUnMpNcKnLXLOjkTmMCqDYbbkehJlXPnaWLzve+mW0pJdPxtf3rbD4PS/cBQIvtpjmrDAU8V
+sZKT8DN5Kyz+EZsCAwEAAaOBkzCBkDAJBgNVHRMEAjAAMDMGA1UdHwQsMCowKKImhiRodHRwOi8v
+aW50ZXJvcC5iYnRlc3QubmV0L2NybC9jYS5jcmwwDgYDVR0PAQH/BAQDAgSwMB0GA1UdDgQWBBQK
+4l0TUHZ1QV3V2QtlLNDm+PoxiDAfBgNVHSMEGDAWgBTAnSj8wes1oR3WqqqgHBpNwkkPDzANBgkq
+hkiG9w0BAQUFAAOCAQEABTqpOpvW+6yrLXyUlP2xJbEkohXHI5OWwKWleOb9hlkhWntUalfcFOJA
+gUyH30TTpHldzx1+vK2LPzhoUFKYHE1IyQvokBN2JjFO64BQukCKnZhldLRPxGhfkTdxQgdf5rCK
+/wh3xVsZCNTfuMNmlAM6lOAg8QduDah3WFZpEA0s2nwQaCNQTNMjJC8tav1CBr6+E5FAmwPXP7pJ
+xn9Fw9OXRyqbRA4v2y7YpbGkG2GI9UvOHw6SGvf4FRSthMMO35YbpikGsLix3vAsXWWi4rwfVOYz
+QK0OFPNi9RMCUdSH06m9uLWckiCxjos0FQODZE9l4ATGy9s9hNVwryOJTw==</wsse:BinarySecurityToken><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+<ds:SignedInfo>
+<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
+<ds:Reference URI="#id-1357383968939063000-142227415">
+<ds:Transforms>
+<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+</ds:Transforms>
+<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+<ds:DigestValue>SZkK3D7xaoGDBMudnAhko4svV3Y=</ds:DigestValue>
+</ds:Reference>
+<ds:Reference URI="#id-1357383968938551000-396142871">
+<ds:Transforms>
+<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+</ds:Transforms>
+<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+<ds:DigestValue>HUHU6PCkHctVkkxdOVBTowAcTds=</ds:DigestValue>
+</ds:Reference>
+</ds:SignedInfo>
+<ds:SignatureValue>
+gAc34IGlAuClhIbQ6Vyd8iu8pw0RTw0eyXjNQEUzEzWt6/vdG1Z9clDup13SzyTvaVRkv0fbRzFy
+5joMJ7CLjdMrHJg/FP6TMFUxDlit3QXbAaiB7J/VxMuJuQ05+MjnqCy/I4D8QCt7BhlbPiPozPsk
+bhDz8LOeWQDzXSUJJ1U=
+</ds:SignatureValue>
+<ds:KeyInfo><wsse:SecurityTokenReference><wsse:Reference URI="#id-1357383968942887000-228572128" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></ds:KeyInfo></ds:Signature><wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-1357383968938551000-396142871"><wsu:Created>2013-01-05T11:06:08.938Z</wsu:Created><wsu:Expires>2013-02-04T11:06:08.93 [...]
+<soapenv:Body wsu:Id="id-1357383968939063000-142227415" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="id-1357383968943430000-1928238693" Type="http://www.w3.org/2001/04/xmlenc#Content"><xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/><ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+<wsse:SecurityTokenReference xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:Reference URI="#id-1357383968943278000-1391997743"/></wsse:SecurityTokenReference>
+</ds:KeyInfo><xenc:CipherData><xenc:CipherValue>OaYLQwfFj0i01Zl7fCp8xclhoBR8/OJvqN6qdPUYcd2hHlYJOtHTnirPXev0xCxM4Y0/LHcFc64n
+afRkz/cT+V4yLW5MSfZfeLFvLIfrz427UblCwQxQlgyiBxP16KkGVdGLws9duaNOPE4efKt7brnV
+AOqvj2olsFLBz2LE7OAH/eDDQh2s19ivjy+OKqTDj11kOXtCb7fS6Egi5erzte9dKvE6rnUXVue3
+C+H5/NRkJXiayMznpJoVUwkmSobwHV7syuli8wF6tExKZVHZzJVJngRjvLsFJBAI9Zbcpu/VzV0U
+NtmO7wbntC/WHnTW1gqzqsyFUVrKuLtT92z8qL2PEIl8lqCYfg2LdZzVPzUNXVLA9c7WSgbeoRty
+euj20EGqLRWrMQx6/fwVoUHTqdBmI17IF0btRELVrBr+HXOOSg+WKZ2kRtQTC9fWjPHhxLaMQCMX
+0ijls8JrHdRRIOUeB3IBM4hWQwA19mXwIR+apCcjaQld0K2SvIQAqSDdwYQleYoT+lYlxTNwqDSF
+RNUPNygkDbGPF0wV4sMMgOj751VSiCSVcBNtbTsdMWxqtmvpr3IQO5HDvdr3jToDWN2a79bWBvkH
+q40bvAOLiQshMgu+wLeTRmg5yv+5TYi6bDaz20aXTSp3nKHJIvnc8386ZrpKYx8RWEvfkXgm5+Bj
+zLesMmGQLiaIcWnCDBOVa6XcGf5rxLi806vic6lqpl/12CseBuyfxN8UqvI4sRlJUbseQtUBKoov
+c+EAPPbQatoBd1xOyy6h9zIkHinCCDGjMIPQ89pVb4vb5lH7VQKgJh96gT8LX1XgHQQKpaF0ab5L
+zOd4d4Qlv+J9ZkvxrmNMYNoueDgqq/r6+Q4Q5d66lfv5jm/4GrrL6CYmC0ZasNnRBrO7B6QZnsp0
+Cjzzbl4rT0fuHGHAKnUVFCRe3puzS+nsumJ8lIMam+OQkCqvli+2wew1JtJjcll49x58hAnwRDgy
+YzukmNt73HJirVdT6Yhe3s3R0kpqRARza1UPsVheL+XQP6hVpS8etabk5cBzGatoYUK6IIDRsz9a
+RZKzN0cUEEJ/KlcsZE1hDz8/</xenc:CipherValue></xenc:CipherData></xenc:EncryptedData></soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
diff --git a/tests/camel-performance/src/test/resources/META-INF/xslt/transform.xslt b/tests/camel-performance/src/test/resources/META-INF/xslt/transform.xslt
new file mode 100644
index 0000000..cbd3ebf
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/META-INF/xslt/transform.xslt
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="2.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:m0="http://services.samples/xsd"
+    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+    
+    <xsl:output method="xml" omit-xml-declaration="yes" indent="yes" exclude-result-prefixes="m0" />
+
+    <xsl:template match="m0:buyStocks">
+        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+            <soapenv:Body>
+                <m:skcotSyub xmlns:m="http://services.samples/xsd">
+                    <xsl:for-each select="order">
+                        <redro>
+                            <lobmys>
+                                <xsl:value-of select="symbol" />
+                            </lobmys>
+                            <DIreyub>
+                                <xsl:value-of select="buyerID" />
+                            </DIreyub>
+                            <ecirp>
+                                <xsl:value-of select="price" />
+                            </ecirp>
+                            <emulov>
+                                <xsl:value-of select="volume" />
+                            </emulov>
+                        </redro>
+                    </xsl:for-each>
+                </m:skcotSyub>
+            </soapenv:Body>
+        </soapenv:Envelope>
+    </xsl:template>
+
+    <xsl:template match="soapenv:Header"></xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/tests/camel-performance/src/test/resources/log4j2.properties b/tests/camel-performance/src/test/resources/log4j2.properties
new file mode 100644
index 0000000..8957aa0
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/log4j2.properties
@@ -0,0 +1,29 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+appender.file.type = File
+appender.file.name = file
+appender.file.fileName = target/camel-performance-test.log
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d %-5p %c{1}.%M - %m%n
+appender.out.type = Console
+appender.out.name = out
+appender.out.layout.type = PatternLayout
+appender.out.layout.pattern = %d %-5p %c{1}.%M - %m%n
+rootLogger.level = WARN
+rootLogger.appenderRef.file.ref = file
+rootLogger.appenderRef.out.ref = out
diff --git a/tests/camel-performance/src/test/resources/store.jks b/tests/camel-performance/src/test/resources/store.jks
new file mode 100644
index 0000000..02d7c4e
Binary files /dev/null and b/tests/camel-performance/src/test/resources/store.jks differ
diff --git a/tests/camel-performance/src/test/resources/wsdl/CBRWSDL-consumer-embedded.wsdl b/tests/camel-performance/src/test/resources/wsdl/CBRWSDL-consumer-embedded.wsdl
new file mode 100644
index 0000000..f61bfd0
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wsdl/CBRWSDL-consumer-embedded.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="CBRProxy">
+        <port name="CBREchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:8192/service/CBRProxy"/>
+        </port>
+    </service>
+</definitions>
+
diff --git a/tests/camel-performance/src/test/resources/wsdl/CBRWSDL-provider-embedded.wsdl b/tests/camel-performance/src/test/resources/wsdl/CBRWSDL-provider-embedded.wsdl
new file mode 100644
index 0000000..a6540d9
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wsdl/CBRWSDL-provider-embedded.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="CBREchoService">
+        <port name="CBREchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:9000/service/EchoService"/>
+        </port>
+    </service>
+</definitions>
+
diff --git a/tests/camel-performance/src/test/resources/wsdl/HBRSoapWSDL-consumer-embedded.wsdl b/tests/camel-performance/src/test/resources/wsdl/HBRSoapWSDL-consumer-embedded.wsdl
new file mode 100644
index 0000000..72d23cd
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wsdl/HBRSoapWSDL-consumer-embedded.wsdl
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+    </xsd:schema>
+        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+                    targetNamespace="http://someuri"
+                    xmlns:tns="http://someuri"
+                    elementFormDefault="unqualified">
+            <xsd:element name="routing" type="xsd:string"></xsd:element>
+        </xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="request_header" element="some:routing" xmlns:some="http://someuri"/>
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:header use="literal" message="tns:EchoOperationRequest" part="request_header" required="true"/>
+                <soap:body use="literal" parts="parameters"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:header use="literal" message="tns:EchoOperationRequest" part="request_header" required="true"/>
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:header use="literal" message="tns:EchoOperationRequest" part="request_header" required="true"/>
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:header use="literal" message="tns:EchoOperationRequest" part="request_header" required="true"/>
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:header use="literal" message="tns:EchoOperationRequest" part="request_header" required="true"/>
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:header use="literal" message="tns:EchoOperationRequest" part="request_header" required="true"/>
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="CBRSOAPHeaderProxy">
+        <port name="CBRSOAPHeaderEchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:8192/service/CBRSOAPHeaderProxy"/>
+        </port>
+    </service>
+</definitions>
+
diff --git a/tests/camel-performance/src/test/resources/wsdl/HBRSoapWSDL-provider-embedded.wsdl b/tests/camel-performance/src/test/resources/wsdl/HBRSoapWSDL-provider-embedded.wsdl
new file mode 100644
index 0000000..e2392f0
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wsdl/HBRSoapWSDL-provider-embedded.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="HBRSoapEchoService">
+        <port name="HBRSoapEchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:9001/service/EchoService"/>
+        </port>
+    </service>
+</definitions>
+
diff --git a/tests/camel-performance/src/test/resources/wsdl/HBRTransportWSDL-consumer-embedded.wsdl b/tests/camel-performance/src/test/resources/wsdl/HBRTransportWSDL-consumer-embedded.wsdl
new file mode 100644
index 0000000..4ece9fb
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wsdl/HBRTransportWSDL-consumer-embedded.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="CBRTransportHeaderProxy">
+        <port name="CBRTransportHeaderEchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:8192/service/CBRTransportHeaderProxy"/>
+        </port>
+    </service>
+</definitions>
+
diff --git a/tests/camel-performance/src/test/resources/wsdl/HBRTransportWSDL-provider-embedded.wsdl b/tests/camel-performance/src/test/resources/wsdl/HBRTransportWSDL-provider-embedded.wsdl
new file mode 100644
index 0000000..ee03250
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wsdl/HBRTransportWSDL-provider-embedded.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="HBRTransportEchoService">
+        <port name="HBRTransportEchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:9000/service/EchoService"/>
+        </port>
+    </service>
+</definitions>
+
diff --git a/tests/camel-performance/src/test/resources/wsdl/ProxyWSDL-consumer-embedded.wsdl b/tests/camel-performance/src/test/resources/wsdl/ProxyWSDL-consumer-embedded.wsdl
new file mode 100644
index 0000000..bb5bee0
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wsdl/ProxyWSDL-consumer-embedded.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="DirectProxy">
+        <port name="EchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:8192/service/DirectProxy"/>
+        </port>
+    </service>
+</definitions>
+
diff --git a/tests/camel-performance/src/test/resources/wsdl/ProxyWSDL-provider-embedded.wsdl b/tests/camel-performance/src/test/resources/wsdl/ProxyWSDL-provider-embedded.wsdl
new file mode 100644
index 0000000..7a62555
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wsdl/ProxyWSDL-provider-embedded.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="ProxyEchoService">
+        <port name="EchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:9000/service/EchoService"/>
+        </port>
+    </service>
+</definitions>
+
diff --git a/tests/camel-performance/src/test/resources/wsdl/SecureProxyWSDL-consumer-embedded.wsdl b/tests/camel-performance/src/test/resources/wsdl/SecureProxyWSDL-consumer-embedded.wsdl
new file mode 100644
index 0000000..5b34f98
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wsdl/SecureProxyWSDL-consumer-embedded.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="SecureProxy">
+        <port name="EchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:8192/service/SecureProxy"/>
+        </port>
+    </service>
+</definitions>
+
diff --git a/tests/camel-performance/src/test/resources/wsdl/SecureProxyWSDL-provider-embedded.wsdl b/tests/camel-performance/src/test/resources/wsdl/SecureProxyWSDL-provider-embedded.wsdl
new file mode 100644
index 0000000..57b8fa4
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wsdl/SecureProxyWSDL-provider-embedded.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="SecureEchoService">
+        <port name="EchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:9000/service/EchoService"/>
+        </port>
+    </service>
+</definitions>
+
diff --git a/tests/camel-performance/src/test/resources/wsdl/TransformerWSDL-consumer-embedded.wsdl b/tests/camel-performance/src/test/resources/wsdl/TransformerWSDL-consumer-embedded.wsdl
new file mode 100644
index 0000000..2591b6f
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wsdl/TransformerWSDL-consumer-embedded.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="XSLTProxy">
+        <port name="EchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:8192/service/XSLTProxy"/>
+        </port>
+    </service>
+</definitions>
+
diff --git a/tests/camel-performance/src/test/resources/wsdl/TransformerWSDL-provider-embedded.wsdl b/tests/camel-performance/src/test/resources/wsdl/TransformerWSDL-provider-embedded.wsdl
new file mode 100644
index 0000000..6b9b3a1
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wsdl/TransformerWSDL-provider-embedded.wsdl
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="EchoWSDL" targetNamespace="http://services.samples/xsd"
+             xmlns="http://schemas.xmlsoap.org/wsdl/"
+             xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://services.samples/xsd"
+             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <types>
+	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+		    targetNamespace="http://services.samples/xsd"
+		    xmlns:tns="http://services.samples/xsd"
+		    elementFormDefault="unqualified">
+	    <xsd:complexType name="BuyStocks">
+		<xsd:sequence>
+		    <xsd:element name="order">
+		        <xsd:complexType>
+		            <xsd:sequence>
+		                <xsd:element name="symbol" type="xsd:string"></xsd:element>
+		                <xsd:element name="buyerID" type="xsd:string"></xsd:element>
+		                <xsd:element name="price" type="xsd:double"></xsd:element>
+		                <xsd:element name="volume" type="xsd:int"></xsd:element>
+		            </xsd:sequence>
+		        </xsd:complexType>
+		    </xsd:element>
+		</xsd:sequence>
+	    </xsd:complexType>
+	    <xsd:element name="buyStocks" type="tns:BuyStocks"></xsd:element>
+	</xsd:schema>
+    </types>
+    <message name="EchoOperationRequest">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+    <message name="EchoOperationResponse">
+        <part name="parameters" element="tns:buyStocks"/>
+    </message>
+
+    <portType name="buyStocksPortType">
+        <operation name="buyStocksOperation">
+            <input name="message" message="tns:EchoOperationRequest"/>
+            <output name="message" message="tns:EchoOperationResponse"/>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <input name="message1K" message="tns:EchoOperationRequest"/>
+            <output name="message1K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <input name="message5K" message="tns:EchoOperationRequest"/>
+            <output name="message5K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <input name="message10K" message="tns:EchoOperationRequest"/>
+            <output name="message10K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <input name="message100K" message="tns:EchoOperationRequest"/>
+            <output name="message100K" message="tns:EchoOperationResponse"/>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <input name="message500K" message="tns:EchoOperationRequest"/>
+            <output name="message500K" message="tns:EchoOperationResponse"/>
+        </operation>
+    </portType>
+    <binding name="EchoServiceSOAP11Binding" type="tns:buyStocksPortType">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="buyStocksOperation">
+            <soap:operation soapAction="urn:buyStocks" style="document"/>
+            <input name="message">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+
+        <operation name="buyStocksOperation1K">
+            <soap:operation soapAction="urn:buyStocks.2" style="document"/>
+            <input name="message1K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message1K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation5K">
+            <soap:operation soapAction="urn:buyStocks.5" style="document"/>
+            <input name="message5K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message5K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation10K">
+            <soap:operation soapAction="urn:buyStocks.10" style="document"/>
+            <input name="message10K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message10K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation100K">
+            <soap:operation soapAction="urn:buyStocks.100" style="document"/>
+            <input name="message100K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message100K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+        <operation name="buyStocksOperation500K">
+            <soap:operation soapAction="urn:buyStocks.500" style="document"/>
+            <input name="message500K">
+                <soap:body use="literal"/>
+            </input>
+            <output name="message500K">
+                <soap:body use="literal"/>
+            </output>
+        </operation>
+    </binding>
+    <service name="XSLTEchoService">
+        <port name="EchoServicePort" binding="tns:EchoServiceSOAP11Binding">
+            <soap:address location="http://localhost:9000/service/EchoService"/>
+        </port>
+    </service>
+</definitions>
+
diff --git a/tests/camel-performance/src/test/resources/wssecurity.properties b/tests/camel-performance/src/test/resources/wssecurity.properties
new file mode 100644
index 0000000..68196c1
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/wssecurity.properties
@@ -0,0 +1,21 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=password
+org.apache.ws.security.crypto.merlin.file=store.jks
+timeToLive=6307200000
\ No newline at end of file
diff --git a/tests/camel-performance/src/test/resources/xslt/transform.xslt b/tests/camel-performance/src/test/resources/xslt/transform.xslt
new file mode 100644
index 0000000..cbd3ebf
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/xslt/transform.xslt
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="2.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:m0="http://services.samples/xsd"
+    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+    
+    <xsl:output method="xml" omit-xml-declaration="yes" indent="yes" exclude-result-prefixes="m0" />
+
+    <xsl:template match="m0:buyStocks">
+        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+            <soapenv:Body>
+                <m:skcotSyub xmlns:m="http://services.samples/xsd">
+                    <xsl:for-each select="order">
+                        <redro>
+                            <lobmys>
+                                <xsl:value-of select="symbol" />
+                            </lobmys>
+                            <DIreyub>
+                                <xsl:value-of select="buyerID" />
+                            </DIreyub>
+                            <ecirp>
+                                <xsl:value-of select="price" />
+                            </ecirp>
+                            <emulov>
+                                <xsl:value-of select="volume" />
+                            </emulov>
+                        </redro>
+                    </xsl:for-each>
+                </m:skcotSyub>
+            </soapenv:Body>
+        </soapenv:Envelope>
+    </xsl:template>
+
+    <xsl:template match="soapenv:Header"></xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/tests/camel-performance/src/test/resources/xslt/transform_back.xslt b/tests/camel-performance/src/test/resources/xslt/transform_back.xslt
new file mode 100644
index 0000000..04ea451
--- /dev/null
+++ b/tests/camel-performance/src/test/resources/xslt/transform_back.xslt
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="2.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:m0="http://services.samples/xsd">
+    
+    <xsl:output method="xml" omit-xml-declaration="yes" indent="yes" exclude-result-prefixes="m0" />
+
+    <xsl:template match="m0:skcotSyub">
+        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+            <soapenv:Body>
+                <m:buyStocks xmlns:m="http://services.samples/xsd">
+                    <xsl:for-each select="redro">
+                        <order>
+                            <symbol>
+                                <xsl:value-of select="lobmys" />
+                            </symbol>
+                            <buyerID>
+                                <xsl:value-of select="DIreyub" />
+                            </buyerID>
+                            <price>
+                                <xsl:value-of select="ecirp" />
+                            </price>
+                            <volume>
+                                <xsl:value-of select="emulov" />
+                            </volume>
+                        </order>
+                    </xsl:for-each>
+                </m:buyStocks>
+            </soapenv:Body>
+        </soapenv:Envelope>
+    </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/tests/pom.xml b/tests/pom.xml
index a5e25db..4f56de4 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -36,6 +36,7 @@
 
     <modules>
         <module>camel-jmh</module>
+        <module>camel-performance</module>
     </modules>
 
 </project>