You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2015/07/15 14:15:43 UTC

camel git commit: camel-undertow: refactor unit tests to use dynamic ports

Repository: camel
Updated Branches:
  refs/heads/master f9948173a -> 8e07c18c3


camel-undertow: refactor unit tests to use dynamic ports


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

Branch: refs/heads/master
Commit: 8e07c18c3537049962ccea7b075061c5560f03ec
Parents: f994817
Author: David Simansky <ds...@redhat.com>
Authored: Wed Jul 15 14:05:46 2015 +0200
Committer: David Simansky <ds...@redhat.com>
Committed: Wed Jul 15 14:07:26 2015 +0200

----------------------------------------------------------------------
 .../component/undertow/BaseUndertowTest.java    | 77 ++++++++++++++++++++
 .../undertow/UndertowComponentTest.java         | 26 +------
 .../undertow/UndertowError500Test.java          |  9 +--
 .../component/undertow/UndertowHeaderTest.java  |  9 +--
 .../undertow/UndertowHttpProducerTest.java      | 11 ++-
 .../undertow/UndertowHttpsSpringTest.java       | 16 +++-
 .../undertow/UndertowMethodRestricTest.java     | 13 +++-
 .../undertow/UndertowPrefixMatchingTest.java    | 13 ++--
 .../undertow/UndertowProducerTest.java          | 11 ++-
 .../undertow/UndertowSharedPortTest.java        | 54 +++++++++++++-
 .../src/test/resources/SpringTest.xml           | 17 ++++-
 11 files changed, 195 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/8e07c18c/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/BaseUndertowTest.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/BaseUndertowTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/BaseUndertowTest.java
