From 17bcf0210a2729a69162e8b64c5fa4c48927b1e3 Mon Sep 17 00:00:00 2001 From: James D Bloom <733179+jamesdbloom@users.noreply.github.com> Date: Sun, 7 Jun 2026 22:40:30 +0100 Subject: [PATCH 1/3] Deprecate bundled MockServer module in favour of the MockServer-maintained module The bundled module has no configuration helpers and defaults to a retired image. MockServer now publishes and maintains its own Testcontainers module, org.mock-server:mockserver-testcontainers (org.mockserver.testcontainers.MockServerContainer), which derives the image tag from the client library so container and client stay in version lockstep and adds DNS, transparent-proxy, HTTP/3, initialization-JSON, log-level and arbitrary-property helpers plus direct MockServerClient wiring. This deprecates the bundled classes with a Javadoc pointer to the maintained module, and adds a note to the module docs recommending it for new projects. Signed-off-by: James D Bloom <733179+jamesdbloom@users.noreply.github.com> --- docs/modules/mockserver.md | 9 +++++++++ .../testcontainers/containers/MockServerContainer.java | 8 +++++++- .../testcontainers/mockserver/MockServerContainer.java | 10 ++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/docs/modules/mockserver.md b/docs/modules/mockserver.md index e6a0ee91ece..8375f005c5f 100644 --- a/docs/modules/mockserver.md +++ b/docs/modules/mockserver.md @@ -1,5 +1,14 @@ # Mockserver Module +!!! note "Deprecated — use the MockServer-maintained module for new projects" + This bundled module is deprecated. For new projects, prefer the MockServer-maintained + module [`org.mock-server:mockserver-testcontainers`](https://www.mock-server.com/mock_server/mockserver_testcontainers.html) + (class `org.mockserver.testcontainers.MockServerContainer`). It tracks current MockServer + releases, derives its image tag from the client library so the container and client stay in + lockstep, and adds configuration helpers (DNS, transparent proxy, HTTP/3, initialization JSON, + log level, arbitrary properties) plus direct `MockServerClient` wiring. This page documents the + legacy bundled module. + Mock Server can be used to mock HTTP services by matching requests against user-defined expectations. ## Usage example diff --git a/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java b/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java index 47d2399d934..63666527ce9 100644 --- a/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java +++ b/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java @@ -5,7 +5,13 @@ import org.testcontainers.utility.DockerImageName; /** - * @deprecated use {@link org.testcontainers.mockserver.MockServerContainer} instead. + * @deprecated Use the MockServer-maintained module instead: + * {@code org.mock-server:mockserver-testcontainers} + * (class {@code org.mockserver.testcontainers.MockServerContainer}). It tracks current MockServer + * releases, derives its image tag from the client library so the two stay in lockstep, and adds + * configuration helpers (DNS, transparent proxy, HTTP/3, initialization JSON, log level, arbitrary + * properties) plus direct {@code MockServerClient} wiring. See + * https://www.mock-server.com/mock_server/mockserver_testcontainers.html */ @Slf4j @Deprecated diff --git a/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java b/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java index cbfcbc9fd66..b0f7f8a23ab 100644 --- a/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java +++ b/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java @@ -5,7 +5,17 @@ import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.utility.DockerImageName; +/** + * @deprecated Use the MockServer-maintained module instead: + * {@code org.mock-server:mockserver-testcontainers} + * (class {@code org.mockserver.testcontainers.MockServerContainer}). It tracks current MockServer + * releases, derives its image tag from the client library so the two stay in lockstep, and adds + * configuration helpers (DNS, transparent proxy, HTTP/3, initialization JSON, log level, arbitrary + * properties) plus direct {@code MockServerClient} wiring. See + * https://www.mock-server.com/mock_server/mockserver_testcontainers.html + */ @Slf4j +@Deprecated public class MockServerContainer extends GenericContainer { private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("jamesdbloom/mockserver"); From 59f0ba45efb271eb1bfddef37309c76d2ba5a1ac Mon Sep 17 00:00:00 2001 From: James D Bloom <733179+jamesdbloom@users.noreply.github.com> Date: Sun, 7 Jun 2026 22:40:30 +0100 Subject: [PATCH 2/3] Refresh stale default MockServer image to mockserver/mockserver:mockserver-7.0.0 The default image was the retired jamesdbloom/mockserver:mockserver-5.5.4. Point it at the current mockserver/mockserver:mockserver-7.0.0. assertCompatibleWith already accepts both jamesdbloom/mockserver and mockserver/mockserver, so existing callers are unaffected. Signed-off-by: James D Bloom <733179+jamesdbloom@users.noreply.github.com> --- .../org/testcontainers/mockserver/MockServerContainer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java b/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java index b0f7f8a23ab..3373cb4dd1c 100644 --- a/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java +++ b/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java @@ -18,9 +18,9 @@ @Deprecated public class MockServerContainer extends GenericContainer { - private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("jamesdbloom/mockserver"); + private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("mockserver/mockserver"); - private static final String DEFAULT_TAG = "mockserver-5.5.4"; + private static final String DEFAULT_TAG = "mockserver-7.0.0"; @Deprecated public static final String VERSION = DEFAULT_TAG; From 164bfe72bcc596e8836373198a92057f6926e7c5 Mon Sep 17 00:00:00 2001 From: James D Bloom <733179+jamesdbloom@users.noreply.github.com> Date: Tue, 16 Jun 2026 17:01:06 +0100 Subject: [PATCH 3/3] Align MockServer version end-to-end and address PR review feedback Make the bundled module's image/tag consistent with the verified client version and resolve the review items raised on the deprecation PR. - Bump the test mockserver-client-java dependency 5.15.0 -> 7.1.0 so it is the single source of truth for the MockServer version; the test already derives its container image tag from this client jar, so container and client now stay in lockstep, and the active MockServerContainer default tag is aligned to mockserver-7.1.0 to match. Verified: the test sources compile against the 7.1.0 client, and the mockserver/mockserver:mockserver-7.1.0 image starts emitting "started on port: 1080" (so the existing wait strategy still matches) and serves a simple expectation. - Explain the frozen defaults: the superseded org.testcontainers.containers redirect stub intentionally keeps its legacy jamesdbloom/mockserver default for backwards compatibility, and the active default tag carries a note that it tracks the client version in build.gradle. - Annotate MockServerContainerTest with @SuppressWarnings("deprecation"), matching the convention used by other deprecated-module tests. - Turn the bare Javadoc URLs into @see anchor tags so they render as links. - Fix the broken testSimpleExpectation codeinclude by adding the missing block markers in MockServerContainerTest, so the snippet in docs/modules/mockserver.md resolves. Signed-off-by: James D Bloom <733179+jamesdbloom@users.noreply.github.com> --- modules/mockserver/build.gradle | 4 +++- .../testcontainers/containers/MockServerContainer.java | 8 ++++++-- .../testcontainers/mockserver/MockServerContainer.java | 9 ++++++--- .../mockserver/MockServerContainerTest.java | 3 +++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/modules/mockserver/build.gradle b/modules/mockserver/build.gradle index 2ff2e9f34c6..25a5ebda1db 100644 --- a/modules/mockserver/build.gradle +++ b/modules/mockserver/build.gradle @@ -3,6 +3,8 @@ description = "Testcontainers :: MockServer" dependencies { api project(':testcontainers') - testImplementation 'org.mock-server:mockserver-client-java:5.15.0' + // Single source of truth for the MockServer version: the test derives its container image + // tag from this client jar's implementation version, so bumping here updates both in lockstep. + testImplementation 'org.mock-server:mockserver-client-java:7.1.0' testImplementation 'io.rest-assured:rest-assured:5.5.7' } diff --git a/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java b/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java index 63666527ce9..77a475389fb 100644 --- a/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java +++ b/modules/mockserver/src/main/java/org/testcontainers/containers/MockServerContainer.java @@ -10,13 +10,17 @@ * (class {@code org.mockserver.testcontainers.MockServerContainer}). It tracks current MockServer * releases, derives its image tag from the client library so the two stay in lockstep, and adds * configuration helpers (DNS, transparent proxy, HTTP/3, initialization JSON, log level, arbitrary - * properties) plus direct {@code MockServerClient} wiring. See - * https://www.mock-server.com/mock_server/mockserver_testcontainers.html + * properties) plus direct {@code MockServerClient} wiring. + * + * @see MockServer Testcontainers module */ @Slf4j @Deprecated public class MockServerContainer extends GenericContainer { + // Intentionally frozen at this legacy image/tag: this superseded redirect stub keeps its original + // jamesdbloom/mockserver default for backwards compatibility. New code should use the + // MockServer-maintained module referenced in the deprecation notice above. private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("jamesdbloom/mockserver"); private static final String DEFAULT_TAG = "mockserver-5.5.4"; diff --git a/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java b/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java index 3373cb4dd1c..5394e32d7b4 100644 --- a/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java +++ b/modules/mockserver/src/main/java/org/testcontainers/mockserver/MockServerContainer.java @@ -11,8 +11,9 @@ * (class {@code org.mockserver.testcontainers.MockServerContainer}). It tracks current MockServer * releases, derives its image tag from the client library so the two stay in lockstep, and adds * configuration helpers (DNS, transparent proxy, HTTP/3, initialization JSON, log level, arbitrary - * properties) plus direct {@code MockServerClient} wiring. See - * https://www.mock-server.com/mock_server/mockserver_testcontainers.html + * properties) plus direct {@code MockServerClient} wiring. + * + * @see MockServer Testcontainers module */ @Slf4j @Deprecated @@ -20,7 +21,9 @@ public class MockServerContainer extends GenericContainer { private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("mockserver/mockserver"); - private static final String DEFAULT_TAG = "mockserver-7.0.0"; + // Keep this tag aligned with the mockserver-client-java version in build.gradle: the tests derive + // their image tag from that client jar, so the default here must track the same MockServer release. + private static final String DEFAULT_TAG = "mockserver-7.1.0"; @Deprecated public static final String VERSION = DEFAULT_TAG; diff --git a/modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java b/modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java index 53325234b8b..6eefc895a1d 100644 --- a/modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java +++ b/modules/mockserver/src/test/java/org/testcontainers/mockserver/MockServerContainerTest.java @@ -15,6 +15,7 @@ import static org.mockserver.model.HttpRequest.request; import static org.mockserver.model.HttpResponse.response; +@SuppressWarnings("deprecation") // testing the deprecated bundled module class MockServerContainerTest { public static final DockerImageName MOCKSERVER_IMAGE = DockerImageName @@ -34,7 +35,9 @@ void shouldCallActualMockserverVersion() { try (MockServerClient client = new MockServerClient(mockServer.getHost(), mockServer.getServerPort())) { assertThat(client.hasStarted()).as("Mockserver running").isTrue(); + // testSimpleExpectation { client.when(request().withPath("/hello")).respond(response().withBody(expectedBody)); + // } assertThat(given().when().get(mockServer.getEndpoint() + "/hello").then().extract().body().asString()) .as("MockServer returns correct result")