You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by al...@apache.org on 2021/02/08 17:54:51 UTC

[camel] branch master updated: CAMEL-16168: Replaced the JettyTestServer with wiremock

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

aldettinger pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 6ba9a2b  CAMEL-16168: Replaced the JettyTestServer with wiremock
6ba9a2b is described below

commit 6ba9a2be1882a88076cb1325240f52df5c3d3e73
Author: aldettinger <al...@gmail.com>
AuthorDate: Mon Feb 8 18:49:54 2021 +0100

    CAMEL-16168: Replaced the JettyTestServer with wiremock
---
 components/camel-oaipmh/pom.xml                    |   6 +-
 .../oaipmh/OAIPMHComponentConsumerHTTPSTest.java   |  30 ++--
 .../OAIPMHComponentConsumerParticularCaseTest.java |  29 ++--
 .../camel/oaipmh/OAIPMHComponentConsumerTest.java  |  29 ++--
 .../OAIPMHComponentProducerGetRecordTest.java      |  31 ++--
 .../OAIPMHComponentProducerOnlyFirstLoopTest.java  |  31 ++--
 .../OAIPMHComponentProducerOnlyFirstTest.java      |  31 ++--
 .../camel/oaipmh/OAIPMHComponentProducerTest.java  |  31 ++--
 .../camel/oaipmh/OAIPMHComponentSpringTest.java    |  32 ++--
 .../apache/camel/oaipmh/utils/JettyTestServer.java | 171 ---------------------
 .../camel/oaipmh/utils/MockOaipmhServer.java       | 132 ++++++++++++++++
 11 files changed, 252 insertions(+), 301 deletions(-)

