From 032bca7eae604d67a2f0ea4d9a3b3d370bf93fb2 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 5 Sep 2023 18:52:28 +0200 Subject: [PATCH 1/2] Polishing the pom.xml --- pom.xml | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/pom.xml b/pom.xml index 0c77fd90ce..deacc537c9 100644 --- a/pom.xml +++ b/pom.xml @@ -547,6 +547,7 @@ org.codehaus.mojo flatten-maven-plugin + 1.5.0 org.apache.maven.plugins @@ -614,15 +615,6 @@ - - - maven-restlet - Maven Restlet - https://maven.restlet.org - - false - - sonatype-snapshots @@ -631,16 +623,6 @@ true - - - netflix-candidates Netflix Candidates @@ -674,14 +656,6 @@ false - - spring-releases - Spring Releases - https://repo.spring.io/release - - false - - From 44c634d0e9e82515d2fba66343530eb7d2ba8223 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 5 Sep 2023 18:55:49 +0200 Subject: [PATCH 2/2] Fixed logging issues in WireMock - created our own version of Slf4jNotifier that uses our Slf4j setup - fixes for sc-wiremock and sc-stub-runner modules fixes gh-1916 --- .../wiremock/WireMockHttpServerStub.java | 33 ++++++++++++++++++- .../wiremock/WireMockConfiguration.java | 33 ++++++++++++++++++- ...AutoConfigureWireMockApplicationTests.java | 7 ++++ 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java index 6ef55142eb..8ca2223eb1 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java @@ -32,7 +32,7 @@ import java.util.concurrent.ConcurrentHashMap; import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.client.WireMock; import com.github.tomakehurst.wiremock.common.JsonException; -import com.github.tomakehurst.wiremock.common.Slf4jNotifier; +import com.github.tomakehurst.wiremock.common.Notifier; import com.github.tomakehurst.wiremock.core.WireMockConfiguration; import com.github.tomakehurst.wiremock.extension.Extension; import com.github.tomakehurst.wiremock.security.ClientAuthenticator; @@ -40,6 +40,8 @@ import com.github.tomakehurst.wiremock.security.NoClientAuthenticator; import com.github.tomakehurst.wiremock.stubbing.StubMapping; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import wiremock.com.github.jknack.handlebars.Helper; import org.springframework.cloud.contract.stubrunner.HttpServerStub; @@ -274,6 +276,35 @@ public class WireMockHttpServerStub implements HttpServerStub { WireMock.get(WireMock.urlEqualTo(url)).willReturn(WireMock.aResponse().withBody(body).withStatus(200))); } + static class Slf4jNotifier implements Notifier { + + private static final Logger log = LoggerFactory.getLogger("WireMock"); + + private final boolean verbose; + + Slf4jNotifier(boolean verbose) { + this.verbose = verbose; + } + + @Override + public void info(String message) { + if (verbose) { + log.info(message); + } + } + + @Override + public void error(String message) { + log.error(message); + } + + @Override + public void error(String message, Throwable t) { + log.error(message, t); + } + + } + } class PortAndMappings { diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java index 06ee42c2a8..e2549c30aa 100644 --- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java +++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java @@ -24,13 +24,15 @@ import java.util.List; import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.client.WireMock; -import com.github.tomakehurst.wiremock.common.Slf4jNotifier; +import com.github.tomakehurst.wiremock.common.Notifier; import com.github.tomakehurst.wiremock.core.Options; import com.github.tomakehurst.wiremock.extension.responsetemplating.ResponseTemplateTransformer; import com.github.tomakehurst.wiremock.stubbing.StubMapping; import jakarta.annotation.PostConstruct; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; @@ -321,6 +323,35 @@ public class WireMockConfiguration implements SmartLifecycle { callback.run(); } + static class Slf4jNotifier implements Notifier { + + private static final Logger log = LoggerFactory.getLogger("WireMock"); + + private final boolean verbose; + + Slf4jNotifier(boolean verbose) { + this.verbose = verbose; + } + + @Override + public void info(String message) { + if (verbose) { + log.info(message); + } + } + + @Override + public void error(String message) { + log.error(message); + } + + @Override + public void error(String message, Throwable t) { + log.error(message, t); + } + + } + } @ConfigurationProperties("wiremock") diff --git a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockApplicationTests.java b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockApplicationTests.java index 8aa3e0f374..d1282d6fdf 100644 --- a/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockApplicationTests.java +++ b/spring-cloud-contract-wiremock/src/test/java/org/springframework/cloud/contract/wiremock/AutoConfigureWireMockApplicationTests.java @@ -16,12 +16,14 @@ package org.springframework.cloud.contract.wiremock; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.boot.test.system.OutputCaptureRule; import org.springframework.test.context.junit4.SpringRunner; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; @@ -36,6 +38,9 @@ import static org.assertj.core.api.Assertions.assertThat; @AutoConfigureWireMock(port = 26384) public class AutoConfigureWireMockApplicationTests { + @Rule + public OutputCaptureRule output = new OutputCaptureRule(); + @Autowired private Service service; @@ -47,6 +52,8 @@ public class AutoConfigureWireMockApplicationTests { stubFor(get(urlEqualTo("/test")) .willReturn(aResponse().withHeader("Content-Type", "text/plain").withBody("Hello World!"))); assertThat(this.service.go()).isEqualTo("Hello World!"); + assertThat(this.output.getOut()).as("Must contain debug logging for WireMock") + .contains("Matched response definition:"); } @Test