You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by df...@apache.org on 2021/04/20 18:31:38 UTC
[camel-performance-tests] 10/16: CAMEL-16251 - Move Performance and
jmh itests in a separated repository
This is an automated email from the ASF dual-hosted git repository.
dfoulks pushed a commit to branch main
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>