gpt4 book ai didi

spring-boot - 在 jenkins 上运行 Wiremock 时如何修复 "NoHttpResponseException"?

转载 作者:行者123 更新时间:2023-12-03 14:57:49 27 4
gpt4 key购买 nike

我在集成测试中启动了一个wiremock 服务器。

我本地的 IT 通过但在 中的某些情况下失败了 Jenkins 服务器 ,错误是

localhost:8089 failed to respond; nested exception is org.apache.http.NoHttpResponseException: localhost:8089 failed to respond

我尝试添加 sleep(3000)在我的测试中,这可以解决问题,但我不知道问题的根本原因,因此解决方法不是一个好主意

我也尝试使用 @AutoConfigureWireMock(port=8089)替换 WireMockServer启动wiremock服务器,这可以解决问题,但我不知道如何使用注释 @AutoConfigureWireMock(port=8089)对wiremock服务器进行一些配置.

这是我启动线模拟服务器的代码,有什么建议可以修复“NoHttpResponseException”?
@ContextConfiguration(
initializers = ConfigFileApplicationContextInitializer.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
class BaseSpec extends Specification {
@Shared
WireMockServer wireMockServer

def setupSpec() {

wireMockServer = new WireMockServer(options().port(PORT).jettyHeaderBufferSize(12345)
.notifier(new ConsoleNotifier(new Boolean(System.getenv(“IT_WIREMOCK_LOG”) ?: ‘false’)))
.extensions(new ResponseTemplateTransformer(true)))

wireMockServer.start()

}

最佳答案

Apache HttpClient 遭受 NoHttpResponseException时。这是一个非常古老的问题。

无论如何,我猜在您的情况下,问题可能是由于在测试之间重新启动 WireMock 服务器造成的,同时,Apache HttpClient 会汇集 HTTP 连接并尝试在测试之间重用它们。如果是这种情况,有两种解决方案:

  • 在测试中禁用池化 HTTP 连接。这是有道理的,因为在测试执行期间可以重新启动 WireMock 服务器被认为是正常的。或者,制作您的 WireMock stub 以始终发送 "Connection": "close"在标题之间。结果将是相同的。
  • 从 Apache HttpClient 切换到 Square OkHttp。 OkHttp 尽管默认情况下它会汇集 http 连接,但始终能够从过时的连接等情况中优雅地恢复。不幸的是,Apache 的库并不是那么聪明。
  • 关于spring-boot - 在 jenkins 上运行 Wiremock 时如何修复 "NoHttpResponseException"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55624675/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com