new file mode 100644
index 0000000..23e1ea0
--- /dev/null
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/BaseUndertowTest.java
@@ -0,0 +1,77 @@
+/**
+ * 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.component.undertow;
+
+import java.util.Properties;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.properties.PropertiesComponent;
+import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.test.AvailablePortFinder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.BeforeClass;
+
+/**
+ * Base class of tests which allocates ports
+ */
+public class BaseUndertowTest extends CamelTestSupport {
+
+    private static volatile int port;
+    private static volatile int port2;
+    private final AtomicInteger counter = new AtomicInteger(1);
+
+    @BeforeClass
+    public static void initPort() throws Exception {
+        port = AvailablePortFinder.getNextAvailable(8000);
+        port2 = AvailablePortFinder.getNextAvailable(9000);
+    }
+
+    protected static int getPort() {
+        return port;
+    }
+
+    protected static int getPort2() {
+        return port2;
+    }
+
+    @Override
+    protected CamelContext createCamelContext() throws Exception {
+        CamelContext context = super.createCamelContext();
+        context.addComponent("properties", new PropertiesComponent("ref:prop"));
+        return context;
+    }
+
+    @Override
+    protected JndiRegistry createRegistry() throws Exception {
+        JndiRegistry jndi = super.createRegistry();
+
+        Properties prop = new Properties();
+        prop.setProperty("port", "" + getPort());
+        prop.setProperty("port2", "" + getPort2());
+        jndi.bind("prop", prop);
+        return jndi;
+    }
+
+    protected int getNextPort() {
+        return AvailablePortFinder.getNextAvailable(port + counter.getAndIncrement());
+    }
+
+    protected int getNextPort(int startWithPort) {
+        return AvailablePortFinder.getNextAvailable(startWithPort);
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/8e07c18c/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowComponentTest.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowComponentTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowComponentTest.java
index c2a7a5c..7eac71e 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowComponentTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowComponentTest.java
@@ -19,24 +19,18 @@ package org.apache.camel.component.undertow;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class UndertowComponentTest extends CamelTestSupport {
+public class UndertowComponentTest extends BaseUndertowTest {
     private static final Logger LOG = LoggerFactory.getLogger(UndertowComponentTest.class);
 
     @Test
     public void testUndertow() throws Exception {
 
 
-        String response = template.requestBody("undertow://http://localhost:8888/myapp", "Hello Camel!", String.class);
-//        MockEndpoint mockEndpoint = getMockEndpoint("mock:myapp");
-//        assertTrue(mockEndpoint.getExchanges().size() == 1);
-//        for (Exchange exchange : mockEndpoint.getExchanges()) {
-//            assertEquals("Bye Camel", exchange.getIn().getBody(String.class));
-//        }
+        String response = template.requestBody("undertow://http://localhost:{{port}}/myapp", "Hello Camel!", String.class);
 
         assertNotNull(response);
 
@@ -50,14 +44,6 @@ public class UndertowComponentTest extends CamelTestSupport {
             assertEquals("Hello Camel! Bye Camel!", exchange.getIn().getBody(String.class));
         }
 
-//        Exchange out = template.request("undertow:http://localhost:8888/myapp", new Processor() {
-//            @Override
-//            public void process(Exchange exchange) throws Exception {
-//                exchange.getIn().setBody("Hello World!");
-//            }
-//        });
-
-
         mockEndpoint.assertIsSatisfied();
 
     }
@@ -66,15 +52,9 @@ public class UndertowComponentTest extends CamelTestSupport {
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() {
-                from("undertow:http://localhost:8888/myapp")
+                from("undertow:http://localhost:{{port}}/myapp")
                     .transform().constant("Bye Camel!")
                     .to("mock:myapp");
-
-//                from("undertow:http://localhost:8888/bar")
-//                        .transform(bodyAs(String.class).append(" Bar Camel!"))
-//                        .to("mock:bar");
-
-
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/8e07c18c/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowError500Test.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowError500Test.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowError500Test.java
index 41c7e16..5c8e747 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowError500Test.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowError500Test.java
@@ -19,19 +19,16 @@ package org.apache.camel.component.undertow;
 import org.apache.camel.CamelExecutionException;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
-public class UndertowError500Test extends CamelTestSupport {
-
-    // TODO: add unit test should use dynamic port number, see camel-jetty9 for example
+public class UndertowError500Test extends BaseUndertowTest {
 
     @Test
     public void testHttp500Error() throws Exception {
         getMockEndpoint("mock:input").expectedBodiesReceived("Hello World");
 
         try {
-            template.requestBody("http://localhost:8888/foo", "Hello World", String.class);
+            template.requestBody("http://localhost:{{port}}/foo", "Hello World", String.class);
             fail("Should have failed");
         } catch (CamelExecutionException e) {
 
@@ -45,7 +42,7 @@ public class UndertowError500Test extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("undertow:http://localhost:8888/foo")
+                from("undertow:http://localhost:{{port}}/foo")
                     .to("mock:input")
                         // trigger failure by setting error code to 500
                     .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(500))

http://git-wip-us.apache.org/repos/asf/camel/blob/8e07c18c/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHeaderTest.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHeaderTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHeaderTest.java
index 5ba092e..b360c8a 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHeaderTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHeaderTest.java
@@ -18,22 +18,21 @@ package org.apache.camel.component.undertow;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
-public class UndertowHeaderTest extends CamelTestSupport {
+public class UndertowHeaderTest extends BaseUndertowTest {
 
     @Test
     public void testHttpHeaders() throws Exception {
         getMockEndpoint("mock:input").expectedBodiesReceived("Hello World");
         getMockEndpoint("mock:input").expectedHeaderReceived("param", "true");
         getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_METHOD, "POST");
-        getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_URL, "http://localhost:8888/headers");
+        getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_URL, "http://localhost:" + getPort() + "/headers");
         getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_URI, "/headers");
         getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_QUERY, "param=true");
         getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_PATH, "/headers");
 
-        String out = template.requestBody("http://localhost:8888/headers?param=true", "Hello World", String.class);
+        String out = template.requestBody("http://localhost:" + getPort() + "/headers?param=true", "Hello World", String.class);
         assertEquals("Bye World", out);
 
         assertMockEndpointsSatisfied();
@@ -44,7 +43,7 @@ public class UndertowHeaderTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("undertow:http://localhost:8888/headers")
+                from("undertow:http://localhost:{{port}}/headers")
                     .to("mock:input")
                     .transform().constant("Bye World");
             }

http://git-wip-us.apache.org/repos/asf/camel/blob/8e07c18c/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpProducerTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpProducerTest.java
index f9c4f3b..57cf2c6 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpProducerTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpProducerTest.java
@@ -18,16 +18,15 @@ package org.apache.camel.component.undertow;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
-public class UndertowHttpProducerTest extends CamelTestSupport {
+public class UndertowHttpProducerTest extends BaseUndertowTest {
 
     @Test
     public void testHttpSimple() throws Exception {
         getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_METHOD, "GET");
 
-        String out = template.requestBody("http://localhost:8888/foo", null, String.class);
+        String out = template.requestBody("http://localhost:{{port}}/foo", null, String.class);
         assertEquals("Bye World", out);
 
         assertMockEndpointsSatisfied();
@@ -37,7 +36,7 @@ public class UndertowHttpProducerTest extends CamelTestSupport {
     public void testHttpSimpleHeader() throws Exception {
         getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_METHOD, "POST");
 
-        String out = template.requestBodyAndHeader("http://localhost:8888/foo", null, Exchange.HTTP_METHOD, "POST", String.class);
+        String out = template.requestBodyAndHeader("http://localhost:{{port}}/foo", null, Exchange.HTTP_METHOD, "POST", String.class);
         assertEquals("Bye World", out);
 
         assertMockEndpointsSatisfied();
@@ -49,7 +48,7 @@ public class UndertowHttpProducerTest extends CamelTestSupport {
         getMockEndpoint("mock:input").expectedBodiesReceived("Hello World");
         getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_METHOD, "POST");
 
-        String out = template.requestBodyAndHeader("http://localhost:8888/foo", "Hello World", Exchange.HTTP_METHOD, "POST", String.class);
+        String out = template.requestBodyAndHeader("http://localhost:{{port}}/foo", "Hello World", Exchange.HTTP_METHOD, "POST", String.class);
         assertEquals("Bye World", out);
 
         assertMockEndpointsSatisfied();
@@ -60,7 +59,7 @@ public class UndertowHttpProducerTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("undertow:http://localhost:8888/foo")
+                from("undertow:http://localhost:{{port}}/foo")
                     .to("mock:input")
                     .transform().constant("Bye World");
             }

http://git-wip-us.apache.org/repos/asf/camel/blob/8e07c18c/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpsSpringTest.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpsSpringTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpsSpringTest.java
index f7375b6..57cdb0b 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpsSpringTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHttpsSpringTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.undertow;
 
 import java.net.URL;
+import javax.annotation.Resource;
 
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Produce;
@@ -35,6 +36,8 @@ import static org.junit.Assert.assertEquals;
 @ContextConfiguration(locations = {"/SpringTest.xml"})
 public class UndertowHttpsSpringTest {
 
+    private Integer port;
+
     @Produce
     private ProducerTemplate template;
 
@@ -53,14 +56,23 @@ public class UndertowHttpsSpringTest {
     }
 
     @Test
-    public void testSSLInOutWithNettyConsumer() throws Exception {
+    public void testSSLConsumer() throws Exception {
         mockEndpoint.expectedBodiesReceived("Hello World");
 
-        String out = template.requestBody("https://localhost:9000/spring", "Hello World", String.class);
+        String out = template.requestBody("https://localhost:" + port + "/spring", "Hello World", String.class);
         assertEquals("Bye World", out);
 
         mockEndpoint.assertIsSatisfied();
     }
 
+    public Integer getPort() {
+        return port;
+    }
+
+    @Resource(name = "dynaPort")
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
 }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/8e07c18c/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowMethodRestricTest.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowMethodRestricTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowMethodRestricTest.java
index d2b9105..fd3cf0b 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowMethodRestricTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowMethodRestricTest.java
@@ -20,16 +20,21 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.methods.GetMethod;
 import org.apache.commons.httpclient.methods.PostMethod;
 import org.apache.commons.httpclient.methods.StringRequestEntity;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
-public class UndertowMethodRestricTest extends CamelTestSupport {
+public class UndertowMethodRestricTest extends BaseUndertowTest {
 
-    private String url = "http://localhost:8888/methodRestrict";
+    private static String url;
+
+    @BeforeClass
+    public static void init() {
+        url = "http://localhost:" + getPort() + "/methodRestrict";
+    }
 
     @Test
     public void testProperHttpMethod() throws Exception {
@@ -61,7 +66,7 @@ public class UndertowMethodRestricTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("undertow://http://localhost:8888/methodRestrict?httpMethodRestrict=POST").process(new Processor() {
+                from("undertow://http://localhost:{{port}}/methodRestrict?httpMethodRestrict=POST").process(new Processor() {
                     public void process(Exchange exchange) throws Exception {
                         Message in = exchange.getIn();
                         String request = in.getBody(String.class);

http://git-wip-us.apache.org/repos/asf/camel/blob/8e07c18c/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowPrefixMatchingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowPrefixMatchingTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowPrefixMatchingTest.java
index 6c62967..34f1b62 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowPrefixMatchingTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowPrefixMatchingTest.java
@@ -20,17 +20,16 @@ import org.apache.camel.CamelExecutionException;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.http.HttpOperationFailedException;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class UndertowPrefixMatchingTest extends CamelTestSupport {
+public class UndertowPrefixMatchingTest extends BaseUndertowTest {
     private static final Logger LOG = LoggerFactory.getLogger(UndertowComponentTest.class);
 
     @Test
     public void passOnExactPath() throws Exception {
-        Exchange response = template.requestBody("http://localhost:8888/myapp/suffix", "Hello Camel!", Exchange.class);
+        Exchange response = template.requestBody("http://localhost:{{port}}/myapp/suffix", "Hello Camel!", Exchange.class);
         getMockEndpoint("mock:myapp").expectedHeaderReceived(Exchange.HTTP_RESPONSE_CODE, 200);
     }
 
@@ -38,7 +37,7 @@ public class UndertowPrefixMatchingTest extends CamelTestSupport {
     public void failsOnPrefixPath() throws Exception {
 
         try {
-            String response = template.requestBody("http://localhost:8888/myapp", "Hello Camel!", String.class);
+            String response = template.requestBody("http://localhost:{{port}}/myapp", "Hello Camel!", String.class);
             fail("Should fail, something is wrong");
         } catch (CamelExecutionException ex) {
             HttpOperationFailedException cause = assertIsInstanceOf(HttpOperationFailedException.class, ex.getCause());
@@ -48,7 +47,7 @@ public class UndertowPrefixMatchingTest extends CamelTestSupport {
 
     @Test
     public void passOnPrefixPath() throws Exception {
-        Exchange response = template.requestBody("http://localhost:8888/bar/somethingNotImportant", "Hello Camel!", Exchange.class);
+        Exchange response = template.requestBody("http://localhost:{{port}}/bar/somethingNotImportant", "Hello Camel!", Exchange.class);
         getMockEndpoint("mock:myapp").expectedHeaderReceived(Exchange.HTTP_RESPONSE_CODE, 200);
     }
 
@@ -57,11 +56,11 @@ public class UndertowPrefixMatchingTest extends CamelTestSupport {
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() {
-                from("undertow:http://localhost:8888/myapp/suffix?matchOnUriPrefix=false")
+                from("undertow:http://localhost:{{port}}/myapp/suffix?matchOnUriPrefix=false")
                     .transform(bodyAs(String.class).append(" Must match exact path"))
                     .to("mock:myapp");
 
-                from("undertow:http://localhost:8888/bar")
+                from("undertow:http://localhost:{{port}}/bar")
                     .transform(bodyAs(String.class).append(" Matching prefix"))
                     .to("mock:bar");
             }

http://git-wip-us.apache.org/repos/asf/camel/blob/8e07c18c/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerTest.java
index daf75ce..2fcd01c 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerTest.java
@@ -18,18 +18,17 @@ package org.apache.camel.component.undertow;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
 import org.junit.Test;
 
-public class UndertowProducerTest extends CamelTestSupport {
+public class UndertowProducerTest extends BaseUndertowTest {
 
     @Ignore
     @Test
     public void testHttpSimple() throws Exception {
         getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_METHOD, "GET");
 
-        String out = template.requestBody("undertow:http://localhost:8888/foo", null, String.class);
+        String out = template.requestBody("undertow:http://localhost:{{port}}/foo", null, String.class);
         assertEquals("Bye World", out);
 
         assertMockEndpointsSatisfied();
@@ -40,7 +39,7 @@ public class UndertowProducerTest extends CamelTestSupport {
     public void testHttpSimpleHeader() throws Exception {
         getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_METHOD, "POST");
 
-        String out = template.requestBodyAndHeader("undertow:http://localhost:8888/foo", null, Exchange.HTTP_METHOD, "POST", String.class);
+        String out = template.requestBodyAndHeader("undertow:http://localhost:{{port}}/foo", null, Exchange.HTTP_METHOD, "POST", String.class);
         assertEquals("Bye World", out);
 
         assertMockEndpointsSatisfied();
@@ -53,7 +52,7 @@ public class UndertowProducerTest extends CamelTestSupport {
         getMockEndpoint("mock:input").expectedBodiesReceived("Hello World");
         getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_METHOD, "POST");
 
-        String out = template.requestBodyAndHeader("undertow:http://localhost:8888/foo", "Hello World", Exchange.HTTP_METHOD, "POST", String.class);
+        String out = template.requestBodyAndHeader("undertow:http://localhost:{{port}}/foo", "Hello World", Exchange.HTTP_METHOD, "POST", String.class);
         assertEquals("Bye World", out);
 
         assertMockEndpointsSatisfied();
@@ -64,7 +63,7 @@ public class UndertowProducerTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("undertow:http://localhost:8888/foo")
+                from("undertow:http://localhost:{{port}}/foo")
                     .to("mock:input")
                     .transform().constant("Bye World");
             }

http://git-wip-us.apache.org/repos/asf/camel/blob/8e07c18c/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowSharedPortTest.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowSharedPortTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowSharedPortTest.java
index 24b4d7f..1ffdb9e 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowSharedPortTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowSharedPortTest.java
@@ -16,5 +16,57 @@
  */
 package org.apache.camel.component.undertow;
 
-public class UndertowSharedPortTest {
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class UndertowSharedPortTest extends BaseUndertowTest {
+    private static final Logger LOG = LoggerFactory.getLogger(UndertowSharedPortTest.class);
+
+    @Test
+    public void testFirstPath() throws Exception {
+        testPath("first");
+    }
+
+    @Test
+    public void testSecondPath() throws Exception {
+        testPath("second");
+    }
+
+    private void testPath(String pathSuffix) throws InterruptedException {
+        String response = template.requestBody("undertow://http://localhost:{{port}}/" + pathSuffix, "Hello Camel!", String.class);
+
+        assertNotNull(response);
+
+        assertEquals("Hello Camel!", response);
+
+        MockEndpoint mockEndpoint = getMockEndpoint("mock:" + pathSuffix);
+        mockEndpoint.expectedHeaderReceived(Exchange.HTTP_METHOD, "GET");
+        LOG.debug("Number of exchanges in mock:" + pathSuffix + mockEndpoint.getExchanges().size());
+
+        for (Exchange exchange : mockEndpoint.getExchanges()) {
+            assertEquals("Hello Camel! Bye Camel! " + pathSuffix, exchange.getIn().getBody(String.class));
+        }
+
+        mockEndpoint.assertIsSatisfied();
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                from("undertow:http://localhost:{{port}}/first")
+                    .transform().constant("Bye Camel! first")
+                    .to("mock:first");
+
+                from("undertow:http://localhost:{{port}}/second")
+                    .transform().constant("Bye Camel! second")
+                    .to("mock:second");
+            }
+        };
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/8e07c18c/components/camel-undertow/src/test/resources/SpringTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/test/resources/SpringTest.xml b/components/camel-undertow/src/test/resources/SpringTest.xml
index fa7459a..e6baed9 100644
--- a/components/camel-undertow/src/test/resources/SpringTest.xml
+++ b/components/camel-undertow/src/test/resources/SpringTest.xml
@@ -32,10 +32,25 @@
         </camel:trustManagers>
     </camel:sslContextParameters>
 
+    <bean id="dynaPort" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
+        <property name="targetClass">
+            <value>org.apache.camel.test.AvailablePortFinder</value>
+        </property>
+        <property name="targetMethod">
+            <value>getNextAvailable</value>
+        </property>
+        <property name="arguments">
+            <list>
+                <value>8800</value>
+            </list>
+        </property>
+    </bean>
+
     <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
+        <endpoint id="input" uri="undertow:https://localhost:#{dynaPort}/spring?sslContextParametersRef=sslContextParameters"/>
 
         <route>
-            <from uri="undertow:https://localhost:9000/spring?sslContextParametersRef=sslContextParameters"/>
+            <from ref="input"/>
             <to uri="mock:input"/>
             <transform>
                 <simple>Bye World</simple>