diff --git a/components/camel-oaipmh/pom.xml b/components/camel-oaipmh/pom.xml
index 1a4a6b6..194af61 100644
--- a/components/camel-oaipmh/pom.xml
+++ b/components/camel-oaipmh/pom.xml
@@ -60,9 +60,9 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>jetty-servlet</artifactId>
-            <version>${jetty-version}</version>
+            <groupId>com.github.tomakehurst</groupId>
+            <artifactId>wiremock-jre8</artifactId>
+            <version>${wiremock-version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerHTTPSTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerHTTPSTest.java
index fa2007d..c5dc7a5 100644
--- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerHTTPSTest.java
+++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerHTTPSTest.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.oaipmh;
 
-import java.io.IOException;
-
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.oaipmh.utils.JettyTestServer;
+import org.apache.camel.oaipmh.utils.MockOaipmhServer;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
@@ -28,24 +26,24 @@ import org.junit.jupiter.api.Test;
 
 public class OAIPMHComponentConsumerHTTPSTest extends CamelTestSupport {
 
-    @Test
-    public void testOAIPMH() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(1);
-        mock.assertIsSatisfied(5 * 1000);
-    }
+    private static MockOaipmhServer mockOaipmhServer;
 
     @BeforeAll
-    public static void startServer() throws IOException {
-        //Mocked data  taken from https://repositorio.cepal.org/oai/request - July 21, 2020
-        JettyTestServer.getInstance().context = "test4";
-        JettyTestServer.getInstance().https = true;
-        JettyTestServer.getInstance().startServer();
+    public static void startServer() {
+        mockOaipmhServer = MockOaipmhServer.create();
+        mockOaipmhServer.start();
     }
 
     @AfterAll
     public static void stopServer() {
-        JettyTestServer.getInstance().stopServer();
+        mockOaipmhServer.stop();
+    }
+
+    @Test
+    public void testOAIPMH() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(1);
+        mock.assertIsSatisfied(5 * 1000);
     }
 
     @Override
@@ -53,7 +51,7 @@ public class OAIPMHComponentConsumerHTTPSTest extends CamelTestSupport {
         return new RouteBuilder() {
             public void configure() {
 
-                from("oaipmh://localhost:" + JettyTestServer.getInstance().portssl + "/oai/request?"
+                from("oaipmh://localhost:" + mockOaipmhServer.getHttpsPort() + "/oai/request?"
                      + "ssl=true&"
                      + "ignoreSSLWarnings=true&"
                      + "delay=1000&"
diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerParticularCaseTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerParticularCaseTest.java
index 887f15e..3f9c9e1e 100644
--- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerParticularCaseTest.java
+++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerParticularCaseTest.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.oaipmh;
 
-import java.io.IOException;
-
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.oaipmh.utils.JettyTestServer;
+import org.apache.camel.oaipmh.utils.MockOaipmhServer;
 import org.apache.camel.support.builder.Namespaces;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.AfterAll;
@@ -29,30 +27,31 @@ import org.junit.jupiter.api.Test;
 
 public class OAIPMHComponentConsumerParticularCaseTest extends CamelTestSupport {
 
-    @Test
-    public void testOAIPMH() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(45);
-        mock.assertIsSatisfied(5 * 1000);
-    }
+    private static MockOaipmhServer mockOaipmhServer;
 
     @BeforeAll
-    public static void startServer() throws IOException {
-        //Mocked data  taken from https://revista.uisrael.edu.ec/index.php?page=oai - July 21, 2020
-        JettyTestServer.getInstance().context = "test3";
-        JettyTestServer.getInstance().startServer();
+    public static void startServer() {
+        mockOaipmhServer = MockOaipmhServer.create();
+        mockOaipmhServer.start();
     }
 
     @AfterAll
     public static void stopServer() {
-        JettyTestServer.getInstance().stopServer();
+        mockOaipmhServer.stop();
+    }
+
+    @Test
+    public void testOAIPMH() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(45);
+        mock.assertIsSatisfied(5 * 1000);
     }
 
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() {
-                from("oaipmh:localhost:" + JettyTestServer.getInstance().port + "/index.php?page=oai&"
+                from("oaipmh:localhost:" + mockOaipmhServer.getHttpPort() + "/index.php?page=oai&"
                      + "delay=1000&"
                      + "from=2020-02-01T00:00:00Z&"
                      + "initialDelay=1000")
diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerTest.java
index c0234f9..6b59a37 100644
--- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerTest.java
+++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerTest.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.oaipmh;
 
-import java.io.IOException;
-
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.oaipmh.utils.JettyTestServer;
+import org.apache.camel.oaipmh.utils.MockOaipmhServer;
 import org.apache.camel.support.builder.Namespaces;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.AfterAll;
@@ -29,23 +27,24 @@ import org.junit.jupiter.api.Test;
 
 public class OAIPMHComponentConsumerTest extends CamelTestSupport {
 
-    @Test
-    public void testOAIPMH() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(532);
-        mock.assertIsSatisfied(10 * 1000);
-    }
+    private static MockOaipmhServer mockOaipmhServer;
 
     @BeforeAll
-    public static void startServer() throws IOException {
-        //Mocked data  taken from https://dspace.ucuenca.edu.ec/oai/request - July 21, 2020
-        JettyTestServer.getInstance().context = "test1";
-        JettyTestServer.getInstance().startServer();
+    public static void startServer() {
+        mockOaipmhServer = MockOaipmhServer.create();
+        mockOaipmhServer.start();
     }
 
     @AfterAll
     public static void stopServer() {
-        JettyTestServer.getInstance().stopServer();
+        mockOaipmhServer.stop();
+    }
+
+    @Test
+    public void testOAIPMH() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(532);
+        mock.assertIsSatisfied(10 * 1000);
     }
 
     @Override
@@ -53,7 +52,7 @@ public class OAIPMHComponentConsumerTest extends CamelTestSupport {
         return new RouteBuilder() {
             public void configure() {
 
-                from("oaipmh://localhost:" + JettyTestServer.getInstance().port + "/oai/request?"
+                from("oaipmh://localhost:" + mockOaipmhServer.getHttpPort() + "/oai/request?"
                      + "delay=1000&"
                      + "from=2020-06-01T00:00:00Z&"
                      + "initialDelay=1000")
diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerGetRecordTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerGetRecordTest.java
index df04861..3ec2a01 100644
--- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerGetRecordTest.java
+++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerGetRecordTest.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.oaipmh;
 
-import java.io.IOException;
-
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.oaipmh.utils.JettyTestServer;
+import org.apache.camel.oaipmh.utils.MockOaipmhServer;
 import org.apache.camel.support.builder.Namespaces;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.AfterAll;
@@ -29,24 +27,25 @@ import org.junit.jupiter.api.Test;
 
 public class OAIPMHComponentProducerGetRecordTest extends CamelTestSupport {
 
-    @Test
-    public void testOAIPMH() throws Exception {
-        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
-        template.sendBody("direct:start", "foo");
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.assertIsSatisfied(3 * 1000);
-    }
+    private static MockOaipmhServer mockOaipmhServer;
 
     @BeforeAll
-    public static void startServer() throws IOException {
-        //Mocked data  taken from https://dspace.ucuenca.edu.ec/oai/request - July 21, 2020
-        JettyTestServer.getInstance().context = "test2";
-        JettyTestServer.getInstance().startServer();
+    public static void startServer() {
+        mockOaipmhServer = MockOaipmhServer.create();
+        mockOaipmhServer.start();
     }
 
     @AfterAll
     public static void stopServer() {
-        JettyTestServer.getInstance().stopServer();
+        mockOaipmhServer.stop();
+    }
+
+    @Test
+    public void testOAIPMH() throws Exception {
+        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
+        template.sendBody("direct:start", "foo");
+        resultEndpoint.expectedMessageCount(1);
+        resultEndpoint.assertIsSatisfied(3 * 1000);
     }
 
     @Override
@@ -57,7 +56,7 @@ public class OAIPMHComponentProducerGetRecordTest extends CamelTestSupport {
                 from("direct:start")
                         .setHeader("CamelOaimphVerb", constant("GetRecord"))
                         .setHeader("CamelOaimphIdentifier", constant("oai:dspace.ucuenca.edu.ec:123456789/32374"))
-                        .to("oaipmh://localhost:" + JettyTestServer.getInstance().port + "/oai/request")
+                        .to("oaipmh://localhost:" + mockOaipmhServer.getHttpPort() + "/oai/request")
                         .split(body())
                         .split(xpath(
                                 "/default:OAI-PMH/default:GetRecord/default:record/default:metadata/oai_dc:dc/dc:title/text()",
diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstLoopTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstLoopTest.java
index be6ea0f..7547e2e 100644
--- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstLoopTest.java
+++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstLoopTest.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.oaipmh;
 
-import java.io.IOException;
-
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.oaipmh.utils.JettyTestServer;
+import org.apache.camel.oaipmh.utils.MockOaipmhServer;
 import org.apache.camel.support.builder.Namespaces;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.AfterAll;
@@ -29,24 +27,25 @@ import org.junit.jupiter.api.Test;
 
 public class OAIPMHComponentProducerOnlyFirstLoopTest extends CamelTestSupport {
 
-    @Test
-    public void testOAIPMH() throws Exception {
-        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
-        template.sendBody("direct:start", "foo");
-        resultEndpoint.expectedMessageCount(532);
-        resultEndpoint.assertIsSatisfied(3 * 1000);
-    }
+    private static MockOaipmhServer mockOaipmhServer;
 
     @BeforeAll
-    public static void startServer() throws IOException {
-        //Mocked data  taken from https://dspace.ucuenca.edu.ec/oai/request - July 21, 2020
-        JettyTestServer.getInstance().context = "test1";
-        JettyTestServer.getInstance().startServer();
+    public static void startServer() {
+        mockOaipmhServer = MockOaipmhServer.create();
+        mockOaipmhServer.start();
     }
 
     @AfterAll
     public static void stopServer() {
-        JettyTestServer.getInstance().stopServer();
+        mockOaipmhServer.stop();
+    }
+
+    @Test
+    public void testOAIPMH() throws Exception {
+        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
+        template.sendBody("direct:start", "foo");
+        resultEndpoint.expectedMessageCount(532);
+        resultEndpoint.assertIsSatisfied(3 * 1000);
     }
 
     @Override
@@ -58,7 +57,7 @@ public class OAIPMHComponentProducerOnlyFirstLoopTest extends CamelTestSupport {
                         .setHeader("CamelOaimphFrom", constant("2020-06-01T00:00:00Z"))
                         .setHeader("CamelOaimphOnlyFirst", constant("true"))
                         .loopDoWhile(simple("${in.header.CamelOaimphResumptionToken} || ${body} == 'foo'"))
-                        .to("oaipmh://localhost:" + JettyTestServer.getInstance().port + "/oai/request")
+                        .to("oaipmh://localhost:" + mockOaipmhServer.getHttpPort() + "/oai/request")
                         .split(body())
                         .split(xpath(
                                 "/default:OAI-PMH/default:ListRecords/default:record/default:metadata/oai_dc:dc/dc:title/text()",
diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstTest.java
index 7a204fc..2201b80 100644
--- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstTest.java
+++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstTest.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.oaipmh;
 
-import java.io.IOException;
-
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.oaipmh.utils.JettyTestServer;
+import org.apache.camel.oaipmh.utils.MockOaipmhServer;
 import org.apache.camel.support.builder.Namespaces;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.AfterAll;
@@ -29,24 +27,25 @@ import org.junit.jupiter.api.Test;
 
 public class OAIPMHComponentProducerOnlyFirstTest extends CamelTestSupport {
 
-    @Test
-    public void testOAIPMH() throws Exception {
-        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
-        template.sendBody("direct:start", "foo");
-        resultEndpoint.expectedMessageCount(104);
-        resultEndpoint.assertIsSatisfied(3 * 1000);
-    }
+    private static MockOaipmhServer mockOaipmhServer;
 
     @BeforeAll
-    public static void startServer() throws IOException {
-        //Mocked data  taken from https://dspace.ucuenca.edu.ec/oai/request - July 21, 2020
-        JettyTestServer.getInstance().context = "test1";
-        JettyTestServer.getInstance().startServer();
+    public static void startServer() {
+        mockOaipmhServer = MockOaipmhServer.create();
+        mockOaipmhServer.start();
     }
 
     @AfterAll
     public static void stopServer() {
-        JettyTestServer.getInstance().stopServer();
+        mockOaipmhServer.stop();
+    }
+
+    @Test
+    public void testOAIPMH() throws Exception {
+        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
+        template.sendBody("direct:start", "foo");
+        resultEndpoint.expectedMessageCount(104);
+        resultEndpoint.assertIsSatisfied(3 * 1000);
     }
 
     @Override
@@ -57,7 +56,7 @@ public class OAIPMHComponentProducerOnlyFirstTest extends CamelTestSupport {
                 from("direct:start")
                         .setHeader("CamelOaimphFrom", constant("2020-06-01T00:00:00Z"))
                         .setHeader("CamelOaimphOnlyFirst", constant("true"))
-                        .to("oaipmh://localhost:" + JettyTestServer.getInstance().port + "/oai/request")
+                        .to("oaipmh://localhost:" + mockOaipmhServer.getHttpPort() + "/oai/request")
                         .split(body())
                         .split(xpath(
                                 "/default:OAI-PMH/default:ListRecords/default:record/default:metadata/oai_dc:dc/dc:title/text()",
diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerTest.java
index 4bd97be..33c31fd 100644
--- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerTest.java
+++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerTest.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.oaipmh;
 
-import java.io.IOException;
-
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.oaipmh.utils.JettyTestServer;
+import org.apache.camel.oaipmh.utils.MockOaipmhServer;
 import org.apache.camel.support.builder.Namespaces;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.AfterAll;
@@ -29,24 +27,25 @@ import org.junit.jupiter.api.Test;
 
 public class OAIPMHComponentProducerTest extends CamelTestSupport {
 
-    @Test
-    public void testOAIPMH() throws Exception {
-        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
-        template.sendBody("direct:start", "foo");
-        resultEndpoint.expectedMessageCount(532);
-        resultEndpoint.assertIsSatisfied(5 * 1000);
-    }
+    private static MockOaipmhServer mockOaipmhServer;
 
     @BeforeAll
-    public static void startServer() throws IOException {
-        //Mocked data  taken from https://dspace.ucuenca.edu.ec/oai/request - July 21, 2020
-        JettyTestServer.getInstance().context = "test1";
-        JettyTestServer.getInstance().startServer();
+    public static void startServer() {
+        mockOaipmhServer = MockOaipmhServer.create();
+        mockOaipmhServer.start();
     }
 
     @AfterAll
     public static void stopServer() {
-        JettyTestServer.getInstance().stopServer();
+        mockOaipmhServer.stop();
+    }
+
+    @Test
+    public void testOAIPMH() throws Exception {
+        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
+        template.sendBody("direct:start", "foo");
+        resultEndpoint.expectedMessageCount(532);
+        resultEndpoint.assertIsSatisfied(5 * 1000);
     }
 
     @Override
@@ -56,7 +55,7 @@ public class OAIPMHComponentProducerTest extends CamelTestSupport {
             public void configure() {
                 from("direct:start")
                         .setHeader("CamelOaimphFrom", constant("2020-06-01T00:00:00Z"))
-                        .to("oaipmh://localhost:" + JettyTestServer.getInstance().port + "/oai/request")
+                        .to("oaipmh://localhost:" + mockOaipmhServer.getHttpPort() + "/oai/request")
                         .split(body())
                         .split(xpath(
                                 "/default:OAI-PMH/default:ListRecords/default:record/default:metadata/oai_dc:dc/dc:title/text()",
diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentSpringTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentSpringTest.java
index 34a4ea3..2aa7e43 100644
--- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentSpringTest.java
+++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentSpringTest.java
@@ -16,10 +16,8 @@
  */
 package org.apache.camel.oaipmh;
 
-import java.io.IOException;
-
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.oaipmh.utils.JettyTestServer;
+import org.apache.camel.oaipmh.utils.MockOaipmhServer;
 import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
@@ -29,26 +27,26 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 public class OAIPMHComponentSpringTest extends CamelSpringTestSupport {
 
-    @Test
-    public void test() throws Exception {
-        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
-
-        template.sendBodyAndHeader("direct:start", "", "port", JettyTestServer.getInstance().port);
-        resultEndpoint.expectedMessageCount(1);
-        resultEndpoint.assertIsSatisfied(3 * 1);
-    }
+    private static MockOaipmhServer mockOaipmhServer;
 
     @BeforeAll
-    public static void startServer() throws IOException {
-        //Mocked data  taken from https://dspace.ucuenca.edu.ec/oai/request - July 21, 2020
-        JettyTestServer.getInstance().context = "test2";
-        JettyTestServer.getInstance().startServer();
-
+    public static void startServer() {
+        mockOaipmhServer = MockOaipmhServer.create();
+        mockOaipmhServer.start();
     }
 
     @AfterAll
     public static void stopServer() {
-        JettyTestServer.getInstance().stopServer();
+        mockOaipmhServer.stop();
+    }
+
+    @Test
+    public void test() throws Exception {
+        MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
+
+        template.sendBodyAndHeader("direct:start", "", "port", mockOaipmhServer.getHttpPort());
+        resultEndpoint.expectedMessageCount(1);
+        resultEndpoint.assertIsSatisfied(3 * 1);
     }
 
     @Override
diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/JettyTestServer.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/JettyTestServer.java
deleted file mode 100644
index c6b0152..0000000
--- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/JettyTestServer.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * 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.oaipmh.utils;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.Enumeration;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.test.junit4.TestSupport;
-import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.HttpConfiguration;
-import org.eclipse.jetty.server.HttpConnectionFactory;
-import org.eclipse.jetty.server.SecureRequestCustomizer;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.server.SslConnectionFactory;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.util.ssl.SslContextFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.Assert.fail;
-
-public final class JettyTestServer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(JettyTestServer.class);
-    private static final int PORT = AvailablePortFinder.getNextAvailable();
-    private static final int PORT_SSL = AvailablePortFinder.getNextAvailable();
-    private static final String PASSWORD = "changeit";
-    private static JettyTestServer instance;
-
-    public int port;
-    public int portssl;
-    public String context;
-    public boolean https;
-
-    private Server server;
-
-    private JettyTestServer() {
-    }
-
-    private void unzip() throws FileNotFoundException, IOException {
-        String fileZip = "src/test/resources/data.zip";
-        File destDir = new File("src/test/resources");
-        try (ZipFile zipFile = new ZipFile(fileZip)) {
-            Enumeration<? extends ZipEntry> entries = zipFile.entries();
-            while (entries.hasMoreElements()) {
-                ZipEntry entry = entries.nextElement();
-                File entryDestination = new File(destDir, entry.getName());
-                if (entry.isDirectory()) {
-                    entryDestination.mkdirs();
-                } else {
-                    entryDestination.getParentFile().mkdirs();
-                    try (InputStream in = zipFile.getInputStream(entry);
-                         OutputStream out = new FileOutputStream(entryDestination)) {
-                        IOUtils.copy(in, out);
-                    }
-                }
-            }
-        }
-    }
-
-    public void startServer() throws IOException {
-        unzip();
-        server = new Server(PORT);
-        port = PORT;
-
-        if (https) {
-            portssl = PORT_SSL;
-            ServerConnector connector = new ServerConnector(server);
-            connector.setPort(PORT);
-            HttpConfiguration https = new HttpConfiguration();
-            https.addCustomizer(new SecureRequestCustomizer());
-            SslContextFactory sslContextFactory = new SslContextFactory();
-            sslContextFactory.setKeyStorePath(JettyTestServer.class.getResource(
-                    "/jettyKS/localhost.p12").toExternalForm());
-            sslContextFactory.setKeyStorePassword(PASSWORD);
-            sslContextFactory.setKeyManagerPassword(PASSWORD);
-            ServerConnector sslConnector = new ServerConnector(
-                    server,
-                    new SslConnectionFactory(sslContextFactory, "http/1.1"),
-                    new HttpConnectionFactory(https));
-
-            sslConnector.setPort(PORT_SSL);
-            server.setConnectors(new Connector[] { connector, sslConnector });
-        }
-
-        ServletContextHandler servletContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
-        servletContext.setContextPath("/");
-        server.setHandler(servletContext);
-        servletContext.addServlet(new ServletHolder(new MyHttpServlet(this.context)), "/*");
-        try {
-            server.start();
-        } catch (Exception ex) {
-            LOG.error("Could not start Server!", ex);
-            fail(ex.getLocalizedMessage());
-        }
-    }
-
-    public void stopServer() {
-        if (server != null) {
-            try {
-                server.stop();
-            } catch (Exception ex) {
-                LOG.warn("Server doesn't stop normal...", ex);
-            } finally {
-                server = null;
-                port = 0;
-            }
-        }
-        TestSupport.deleteDirectory("src/test/resources/data");
-    }
-
-    public static JettyTestServer getInstance() {
-        if (instance == null) {
-            instance = new JettyTestServer();
-        }
-        return instance;
-    }
-
-    private class MyHttpServlet extends HttpServlet {
-
-        private static final long serialVersionUID = 5594945031962091041L;
-
-        private String context;
-
-        public MyHttpServlet(String context) {
-            this.context = context;
-        }
-
-        @Override
-        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-            String qs = req.getRequestURI() + "?" + req.getQueryString();
-            String sha256Hex = DigestUtils.sha256Hex(qs);
-            resp.getWriter().write(FileUtils.readFileToString(
-                    new File("src/test/resources/data/" + this.context + "/" + sha256Hex + ".xml"), StandardCharsets.UTF_8));
-        }
-    }
-
-}
diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/MockOaipmhServer.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/MockOaipmhServer.java
new file mode 100644
index 0000000..de7349b
--- /dev/null
+++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/MockOaipmhServer.java
@@ -0,0 +1,132 @@
+/*
+ * 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.oaipmh.utils;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+import com.github.tomakehurst.wiremock.WireMockServer;
+import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
+import com.github.tomakehurst.wiremock.common.FileSource;
+import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
+import com.github.tomakehurst.wiremock.extension.Parameters;
+import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer;
+import com.github.tomakehurst.wiremock.http.Request;
+import com.github.tomakehurst.wiremock.http.ResponseDefinition;
+import org.apache.camel.test.AvailablePortFinder;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
+
+public final class MockOaipmhServer {
+
+    private static Map<String, String> responseCache;
+    private static final String PASSWORD = "changeit";
+
+    private int httpPort;
+    private int httpsPort;
+    private WireMockServer server;
+
+    private MockOaipmhServer(int httpPort, int httpsPort) {
+        this.httpPort = httpPort;
+        this.httpsPort = httpsPort;
+    }
+
+    public static MockOaipmhServer create() {
+        int httpPort = AvailablePortFinder.getNextAvailable();
+        int httpsPort = AvailablePortFinder.getNextAvailable();
+        MockOaipmhServer server = new MockOaipmhServer(httpPort, httpsPort);
+        return server;
+    }
+
+    /**
+     * Gets the response cache from the mocked data ZIP file.
+     */
+    private static synchronized Map<String, String> getResponseCache() {
+        try {
+            if (responseCache == null) {
+                HashMap<String, String> cache = new HashMap<String, String>();
+
+                ZipInputStream zis = new ZipInputStream(MockOaipmhServer.class.getResourceAsStream("/data.zip"));
+
+                ZipEntry entry = zis.getNextEntry();
+                while (entry != null) {
+                    if (!entry.isDirectory()) {
+                        cache.put(StringUtils.substringAfterLast(entry.getName(), "/"),
+                                IOUtils.toString(zis, StandardCharsets.UTF_8));
+                    }
+                    entry = zis.getNextEntry();
+                }
+                responseCache = Collections.unmodifiableMap(cache);
+            }
+        } catch (IOException ioex) {
+            throw new RuntimeException("An issue occured while initializing the OAI-PMH mock server reponse cache", ioex);
+        }
+        return responseCache;
+    }
+
+    public void start() {
+        OaipmhMockTransformer transformer = new OaipmhMockTransformer();
+        WireMockConfiguration config = wireMockConfig().extensions(transformer);
+
+        config.httpsPort(httpsPort);
+        String keyStorePath = MockOaipmhServer.class.getResource("/jettyKS/localhost.p12").toExternalForm();
+        config.keystorePath(keyStorePath);
+        config.keystorePassword(PASSWORD);
+        config.keyManagerPassword(PASSWORD);
+
+        config.port(httpPort);
+
+        server = new WireMockServer(config);
+        server.start();
+    }
+
+    public void stop() {
+        server.stop();
+    }
+
+    public int getHttpPort() {
+        return this.httpPort;
+    }
+
+    public int getHttpsPort() {
+        return this.httpsPort;
+    }
+
+    public static final class OaipmhMockTransformer extends ResponseDefinitionTransformer {
+
+        @Override
+        public ResponseDefinition transform(
+                Request request, ResponseDefinition responseDefinition, FileSource files, Parameters parameters) {
+            String sha256Hex = DigestUtils.sha256Hex(request.getUrl());
+            return new ResponseDefinitionBuilder().withStatus(200).withBody(getResponseCache().get(sha256Hex + ".xml")).build();
+        }
+
+        @Override
+        public String getName() {
+            return "oaipmh-mock-transformer";
+        }
+    }
+
+}